我想把对Access库的基本操作(Delete,AddNew,Update,Edit)等封装到一个DLL中,该怎么办啊?
  开始的想法:
         在clsMyData中
        private daoDB as dao.database
        private daoRS as dao.recordset         private nFieldname as string   '用来确定连接的表名
        private nDBpath as string      '用来确定数据库路径        public property let FieldName(byval newfieldname as string)
            nfieldname=newfieldname
        end property        public property let DBpath(by val ...  '与Fieldname let 相似        public Sub Connect()
           '此方法用来连接数据库,但必须先把Fieldname和DBpath附值
        end sub
     但是这样我就觉得直接用DAO多好啊,到底应该把什么给DLL定义哪些属性和方法呢,    或者不封装DAO,那DLL到底应该怎么写什么呢,迷茫中~~
               谢谢指教 

解决方案 »

  1.   

    我是直接用控件数组的方法来做的.
    封装是用ADO的.Public Function C_Insert(ByVal C_Form As Form, ByVal C_TabelName As String, ByVal C_Text As String)
    '添加数据库内容
    On Error GoTo ine
    Dim C_Temp As String
    sqlinsert = ""
    sqlinsert = "insert into " & C_TabelName & " values('" & C_Text & "',"
    For i = 0 To C_Form.Text1.Count - 1
        Select Case i
           'Case 10, 13, 20
           '     sqlinsert = sqlinsert & "'" & Format(Text1(i).Text, "m/d/yyyy") & "',"
           Case Else
                sqlinsert = sqlinsert & "'" & C_Form.Text1(i).Text & "',"
        End Select
    Next i
    sqlinsert = Left(sqlinsert, Len(sqlinsert) - 1)
    sqlinsert = sqlinsert & ")"
    conn.Execute (sqlinsert)
    C_Temp = ""
    C_Temp = "添加 " & C_TabelName & " '" & C_Text & "' 成功。"
    MsgBox C_Temp, , "用户信息"
    GoTo inerr
    ine:
       C_Temp = ""
       C_Temp = "添加 " & C_TabelName & " 失败。错误:" & Err.Description & "。"
       MsgBox C_Temp, , "错误信息"
    inerr:
    End FunctionPublic Function C_Update(ByVal C_Form As Form, ByVal C_TabelName As String, ByVal C_Text As String, ByVal C_MainField As String)
    On Error GoTo ine
    Dim C_Temp As String
    sqlupdate = ""
    sqlupdate = C_MainField & " = '" & C_Text & "',"
    sqlsa = ""
    sqlsa = "select * from " & C_TabelName & " where " & C_MainField & " = '" & C_Text & "'"
    Set rs = conn.Execute(sqlsa)
    For i = 0 To C_Form.Text1.Count - 1
        If Trim(C_Form.Text1(i).Text) = "" Then
           sqlupdate = sqlupdate + rs.Fields(i + 1).name & " =  '',"
        Else
        Select Case rs.Fields(i + 1).Type
           Case 8
                sqlupdate = sqlupdate + rs.Fields(i + 1).name & " = '" & Format(C_Form.Text1(i).Text, "m/d/yyyy") & "',"
           Case Else
                sqlupdate = sqlupdate + rs.Fields(i + 1).name & " = '" & C_Form.Text1(i).Text & "',"
        End Select
        End If
    Next i
    rs.Closesqlupdate = Left(sqlupdate, Len(sqlupdate) - 1)
    sqlupdate = "update " & C_TabelName & " set " & sqlupdate & " where " & C_MainField & " = '" & Trim(C_Text) & "'"
    conn.Execute (sqlupdate)
    C_Temp = ""
    C_Temp = "修改 " & C_TabelName & " '" & C_Text & "' 成功。"
    MsgBox C_Temp, , "用户信息"
    GoTo inerr
    ine:
       C_Temp = ""
       C_Temp = "修改 " & C_TabelName & " 失败。错误:" & Err.Description & "。"
       MsgBox C_Temp, , "错误信息"
    inerr:
    End FunctionPublic Function C_Delete(ByVal C_Form As Form, ByVal C_TabelName As String, ByVal C_MainField As String, ByVal C_Text As String)
    On Error GoTo ine
    Dim C_Temp As String
    C_Temp = ""
    C_Temp = "确实要删除" & C_TabelName & "吗?"
    If MsgBox(C_Temp, vbOKCancel) = vbOK Then
       sqldelete = ""
       sqldelete = "delete from " & C_TabelName & " where " & C_MainField & " = '" & C_Text & "'"
       conn.Execute (sqldelete)
       C_Form.Text2.Text = ""
       For i = 0 To C_Form.Text1.Count - 1
           C_Form.Text1(i).Text = ""
       Next i
    Else
       GoTo inerr
    End If
    C_Temp = ""
    C_Temp = "删除 " & C_TabelName & " '" & C_Text & "' 成功。"
    MsgBox C_Temp, , "用户信息"
    GoTo inerr
    ine:
       C_Temp = ""
       C_Temp = "删除 " & C_TabelName & " 失败。错误:" & Err.Description & "。"
       MsgBox C_Temp, , "错误信息"
    inerr:
    End Function
      

  2.   

    还有查询
    Public Function C_Search(ByVal C_From As Form, ByVal C_TabelName As String, ByVal C_MainField As String, ByVal C_Text As String)
    Dim i As Integer
    On Error GoTo inerr
    Set rs = New ADODB.Recordset
    If C_Text = "" Then
       GoTo inerr
    End If
    sqlsa = ""
    sqlsa = "select * from " & C_TabelName & " where " & C_MainField & "= '" & C_Text & "'"
    rs.Open sqlsa, conn, adOpenKeyset
    '如果查询出值,则按扣的计算状态为已计算
    'If rs.RecordCount > 0 Then
    '    HasChanged = True
    'End If
    C_From.Text2.Text = rs.Fields(0).value
    For i = 0 To C_From.Text1.Count - 1
        C_From.Text1(i).Text = rs.Fields(i + 1).value
    Next i
    rs.Close
    inerr:
    Set rs = Nothing
    End Function
      

  3.   

    先收藏 一会回去看 再网吧了 没有太多MONEY 感谢啊还有什么好建议啊 我晚上再来 先走了
      

  4.   

    再补充一下 我的问题也就是 “如何用VB编写操作、访问数据库的Active DLL”
      

  5.   

    唉  怎么没有人愿意帮忙吗? 再等一天 结帐 谢谢 free_eyes
      

  6.   

    用ADO不一定写类或DLL来做。
    就像楼上提供的每个操作写成一个函数不是也很好吗??!!我有一个ADO类。
    你的邮箱是什么?我发给你