To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=62956
Issue #:|62956
Summary:|SQLException can cause C++ runtime error
Component:|Database access
Version:|OOo 2.0.2
Platform:|All
URL:|
OS/Version:|Windows XP
Status:|UNCONFIRMED
Status whiteboard:|
Keywords:|
Resolution:|
Issue type:|DEFECT
Priority:|P3
Subcomponent:|none
Assigned to:|dbaneedsconfirm
Reported by:|atjensen
------- Additional comments from [EMAIL PROTECTED] Wed Mar 8 23:17:58 -0800
2006 -------
The following situation can cause OO.o to terminate with a Visual C++ runtime
error.
First - you need to copy the follwoing basic procedures into a library
sub onClickApplyAllAdjustments( oEv as variant )
dim tmpAdjustments as variant
tmpAdjustments = oEv.Source.Model.Parent
with tmpAdjustments
'if .RowInserted then
if .isNew then
.InsertRow
end if
do
.First
spInvAdjustment(tmpAdjustments.Columns.getByName("ProductID").getInt , _
tmpAdjustments.Columns.getByName("AdjDate").getDate, _
tmpAdjustments.Columns.getByName("AdjType").getInt, _
tmpAdjustments.Columns.getByName("Units").getInt, _
tmpAdjustments.ActiveConnection )
.DeleteRow
loop until .isAfterLast
end with
end sub
sub spInvAdjustment( ProductID AS INTEGER, AdjDate AS new
com.sun.star.util.Date, AdjType AS INTEGER, Units AS INTEGER, dbConnection as
variant )
' just for convienence a string
' to build our sql commands
dim sSQL as string
' a variable for the stock adjustment
' type to perform
dim StockType as integer
' and some constants for what it means
' for readability
const cPullDown = 1
const cReplenish = 2
' a variable for a prepared statement
' object that lets us apply SQL
' commands to the databse
dim pStmt as variant
' a record set variable
dim rs as variant
' a variable for the amount
' to change the inventory by
dim StkUnits as integer
sSQL = "Select ""StockType"" FROM ""AdjustmentTypes"" WHERE ""AdjType""
= ? "
pStmt = dbConnection.PrepareStatement( sSQL )
pStmt.setInt( 1, AdjType )
rs = pStmt.ExecuteQuery
' we should have gotten back one record
if not rs.isBeforeFirst then
' if we are not before the first record
' then we got back zero records
print "oops I don't know that Adjustment type"
exit sub
else
' move to the first record
' and retrive the value from
' the frist column as an integer
rs.next
StockType = rs.getInt( 1 )
end if
' so the next step is to actually
' write our data to the InvAdjustments
' table - we can resuse our prepared
' statement for this
sSQL = "INSERT INTO ""InvAdjustments"" ( ""ProductID"", ""AdjDate"",
""AdjType"", ""Units"" ) VALUES ( ?,?,?,? ) "
pStmt = dbConnection.PrepareStatement( sSQL )
pStmt.setInt( 1, ProductID )
pStmt.setDate( 2, AdjDate )
pStmt.setInt( 3, AdjType )
pStmt.setInt( 4, Units )
pStmt.executeUpdate
' here we decide what we will do
' about the inventory items in stock
select case StockType
case cPullDown
StkUnits = Units * -1.0
case cReplenish
StkUnits = Units
end select
sSQL = "UPDATE ""Products"" SET ""UnitsInStock"" = ""UnitsInStock"" + ?
WHERE
""ProductID"" = ? "
pStmt = dbConnection.PrepareStatement( sSQL )
pStmt.setInt( 1, StkUnits )
pStmt.setInt( 2, ProductID )
pStmt.executeUpdate
end sub
Now open the attached database, you will need to edit the form
frmMutipleAdjustments, change the buttons 'when initializing' event entry to
point to wherever you put the procedure onClickApplyAllAdjustments.
Alright, open the form - you should see two records. Click the button.
Now, I realize that the code in the onClickApplyAllAdjustments procedure is
wrong, it loops one to many times. However, when the command .First is called
this 'once to often' time the following errors are generated.
Basic runtime error.
An exception occured
Type: com.sun.star.sdbc.SQLException
Message: The cursor points to before the first or after the last row...
Microsoft Viusal C++ Runtime Library
Runtime Error!
This applicaton has requested the Runtime to terminate it in an unusal way.
Please contact the applications support team for more information.
When OO.o is restarted the file recovery routine runs, however no crash report
is available and not offer to send such is made.
---------------------------------------------------------------------
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]