[SOLVED] Jak pobrać datę z Pola daty

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

[SOLVED] Jak pobrać datę z Pola daty

Post autor: Emart22 »

Witam ponownie i proszę o pomoc. Nakombinowałem się i nie mam pojęcia jak pobrać wybraną datę z pola daty. Wzorowałem się na poście https://forum.openoffice.org/pl/forum/v ... =27&t=1484, ale niestety nic mi nie wychodzi. Proszę o dobitne wskazówki, żeby laik skumał.
Załączniki
Test.ods
(41.64 KiB) Pobrany 341 razy
OpenOffice 4.0.1 Windows 8.1
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jak pobrać datę z Pola daty

Post autor: Jan_J »

Kod: Zaznacz cały

Sub WstawDate
	Dim Data As Variant
	oDocument = ThisComponent
	oSheet = oDocument.getSheets.getByName("Zakupy i Zwroty")
	oCell = oSheet.getCellByPosition(0,nr_wiersza)
	Data = ZakupOknoDial.getControl("DataZak")
	....
End Sub
Data jest kontrolką typu stardiv.Toolkit.UnoDataFieldControl. Nie jest liczbą, więc nie możesz jej wstawiać do komórki jako wartość.
Trzeba z kontrolki pobrać datę (jako obiekt typu com.sun.star.util.Date) i przekształcić ją na liczbę za pomocą funkcji

Kod: Zaznacz cały

Sub WstawDate
	Dim Data As Variant
	oDocument = ThisComponent
	oSheet = oDocument.getSheets.getByName("Zakupy i Zwroty")
	oCell = oSheet.getCellByPosition(0,nr_wiersza)
	Data = ZakupOknoDial.getControl("DataZak")
	D = Data.Date
	dd = DateSerial(D.year, D.month, D.day)
	oCell.setValue(dd)
End Sub
Albo pobrać tekst daty z pola Text w kontrolce. O zgrozo! teki tekst też da się użyć w obliczeniach, sortowaniu itp., choć nie powinien.

Kod: Zaznacz cały

Sub WstawDate
	Dim Data As Variant
	oDocument = ThisComponent
	oSheet = oDocument.getSheets.getByName("Zakupy i Zwroty")
	oCell = oSheet.getCellByPosition(0,nr_wiersza)
	Data = ZakupOknoDial.getControl("DataZak")
	oCell.setString(Data.Text)
End Sub
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

Re: Jak pobrać datę z Pola daty

Post autor: Emart22 »

Pierwszym sposobem działa, ale rozumiem z odpowiedzi,że tak nie powinno się pisać więc próbuję pierwszym, ale mi nie działa tylko daję błąd : Nie ustawiono zmiennej obiektu i podświetla tą linijkę:
dd = DateSerial(D.year, D.month, D.day)
OpenOffice 4.0.1 Windows 8.1
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jak pobrać datę z Pola daty

Post autor: Jan_J »

Wychodzą na jaw skutki rozłamu AOO/LO.
W AOO Data.Date jest liczbą Long z wewnętrzną reprezentacją daty yyyymmdd w zapisie dziesiętnym (ISO).

Kod: Zaznacz cały

   D = Data.Date
   dd = cDateFromISO(d)
   oCell.setValue(Dd)
W LO Data.Date jest strukturą z polami Year, Month i Day. Mój kod dotyczył struktury.

Kod: Zaznacz cały

   D = Data.Date
   dd = DateSerial(D.year, D.month, D.d)
   oCell.setValue(Dd)
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Emart22
Posty: 20
Rejestracja: sob sty 11, 2014 11:29 pm

Re: Jak pobrać datę z Pola daty

Post autor: Emart22 »

Jak zwykle można liczyć na pomoc i szybką odpowiedź. Wielkie dzięki
OpenOffice 4.0.1 Windows 8.1
Bri
Posty: 15
Rejestracja: pn lut 10, 2014 6:14 pm
Kontakt:

Re: Jak pobrać datę z Pola daty - dodatek

Post autor: Bri »

Jako że moje pytanie jest identyczne podepnę się pod ten temat - tylko że ja chcę pobrać datę z kontrolki "DataIn" wstawionej w obszar Calc (nie wykorzystuję dialogów) - jak mam zaadresować kontrolkę? Wszędzie widzę adresowania do formularzy w dialogach.

Kod (strzelałem) w którym datę z kontrolki chcę automatycznie po wybraniu umieścić w komórce C6 oczywiście nie działa

Kod: Zaznacz cały

Sub Wstawdate1
   Dim Data As Variant
   oDocument = ThisComponent
   oSheet = oDocument.getSheets.getByName("Wprowadzanie")
   Data = oSheet.getControl("DataIn")
   oCell = oSheet.getCellByPosition(2,5)
   oCell.setValue(Data.Text)
End Sub
Win7 / LO 5.x / MSO2007 / MSO 2010
ODPOWIEDZ