To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=81074
Issue #|81074
Summary|XRowSetApproveListener approval of dataset change does
|n't save correctly to database
Component|Word processor
Version|680m225
Platform|All
URL|
OS/Version|All
Status|UNCONFIRMED
Status whiteboard|
Keywords|
Resolution|
Issue type|DEFECT
Priority|P2
Subcomponent|editing
Assigned to|cn
Reported by|helgekraak
------- Additional comments from [EMAIL PROTECTED] Tue Aug 28 07:18:21 +0000
2007 -------
If you want to avoid data loss of data entered in a form which is connected to a
HSQLDB Base document after Openoffice crashes this is the only code which avoids
this:
'Example Number 1
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame,
".uno:RecSave", "", 0, Array())
Form = thiscomponent.drawpage.forms.getByName("FormName")
Form.ActiveConnection.Flush
'--
Using just Form.ActiveConnection.Flush only avoids data loss when data was sent
to the database via SQL like (shortened):
'Example Number 2
oStatement = Connection.createStatement()
oStatement.executeUpdate(SQL-Statement)
'--
I tried using Example Number 1 after the approveRowChange = TRUE order when
using the XRowSetApproveListener but this ends in an endless loop of the routine
because of the RecSave dispatcher. When I just use Form.ActiveConnection.Flush
and kill soffice.bin the last record change is not in the database after restart
of Openoffice.
Conclusion: The XRowSetApproveListener needs to save data in the same way like
data is saved with the RecSave dispatcher.
PS: Please also note
http://www.oooforum.org/forum/viewtopic.phtml?t=43786&highlight=data+loss
There you will find the following attempts of avoiding data loss. I tried them
as a substitute of the RecSave dispatcher but they don't have any effect when
used together with Form.ActiveConnection.Flush.
Sub database_flush
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
DataSource = DatabaseContext.getByName("DatabaseName")
Connection = DataSource.GetConnection("SA","")
'1st attempt
DataSource.flush
'2nd attempt
Connection.flush
'3rd attempt
Statement = Connection.createStatement()
execute_sql = Statement.execute("CHECKPOINT")
End Sub
---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]