三、应用举例
以上介绍了用dao访问远程数据库的具体操作,下面通过一个例子说明链接远程表和建立记录集对象的方法。 逆@风@者
首先建立一个新工程,在窗体上画5个命令按钮,1个数据控件和1个数据网格控件(dbgrid)。各对象的属性设置见表1。
表1 窗体1对象属性设置
对 象
标 题(caption)
名 称(name)
窗体
远程数据访问
form1
命令按钮1
链接远程表
cmdlink
命令按钮2
添加
cmdadd
命令按钮3
删除
cmddel
命令按钮4
修改
cmdmodify
命令按钮5
结束
cmdend
数据控件
data1
数据网格
dbgrid1
其中dbgrid1中的datasource属性设为data1,命令按钮2,3,4的visible属性设为false。
三、应用举例
编写如下事件过程:
private sub cmdadd_click() ' 添 加 记 录 子 过 程
on error goto errhandler
with rst
.addnew
for i = 0 to .fields.count - 1 ' 遍 历 记 录 集 中 的 每 个 字 段
' 在 输 入 框 中 输 入 各 字 段 的 数 据
.fields(i).value = inputbox
(" 输 入 记 录 信 息" & VBcr " 字 段 名:" .fields(i).name)
next i
.update
end with
data1.refresh
dbgrid1.rebind
errhandler: ' 错 误 处 理
select case err
case 3022, 3421
msgbox (error VBcr " 输 入 无 效")
exit sub
case else
response = 0
exit sub
end select
end sub
private sub cmddel_click() ' 删 除 记 录 过 程
on error goto errhandler
begintrans ' 事 务 处 理
with data1.recordset
if .bof and .eof then exit sub
' 如 果 没 有 记 录, 退 出 过 程
.delete ' 删 除
if .bof and .eof then
' 如 果 没 有 记 录, 退 出 过 程
exit sub
elseif .eof then .movelast
' 如 果 删 除 的 是 最 后 一 条 记 录, 光 标 移 至 最 后 一 记 录
else: .movenext
' 移 至 下 一 条 记 录
end if
end with
if msgbox(" 确 实 要 删 除 这 一 记 录 ?",
vbquestion vbyesno) = VByes then
committrans ' 确 认
data1.refresh
else
rollback ' 撤 消 改 动
data1.refresh
end if
errhandler: ' 错 误 处 理
select case err
case 3021 ' 无 当 前 记 录
msgbox (" 无 当 前 记 录, 请 选 择 要 删 除 的 记 录")
exit sub
case else
msgbox (error)
exit sub
end select
end sub
private sub cmdend_click()
end ' 结 束 应 用 程 序
end sub
private sub cmdmodify_click()
dbgrid1.allowupdate = true ' 允 许 修 改
end sub
privatev sub cmdlink_click()
form1.hide
form2.show
end sub
private sub dbgrid1_aftercolupdate(byval colindex as integer)
' 数 据 修 改 后 触 发 该 事 件
on error goto err1
data1.refresh
err1:
select case err
case 0
response = 0
case else
exit sub
end select
end sub
private sub dbgrid1_beforecolupdate
(byval colindex as integer, oldvalue as variant, cancel as integer)
' 数 据 修 改 前 触 发 该 事 件
on error goto errhandler:
begintrans
if msgbox(" 确 实 要 修 改这 一 内 容 ?", vbquestion vbyesno) = VByes then
committrans
else
rollback
data1.refresh
end if
errhandler:
select case err
case 0
response = 0
case else
msgbox (error)
exit sub
end select
end sub
private sub form_load()
' 在 窗 体 装 入 时, 网 格 中 的 数 据 不 可 添 加, 修 改
dbgrid1.allowaddnew = false
dbgrid1.allowupdate = false
end sub
private sub form_resize()
on error resume next
' 当 窗 体 调 整 时 会 调 整 网 格
dbgrid1.height = me.scaleheight - data1.height - cmddel.height - 30
end sub
在工程中添加一个窗体,在窗体上画6个标签,1个命令按钮(标题为“ 确认”,名称为cmd 确认),3个文本框和1个组合框。
本文章更多内容:1 - 2 - 下一页>> |