Vb6 ADODB.Command execute总是返回错误的值,即-1
我找不到受以下查询影响的任何记录。在成功事务和失败事务中,它都返回-1值Vb6 ADODB.Command execute总是返回错误的值,即-1,vb6,sybase,adodb,sqlcommand,Vb6,Sybase,Adodb,Sqlcommand,我找不到受以下查询影响的任何记录。在成功事务和失败事务中,它都返回-1值 Public Function fnModifyRecord() As Boolean Dim conTran As New ADODB.Connection Dim comTran As New ADODB.Command conTran.Errors.Clear On Error Resume Next conTran.Open "Provider=MSDataShape;OD
Public Function fnModifyRecord() As Boolean
Dim conTran As New ADODB.Connection
Dim comTran As New ADODB.Command
conTran.Errors.Clear
On Error Resume Next
conTran.Open "Provider=MSDataShape;ODBC;Database=" & strDatabase & ";UID=" & strUID & ";PWD=" & strPWD & ";DSN=" & strDSN & ""
If conTran.Errors.Count > 0 Then
MsgBox "FAILED TO CONNECT TO SERVER"
interr = 0
Do Until interr = conTran.Errors.Count
MsgBox conTran.Errors.Item(interr).Description, vbCritical, strMsg
interr = interr + 1
Loop
fnModifyRecord = False
Exit Function
End If
'/***** Begin modification
conTran.BeginTrans
comTran.ActiveConnection = conTran
comTran.CommandType = adCmdText
comTran.CommandText = "Update Department set EmpName = 'Preeti' where EmpCode = 1101 and DeptName ='IT'"
conTran.Errors.Clear
On Error Resume Next
comTran.Execute
If conTran.Errors.Count > 0 Then
conTran.RollbackTrans
interr = 0
Do Until interr = conTran.Errors.Count
MsgBox conTran.Errors.Item(interr).Description, vbCritical, strMsg
interr = interr + 1
Loop
conTran.Close
fnModifyRecord = False
Exit Function
End If
comTran.CommandText ="update Emptbl set EmpName ='Preeti' where EmpCode = 1101"
conTran.Errors.Clear
On Error Resume Next
Dim r As Integer
comTran.Execute r
'/***** check the status of r it should be 1
If r <> 1 Then
MsgBox "ERROR ---- RECORD DID NOT GET UPDATED"
conTran.RollbackTrans
If conTran.Errors.Count > 0 Then
interr = 0
Do Until interr = conTran.Errors.Count
MsgBox conTran.Errors.Item(interr).Description, vbCritical, strMsg
interr = interr + 1
Loop
conTran.Close
fnModifyRecord = False
If conTran.State = 1 Then
conTran.Close
Set conTran = Nothing
End If
Exit Function
End If
End If
If conTran.Errors.Count > 0 Then
conTran.RollbackTrans
interr = 0
Do Until interr = conTran.Errors.Count
MsgBox conTran.Errors.Item(interr).Description, vbCritical, strMsg
interr = interr + 1
Loop
conTran.Close
fnModifyRecord = False
Exit Function
End If
conTran.CommitTrans
conTran.Close
fnModifyRecord = True
Exit Function
End Function
公共函数fnModifyRecord()作为布尔值
Dim conTran作为新ADODB.连接
Dim comTran作为新的ADODB.命令
对错
出错时继续下一步
conTran.Open“Provider=MSDataShape;ODBC;Database=“&strDatabase&”UID=“&strUID&”PWD=“&strPWD&”DSN=“&strDSN&”
如果conTran.Errors.Count>0,则
MsgBox“无法连接到服务器”
interr=0
直到interr=conTran.Errors.Count为止
MsgBox conTran.Errors.Item(interr).Description,vbCritical,strMsg
中断=中断+1
环
fnModifyRecord=False
退出功能
如果结束
'/****开始修改
康特恩·贝金特斯
comTran.ActiveConnection=contan
comTran.CommandType=adCmdText
comTran.CommandText=“更新部门设置EmpName='Preeti',其中EmpCode=1101和DeptName='IT'”
对错
出错时继续下一步
comTran.Execute
如果conTran.Errors.Count>0,则
反向翻转
interr=0
直到interr=conTran.Errors.Count为止
MsgBox conTran.Errors.Item(interr).Description,vbCritical,strMsg
中断=中断+1
环
关上
fnModifyRecord=False
退出功能
如果结束
comTran.CommandText=“更新Emptbl set EmpName='Preeti',其中EmpCode=1101”
对错
出错时继续下一步
作为整数的Dim r
comTran.Execute r
'/****检查r的状态它应该是1
如果r1那么
MsgBox“错误----记录未更新”
反向翻转
如果conTran.Errors.Count>0,则
interr=0
直到interr=conTran.Errors.Count为止
MsgBox conTran.Errors.Item(interr).Description,vbCritical,strMsg
中断=中断+1
环
关上
fnModifyRecord=False
如果合同状态=1,则
关上
设置控件=无
如果结束
退出功能
如果结束
如果结束
如果conTran.Errors.Count>0,则
反向翻转
interr=0
直到interr=conTran.Errors.Count为止
MsgBox conTran.Errors.Item(interr).Description,vbCritical,strMsg
中断=中断+1
环
关上
fnModifyRecord=False
退出功能
如果结束
合同委员会
关上
fnModifyRecord=True
退出功能
端函数
注意:最近我们将数据库(Sybase 15)的页面大小从2K更新为4K。使用完整的命令对象和事务处理似乎有点愚蠢。您的确切代码和正在执行的查询是什么?在实际情况中,我正在事务中进行两次更新。两个不同表中的记录正在更新。好的,我的其余部分仍然有效。尝试向我们显示您的实际代码和结果查询。好的,完成检查。希望这一切正常。在
Emptbl
表中是否确实存在EmpCode
字段设置为数值1101的记录?