着急 帮帮忙
热门软件下载:
我想把对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到底应该怎么写什么呢,迷茫中~~
谢谢指教
推荐阅读
我是直接用控件数组的方法来做的.
封装是用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 function
public 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.close
sqlupdate = 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 function
public 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
用ado不一定写类或dll来做。
就像楼上提供的每个操作写成一个函数不是也很好吗??!!
我有一个ado类。
你的邮箱是什么?我发给你
相关评论