Strona 1 z 1

Czyszczenie pola Date

: wt lis 04, 2014 8:29 pm
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.

Re: Czyszczenie pola Date

: czw gru 11, 2014 1:04 pm
autor: PIR30
Może wiecie do jakiego parametru przypisać wartość w polu Date tak aby atrybut nazwaPola.Date również się zmienił.

Re: Czyszczenie pola Date

: czw gru 11, 2014 11:41 pm
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

Re: Czyszczenie pola Date

: pt gru 12, 2014 8:50 am
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

Re: Czyszczenie pola Date

: pt gru 12, 2014 9:52 am
autor: belstar
Wstaw załącznik, będzie łatwiej pojąć twój piont.

Re: Czyszczenie pola Date

: pt gru 12, 2014 10:34 am
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 .

Re: Czyszczenie pola Date

: ndz gru 14, 2014 1:18 pm
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()))

Re: Czyszczenie pola Date

: pn gru 15, 2014 8:13 pm
autor: PIR30
Ok ale teraz jak zainicjować to pole po jego wyczyszczeniu.

Re: Czyszczenie pola Date

: pn gru 15, 2014 9:07 pm
autor: belstar
A prościej ci nie będzie zrobić je nieaktywnym, i zmienić kolor czcionki na biały lub coś w tym stylu.