首先你采用的是什么数据库?如果用的是ORACLE等大型数据库的话,可以用PL/SQL DEVELOPER等工具调试。
检查你与数据库的连接CONNECTION有没有问题。
ADO记录集相关参数的设置,如游标、记录锁等,设置是否正确。
检查SQL语句有无不规范之处。
仔细检查你所要更新的字段的特性,包括类型、长度以及是否可以为NULL等等,然后再检查你所要插入的数据有无不符合字段特性的地方。估计问题多是出在这上面。
最后,耐心一点,会找到问题的!
祝你好运!
检查你与数据库的连接CONNECTION有没有问题。
ADO记录集相关参数的设置,如游标、记录锁等,设置是否正确。
检查SQL语句有无不规范之处。
仔细检查你所要更新的字段的特性,包括类型、长度以及是否可以为NULL等等,然后再检查你所要插入的数据有无不符合字段特性的地方。估计问题多是出在这上面。
最后,耐心一点,会找到问题的!
祝你好运!
使用事务
Dim rs As ADODB.Recordset
Dim fs As New FileSystemObject
Dim fa As Object
Dim iCol, iRow, tt As Integer
Dim strTemp As String
Dim strColumn As String
Dim ado_Error As ADODB.Errors
On Error GoTo err_executetable
Set rs = New ADODB.Recordset
rs.CursorType = adOpenKeyset
rs.LockType = adLockBatchOptimistic
rs.CursorLocation = adUseClient
rs.Open strTableName, Temp_Cnn, , , adCmdTable
Set fs = CreateObject("Scripting.FileSystemObject")
Set fa = fs.OpenTextFile(strFileName, ForReading)
iRow = 0
While Not fa.AtEndOfStream
strTemp = fa.ReadLine
rs.AddNew
For iCol = 0 To rs.Fields.Count - 1
If InStr(strTemp, "^") > 0 Then
strColumn = Left(strTemp, InStr(strTemp, "^") - 1)
strTemp = Right(strTemp, Len(strTemp) - InStr(strTemp, "^"))
Else
strColumn = strTemp
End If
strColumn = Replace(strColumn, "M~V", Chr(13) & Chr(10))
If Len(Trim(strColumn)) > 0 Then rs.Fields(iCol) = strColumn
Next iCol
'rs.Update
iRow = iRow + 1
If iRow = 1000 Then
iRow = 0
rs.UpdateBatch
'rs.Update
End If
Wend
If iRow > 0 Then rs.UpdateBatch
fa.Close
rs.Close
InsertData = True
Exit Function
err_executetable:
'显示并清理ADO错误
MsgBox "处理" & strTableName & "文件时发生错误" & Err.Description, , "提示"
MsgBox "第" & CStr(iCol) & "列,字段名为" & rs.Fields(iCol).name, , "提示"
Err.Clear
InsertData = False
End Function请大家帮忙看看上面的代码,每次一执行rs.UpdateBatch时,就报错, "对于造型说明无效的字符值",错误号:-2147217887,请高手指教!在线等待
If iRow = 1000 Then
iRow = 0
rs.UpdateBatch
'rs.Update
End If
Wend
If iRow > 0 Then rs.UpdateBatch
将IF iRow=...End if之间的语句都去掉,将最后一条语句中的if then也去掉,只保留rs.updatebatch试试。
把If Len(Trim(strColumn)) > 0 Then rs.Fields(iCol) = strColumn改成
If lstrlen(Trim(strColumn)) > 0 Then rs.Fields(iCol) = trim(strColumn)试试Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
提醒:VB的UNICODE编码