ich bin langsam am verzweifeln. Ich habe ein ausgelagertes Formular erstellt, dieses füllt eine Datenbank (OpenOffice Datenbank HSQL). Das Formular besitzt eine Schaltfläche "Datensatz speichern" das ich mit folgenden Code hinterlegt habe:
sub DatensatzSpeichern()
DIM oDoc, oForm As Object
DIM DatabaseContext, ODataSource, oCon As Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("db_versand")
oCon = DataSource.GetConnection("","")
odoc = thiscomponent
oform = odoc.drawpage.forms.getbyindex(0)
On Error Goto ErrorBehandlung
If oForm.isNew Then
oForm.insertRow
MsgBox "Daten wurden hinzugefügt"
ElseIf oForm.isModified Then
oForm.updateRow
MsgBox "Daten wurden aktualisiert"
else
exit sub
End If
odoc.store
exit sub
ErrorBehandlung:
MsgBox "Keine DATEN eingegeben!"
end sub
Nun zum Problem was ich habe, wenn man den PC herunterfährt und wieder hochfährt sind die eingegebenden Daten nicht in der Datenbank gespeichert. Wie bekomme ich es hin, dass die Daten dauerhaft in der Datenbank gespeichert werden. Ich hoffe das ihr mir helfen könnt!
Vielen Dank auf den Verweis. Eine kleine Zeile die Wunder bewirkt! Soweit ich das verstanden habe speichert OpenOffice die Daten bei der intregierten Datenbank zwischern. Um die Daten aus dem Zwischenspeicher endgültig zu speichern, brauch OpenOffice ein Befehl. Wie ist es bei einer MySQL Datenbank?
sub DatensatzSpeichern()
DIM oDoc, oForm As Object
DIM DatabaseContext, ODataSource, oCon As Object
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("db_versand")
oCon = DataSource.GetConnection("","")
odoc = thiscomponent
oform = odoc.drawpage.forms.getbyindex(0)
On Error Goto ErrorBehandlung
If oForm.isNew Then
oForm.insertRow
MsgBox "Daten wurden hinzugefügt"
DataSource.flush
ElseIf oForm.isModified Then
oForm.updateRow
MsgBox "Daten wurden aktualisiert"
DataSource.flush
else
exit sub
End If
exit sub
ErrorBehandlung:
MsgBox "Keine DATEN eingegeben!"
end sub
Ich habe auch die Zeile mit oDoc.store aus dem Code genommen.
Musst Du bei Dir ausprobieren - nachdem's ja jedes Mal einen Datenverlust gibt sollte der Fehler leicht nachzustellen sein. Wenn alles nicht hilft: eine Backend-Datenbank probieren, da sollte das nicht vorkommen.
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5