我发现大家都喜欢这么用。用ADO为什么不这么用呢?
dim ocnn as new ...
ocnn.open "..."
dim sqlstr as string
sqlstr ="insert into table(filed1,field2……)values(value1,value2……)"
conn.execute sqlstr
这样又简单,又不容易出错,这样sql语句是交给数据库去执行的。
不象你的那样,鬼知道ado里面又怎么处理它了。
我除了插入图象数据用你的方法外,我都喜欢用sql语句的办法。如果有错,在debug状态把sqlstr的值拷贝下来,放到sql plus中一执行就知道错了没有,如果在sql plus中能执行,那程序就能执行

解决方案 »

  1.   

    还有,你可以把这些功能封装成函数
    '==================================获取记录集====================================
    Public Function fCreateReadRs(ByVal cn As ADODB.Connection, ByVal sTbleName As String, Optional ByVal sWhere As String = "", _
                Optional ByVal sOrderBy As String = "", Optional ByVal sWhat As String = "*") _
                As ADODB.Recordset
        Dim strQuery As String
        On Error GoTo fCreateReadRsErr
        Set fCreateReadRs = Nothing
        strQuery = "select " & sWhat & " from " & sTbleName
        If Trim(sWhere) <> "" Then
            strQuery = strQuery & " Where " & sWhere
        End If
        If Trim(sOrderBy) <> "" Then
            strQuery = strQuery & " Order by " & sOrderBy
        End If
        Set fCreateReadRs = New ADODB.Recordset
        fCreateReadRs.CursorType = adOpenStatic
        fCreateReadRs.LockType = adLockReadOnly
        Set fCreateReadRs = cn.Execute(strQuery)
    fCreateReadRsExit:
        On Error GoTo 0
        Exit Function
    fCreateReadRsErr:
        sLog "获取记录集发生错误! strQuery = " & strQuery & "; Error:" & Err.Description
        Set fCreateReadRs = Nothing
        GoTo fCreateReadRsExit
    End Function
    '======================================执行删除语句=========================================Public Function fDeleteRs(ByVal cn As ADODB.Connection, ByVal sTbleName As String, Optional ByVal sWhere As String = "") As Boolean
        Dim strQuery As String
      
        On Error GoTo fDeleteRsErr
        fDeleteRs = False
        
        If Trim(sWhere) = "" Then
            sLog "条件为空。将删除表" & sTbleName & "所有记录"
        End If
        strQuery = "delete from " & sTbleName
        
        If Trim(sWhere) <> "" Then
            strQuery = strQuery & " Where " & sWhere
        End If
        cn.Execute strQuery
        fDeleteRs = True
        sLog "删除表" & sTbleName & "记录成功,条件为:" & sWhere
    fDeleteRsExit:
        On Error GoTo 0
        Exit Function
    fDeleteRsErr:
        sLog "删除表记录发生错误! strQuery = " & strQuery & "; Error:" & Err.Description
        fDeleteRs = False
        GoTo fDeleteRsExit
    End Function'======================================执行插入语句=========================================Public Function fInsertRs(ByVal cn As ADODB.Connection, ByVal sTbleName As String, ByVal sValues As String, _
                              Optional ByVal sField As String = "") As Boolean
        Dim strQuery As String
      
        On Error GoTo fInsertRsErr
        fInsertRs = False
        strQuery = "Insert into " & sTbleName
           
        If Trim(sField) <> "" Then
            strQuery = strQuery & "(" & sField & ")"
        End If
        strQuery = strQuery & " Values(" & sValues & ")"
        cn.Execute strQuery
        fInsertRs = True
        sLog "往表" & sTbleName & "插入记录成功,值为:" & sValues
    fInsertRsExit:
        On Error GoTo 0
        Exit Function
    fInsertRsErr:
        sLog "往表插入记录时发生错误! strQuery = " & strQuery & "; Error:" & Err.Description
        fInsertRs = False
        GoTo fInsertRsExit
    End Function'======================================执行更新语句=========================================
    Public Function fUpdateRs(ByVal cn As ADODB.Connection, ByVal sTbleName As String, ByVal sValues As String, _
                              Optional ByVal sWhere As String = "") As Boolean
        Dim strQuery As String
      
        On Error GoTo fUpdateRsErr
        fUpdateRs = False
        If Trim(sWhere) = "" Then
            sLog "条件为空。将更新表" & sTbleName & "所有记录"
        End If
        strQuery = "Update " & sTbleName
        strQuery = strQuery & " set " & sValues
        If Trim(sWhere) <> "" Then
            strQuery = strQuery & " Where " & sWhere
        End If
     
        cn.Execute strQuery
        fUpdateRs = True
        sLog "更新表" & sTbleName & "成功,值为:" & sValues & " 条件为:" & sWhere
    fUpdateRsExit:
        On Error GoTo 0
        Exit Function
    fUpdateRsErr:
        sLog "更新表记录时发生错误! strQuery = " & strQuery & "; Error:" & Err.Description
        fUpdateRs = False
        GoTo fUpdateRsExit
    End Function
      

  2.   

    很奇怪的问题,
    但是我想如果能用两个RS就应该没有问题了.
    比如前面的用RS1,后面的用RS2;