Stany chciałbym aktualizować tuż przed zapisaniem danego ruchu(wysłaniem formularza).
Przycisk zapisz uruchamia poniższy kod (BASIC ma pobrać wartość z pola, uruchomić zapytanie SQL, oraz wysłać do bazy danych wartości ze wszystkich pól):
[blockcode]Sub zapiszINastepny(obiekt As Object)
dim oForm as object
dim ods as variant
dim ilosc As string
REM pobranie ilości
ilosc = obiekt.Source.Model.Parent.getByName("qtyMovementTbx").Text
msgbox "1: ilosc = " & ilosc
REM podlaczenie do bazy danych
ods = CreateUnoService("com.sun.star.sdb.DatabaseContext").getByName("XXX")
REM lista baz
' Names = ods.getElementNames()
' For I = 0 To UBound(Names())
' MsgBox Names(I)
' Next I
If Not ods.IsPasswordRequired Then
Connection = ods.GetConnection("","")
msgbox "2: bez hasla"
Else
InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
Connection = ods.ConnectWithCompletion(InteractionHandler)
msgbox "3: z haslem"
End If
pytanie= "UPDATE itemtbl SET quantityItem = '666' WHERE idItem = '1' "
msgbox "4: pytanie =" & pytanie
Statement = Connection.createStatement()
ResultSet = Statement.executeQuery(pytanie)
REM poniższej linijki już nie uruchamia, nawet gdy ją usunę, nic nie jest dalej przetwarzane
msgbox ResultSet.getString()
REM zapisywanie - to działa
oForm = obiekt.source.model.parent
If oForm.IsNew then
oForm.InsertRow
Else
oForm.UpdateRow
End if
oForm.MoveToInsertRow
Connection.Dispose
End Sub[/blockcode]
I wszystko byłoby dobrze, gdyby nie fakt, że oobase wywala się między linijkami:
Kod: Zaznacz cały
ResultSet = Statement.executeQuery(pytanie)
msgbox ResultSet.getString()
Na wszelki wypadek dodam, że używam połączenia lokalnego z bazą danych MYSQL (natywna) i uruchamiając:
Kod: Zaznacz cały
Names = ods.getElementNames()
For I = 0 To UBound(Names())
MsgBox Names(I)
Next I
W związku z tym, iż jest to mój pierwszy post - Witam
