OOo Basic - jak pokazać różnicę dwóch pól w trzecim polu


(Danusi) #1

Witam wszystkich bardzo serdecznie. Pierwszy raz zabieram się za tworzenie aplikacji tym narzędziem. Mam bazę danych - tabelę utworzoną w OOorg Basic oraz formularz oparty na tabeli. Pola formularza wypełniane są polami rekordu tabeli. Jedno pole tekstowe nie jest odbiciem danej z tabeli - w nim powinien znaleźć się wynik będący różnicą dwóch pól. /cena usługi - koszt usługi/.

Sub ObliczZysk()

Dim Doc As Object

Dim Forms As Object

Dim Form As Object

Dim CtlEk As Object

Dim CtlEp As Object

Dim CtlEz As Object

Doc = StarDesktop.CurrentCo­mponent

DrawPage = Doc.DrawPage

Forms = DrawPage.Forms

Form = Forms.GetByIndex(0)

­ CtlEk = Form.getByName("­txtEURKnt")

CtlEp = Form.getByName("­txtZyskEur")

CtlEz = Form.getByName("­txtEURKnt")

CtlEz.Text = CtlEk.Text - CtlEp.Text

End Sub

To jest źle - chyba nie bardzo rozumiem składnię obiektów, metod, ...

Bardzo proszę o pomoc - pozdrawiam - alanbad.


(system) #2

Zanim zaczniesz odejmować powinieneś tekst przekształcić na liczbę, a potem liczbę wynikową na tekst aby zapisać do pola oraz ewentualnie spację z przodu wykasować:

CtlEz.Text = Trim( Str( Val(CtlEk.Text) - Val(CtlEp.Text) ) )

(Danusi) #3

Witam i dziękuję za pomoc. :smiley:

Teraz moje makro wygląda tak:

Sub ObliczZysk()

Dim Doc As Object

Dim Forms As Object

Dim Form As Object

Dim CtlEk As Object

Dim CtlEp As Object

Dim CtlEz As Object

Doc = StarDesktop.CurrentComponent

DrawPage = Doc.DrawPage

Forms = DrawPage.Forms

Form = Forms.GetByIndex(0)

CtlEk = Form.getByName("txtEURKnt")

CtlEp = Form.getByName("txtEURPrzew")

CtlEz = Form.getByName("txtZyskEur")

CtlEz.Text = Trim( Str( Val(CtlEk.Text) - Val(CtlEp.Text) ) )

End Sub

Jednak po dojściu do linii: DrawPage = Doc.DrawPage pokazuje błąd: "Nie znaleziono właściwości lub metody". :frowning: Jest to przykład z podręcznika Basic Guide na wiki.services.openoffice.org. Brakuje mi wiedzy - który obiekt jak się nazywa i jakie stosuje się do niego metody oraz jego właściwości. W Visual Basic'u to wszystko było jasne a tu trochę brakuje informacji. Proszę więc o wyrozumiałość i dalszą pomoc. Pozdrawiam. alanbad.


(system) #4

Spróbuj zamienić:

Forms = DrawPage.Forms

Form = Forms.GetByIndex(0)

na:

Form = DrawPage.Forms.GetByIndex(1)

(Danusi) #5

Witam, bardzo dziękuję za kolejną podpowiedź, 13-ty Smoku.

Nestety, "on" wyraźnie czepia się polecenia:

DrawPage = Doc.DrawPage - "Nie znaleziono właściwości lub metody."

Kiedy opuszczę ten wiersz -

Doc = StarDesktop.CurrentComponent

'DrawPage = Doc.DrawPage

Form = DrawPage.Forms.GetByIndex(1)

pisze, że "nie określono zmiennej obiektu".

Kiedy zrobię tak:

Doc = StarDesktop.CurrentComponent

DrawPage = Doc.DrawPage

Form = Doc.DrawPage.Forms.GetByIndex(1)

  • znów:

"nie określono zmiennej obiektu".

Pozdrawiam - alanbad.


(system) #6

Sprawdź czy po wierszu

Doc = StarDesktop.CurrentComponent

Doc nie ma wartości pustej.