频道栏目
首页 > 资讯 > Visual Basic > 正文

在VB中利用远程数据库的访问之应用举例

10-03-30        来源:[db:作者]  
收藏   我要投稿

  应用举例

  以上介绍了用dao访问远程数据库的具体操作,下面通过一个例子说明链接远程表和建立记录集对象的方法。

  首先建立一个新工程,在窗体上画5个命令按钮,1个数据控件和1个数据网格控件(dbgrid)。各对象的属性设置见表1。

  表1 窗体1对象属性设置

  对 象

  标 题(caption)

  名 称(name)

  窗体

  远程数据访问

  form1

  命令按钮1

  链接远程表

  cmd 链接

  命令按钮2

  添加

  cmdadd

  命令按钮3

  删除

  cmddel

  命令按钮4

  修改

  cmdmodify

  命令按钮5

  结束

  cmdend

  数据控件

  data1

  data1

  数据网格

  dbgrid1

  其中dbgrid1中的datasource属性设为data1,命令按钮2,3,4的visible属性设为false。

应用举例

  以上介绍了用dao访问远程数据库的具体操作,下面通过一个例子说明链接远程表和建立记录集对象的方法。

  首先建立一个新工程,在窗体上画5个命令按钮,1个数据控件和1个数据网格控件(dbgrid)。各对象的属性设置见表1。

  表1 窗体1对象属性设置

  对 象

  标 题(caption)

  名 称(name)

  窗体

  远程数据访问

  form1

  命令按钮1

  链接远程表

  cmd 链接

  命令按钮2

  添加

  cmdadd

  命令按钮3

  删除

  cmddel

  命令按钮4

  修改

  cmdmodify

  命令按钮5

  结束

  cmdend

  数据控件

  data1

  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 cmd 链 接_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 fo

  您正在看的VB教程是:VB中远程数据库的访问(3) 应用举例。rm_resize()

  on error resume next

  ’ 当 窗 体 调 整 时 会 调 整 网 格

  dbgrid1.height = me.scaleheight - data1.height - cmd 删 除.height - 30

  end sub

  在工程中添加一个窗体,在窗体上画6个标签,1个命令按钮(标题为“ 确认”,名称为cmd 确认),3个文本框和1个组合框。

  在窗体的声明部份输入以下代码:

  ’ 声 明 窗 体 层 变 量

  dim rodbs as database

  dim strdb as string, strrodb as string, strcn as string, strtdf as string

  dim linktdfname as string

  编 写 如 下 事 件 过 程:

  private sub cmd 确 认_click()

  on error goto errhandler:

  strdb = text2.text

  ’ 本 地 数 据 库 名 及 路 径

  linktdfname = text3.text

  ’ 本 地 数 据 库 中 新 建 的 链 接 远 程 表 的 表 名

  strcn = strrodb ’ 连 接 字 符 串

  strtdf = combo1.text ’ 指 定 远 程 数 据 库 中 要 访 问 的 表

  ’ 调 用linktable 过 程

call linktable(strdb, strrodb, strcn, strtdf, linktdfname)

  ’ 调 用rst_display 过 程

  call rst_display(strdb, linktdfname, form1)

  form2.hide

  form1.show

  form1.caption = " 远 程 数 据:" + strcn + "-" + strtdf

  ’ 显 示“ 添 加”,“ 删 除”,“ 修 改” 控 件

  form1.cmdadd.visible = true

  form1.cmddel.visible = true

  form1.cmdmodify.visible = true

  errhandler:

  select case err

  case 0

  response = 0

  case else

  msgbox (error + vbr + " 重 新 输 入")

  exit sub

  end select

  end sub

  private sub combo1_gotfocus()

  strrodb = text1.text ’ 指 定 远 程 数 据 库 名 及 路 径

  set rodbs = opendatabase(strrodb) ’ 打 开 远 程 数 据 库

  ’ 删 除combo1 中 的 内 容

  if combo1.listcount >= 1 then

  for i = combo1.listcount - 1 to 0 step -1

  combo1.removeitem i

  next i

  end if

  ’ 把 数 据 库 中 的 表 名 加 到combo1 中

  for i = 0 to rodbs.tabledefs.count - 1

  combo1.additem rodbs.tabledefs(i).name

  next i

  end sub

 

 

相关TAG标签
上一篇:用VB来实现关闭所有数据库对象的操作实例
下一篇:VB中利用远程数据库的访问之数据处理案例
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站