basic a mysql

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
hqpl
Posty: 2
Rejestracja: czw lis 12, 2009 10:38 am

basic a mysql

Post autor: hqpl »

Witam, od jakiegoś już czasu próbuję zrobić prostą bazę danych zawierającą listę ruchów i stanów magazynowych. Stworzenie samych tabel nie sprawiło mi większego kłopotu. Stworzenie formularzy również. Problem pojawił się z dodaniem wstawek BASICa - makr zajmujących się limitowaniem wyników i aktualizacji stanów po dodaniu ruchów.

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()
Wartości w danej komórce są zmieniane na wartość 666, ale zaraz po tym wyskakuje błąd krytyczny.

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
Wyświetlało mi tylko 'Bibliography'. W ustawieniach - opcje->bazy danych dodałem ten plik na którym pracuję i przestalo wyświetlać błąd: database exception - no XXX. Za to cały program się wywala.


W związku z tym, iż jest to mój pierwszy post - Witam :)
w7 ooo3.1
hqpl
Posty: 2
Rejestracja: czw lis 12, 2009 10:38 am

Re: basic a mysql

Post autor: hqpl »

Błąd tkwił w połączeniu mysql native - gdy zastąpiłem go poprzez jdbc wszystko zaczęło działać poprawnie!
w7 ooo3.1
ODPOWIEDZ