Czyszczenie pola Date

Użytkowanie programu bazodanowego
PIR30
Posty: 17
Rejestracja: pt paź 10, 2014 10:03 am

Czyszczenie pola Date

Post autor: PIR30 »

Witam
Tworzę od niedawna makra w basic i z niemałym trudem staram się przegryzać przez wszelkie napotykane problemy, niestety od czasu do czasu muszę zasięgnąć porady bardziej doświadczonych.
Napotkałem na wydawało by się bardzo prosty do rozwiązania problem otóż W formularz mam kilka pól typu Date które po wykonaniu określonych czynności chcę wyczyścić, niestety czyszczenie atrybutu Date.Text nie daje żadnego efektu w polu nadal widać poprzednio ustawioną datę.
Proszę o informację jakiego atrybutu użyć aby pole Date zostało wyczyszczone.
OpenOffice 3.6 na Windows Vista
PIR30
Posty: 17
Rejestracja: pt paź 10, 2014 10:03 am

Re: Czyszczenie pola Date

Post autor: PIR30 »

Może wiecie do jakiego parametru przypisać wartość w polu Date tak aby atrybut nazwaPola.Date również się zmienił.
OpenOffice 3.6 na Windows Vista
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Czyszczenie pola Date

Post autor: belstar »

1. Pola w formularzu masz połączone z określonym polem tabeli, więc formanty powinny pokazywać to co jest w tabeli i jeśli przejdziesz do nowego rekordu staną się puste. Jeśli masz to inaczej to wstaw przykład, to rzucimy na to okiem.
Ponadto jeśli jest możliwość korzystania z wbudowanych narzędzi to stosowanie makr mija się z celem.


2. Nie bardzo rozumiem sens tego pytania, po co zmieniać nazwę formantu kiedy możesz chcieć odwoływać się do niego w innej części formularza itp. a wtedy jak się do niego odwołasz.
Jeśli jednak potrzebne ci to, podejrzyj taki sobie kod ( pisane z pamięci, więc może być błąd )

Kod: Zaznacz cały

Sub nazwa(oEv)
	oEv.source.model.setName("Stara nazwa")
	Print oEv.Source.model.Name
	oEv.source.model.setName("Nowa nazwa")
	Print oEv.Source.model.Name

	'Pierwsza część pytania - zadziała jeśli formant jest niezwiązany z żadnym polem tabeli
	oEv.source.model.reset
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
PIR30
Posty: 17
Rejestracja: pt paź 10, 2014 10:03 am

Re: Czyszczenie pola Date

Post autor: PIR30 »

Nie chodziło mi o zmianę nazwy pola tylko zminę jego wartości, pole w formularzu nie służy mi do prezentacji danych z tabeli tylko do wprowadzania danych do arkusza.
Jest to pole data urodzenia napisałem makro które ma wypełniać automatycznie to pole po wprowadzeniu danych do pola pesel.
Wykonuje to przez przypisanie przez ustawienie parametru

Kod: Zaznacz cały

private function WstawDoPol(Dataur)
	doc = thisComponent
  	ark = doc.Sheets.getByIndex(0)
	page = ark.getDrawPage()
	form = page.Forms.getByName("Formularz")
	P1 = form.getByName(DatUr)
 	P1.text=Dataur
end function 
Niestety jest to przypisanie które jest nietrwałe ponieważ po zmianie arkusza i powrocie do niego w polu wstawia się wartość z parametru DataUr.Date
OpenOffice 3.6 na Windows Vista
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Czyszczenie pola Date

Post autor: belstar »

Wstaw załącznik, będzie łatwiej pojąć twój piont.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
PIR30
Posty: 17
Rejestracja: pt paź 10, 2014 10:03 am

Re: Czyszczenie pola Date

Post autor: PIR30 »

Załączam przykładowy plik.
Po wprowadzeniu numeru pesel pole data urodzenia uzupełniane jest automatycznie i wszystko wygląda ok dopóki nie przejdźmy na inny arkusz po powrocie pole data wypełnione jest wartością z parametru DataUr1.Date .
Załączniki
Przykladowy.ods
(17.26 KiB) Pobrany 196 razy
OpenOffice 3.6 na Windows Vista
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Czyszczenie pola Date

Post autor: belstar »

Sprawdź załącznik, z treści wywnioskowałem że pole daty gubi ci wstawioną datę, niestety twoją metodą nie wstawiasz daty w pole tylko tekst i stąd to gubienie wynikało poza tym data musi być wstawiona w formacie ISO z uwzględnieniem ustawień lokalizacyjnych.

Musisz popracować nad funkcją SkasujPol(), bo występuje wyjątek gdy pole daty jest wyczyszczone (nie zawiera nic).

I na koniec mała uwaga: W StarBasicu nie występuje seryjna deklaracja zmiennych więc zapis:

Kod: Zaznacz cały

Dim  rok, mies, dzien as Integer
deklaruje dwie zmienne Variant (rok i mies) i jedną zmienną Integer (dzien)

Testowałem na LO, także co się dzieje na AOO nie wiem, w każdym bądź razie LO i AOO pod względem reprezentacji i przechoywania dat różną się np:

Kod: Zaznacz cały

'LO
P1.Date.Day = 14
P1.Date.Month = 12
P1.Date.Year = 2014
'AOO
P1.Date =  CLng(cDateToIso(Now()))
Załączniki
Przykladowy_a.ods
(18.69 KiB) Pobrany 185 razy
LibreOffice 5.1.2.2 Ubuntu 16 LTS
PIR30
Posty: 17
Rejestracja: pt paź 10, 2014 10:03 am

Re: Czyszczenie pola Date

Post autor: PIR30 »

Ok ale teraz jak zainicjować to pole po jego wyczyszczeniu.
OpenOffice 3.6 na Windows Vista
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Czyszczenie pola Date

Post autor: belstar »

A prościej ci nie będzie zrobić je nieaktywnym, i zmienić kolor czcionki na biały lub coś w tym stylu.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
ODPOWIEDZ