VB使用DAO控制ACCESS链接表!
2006-05-31 11:03
399 查看
在一家使用Access开始程序的公司做项目,改进原系统成为支持Barcode的物流系统.
他们使用程序和数据分离的方法,Access的程序使用链接表指向原始表,就可以在程序中直接操作链接表就像操作本地表一样.由于将数据部署在服务器上做为生产数据库,则调试时将使用本地数据进行调试,在程序中就要频繁更改链接表的指向.以前他们都是手动进行修改很是忙烦,我看了下DAO的资料就写个小程序控制链接表.程序如下:
新增项目,引用DAO3.51,窗体上放三个TextBox,两个CommandButton,一个CommonDialog,和一个ProgressBar.编写代码如下:
Option Explicit
Private Sub cmdBrowse_Click(Index As Integer)
Me.CommonDialog1.ShowOpen
If Me.CommonDialog1.FileName <> "" Then
Me.txtPath(0).Text = Me.CommonDialog1.FileName
End If
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub cmdProcess_Click()
Dim i As Long, ok As Long, linkcount As Long
For i = 0 To 2
If Me.txtPath(i).Text = "" Then
MsgBox "请填写所有路径!", vbOKOnly + vbInformation, "提示"
Exit Sub
End If
Next
Dim db As Database
Set db = DBEngine.OpenDatabase(Me.txtPath(0).Text)
Dim t As TableDef, s1 As String, s2 As String, s3 As String
Me.ProgressBar1.Max = db.TableDefs.Count
Me.ProgressBar1.Value = 0
For Each t In db.TableDefs
Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
If t.Connect <> "" Then
linkcount = linkcount + 1
t.Connect = Replace(t.Connect, Me.txtPath(1).Text, Me.txtPath(2).Text)
Dim find As Long
find = InStr(1, t.Connect, Me.txtPath(2).Text)
On Error Resume Next
t.RefreshLink
If DAO.Errors.Count <> 0 Then
For i = 0 To DAO.Errors.Count - 1
If DAO.Errors(i).Number = "3011" Then '在目标表中未找到此表
If vbNo = MsgBox("更改链接表时发生目标表链接错误:" & vbCrLf & _
DAO.Errors(i).Description, vbYesNo + vbInformation + vbDefaultButton2, "提示") Then
On Error GoTo errHandle:
Err.Raise vbObjectError, Me.Name, "用户中断操作!"
End If
Else
Debug.Print DAO.Errors(i).Description
End If
Next
DAO.Errors.Refresh
Else
If find <> 0 Then
ok = ok + 1
End If
End If
End If
Next
MsgBox "链接表刷新完毕,数据库中总计有:" & _
Me.ProgressBar1.Max & "个数据表,其中链接表为:" & linkcount & _
"个,成功匹配操作:" & ok & "个数据表.", vbOKOnly + vbInformation, "提示"
Exit Sub
errHandle:
MsgBox Err.Number & "," & Err.Source & "," & Err.Description, vbCritical + vbOKOnly, "错误"
Me.ProgressBar1.Value = 0
End Sub
他们使用程序和数据分离的方法,Access的程序使用链接表指向原始表,就可以在程序中直接操作链接表就像操作本地表一样.由于将数据部署在服务器上做为生产数据库,则调试时将使用本地数据进行调试,在程序中就要频繁更改链接表的指向.以前他们都是手动进行修改很是忙烦,我看了下DAO的资料就写个小程序控制链接表.程序如下:
新增项目,引用DAO3.51,窗体上放三个TextBox,两个CommandButton,一个CommonDialog,和一个ProgressBar.编写代码如下:
Option Explicit
Private Sub cmdBrowse_Click(Index As Integer)
Me.CommonDialog1.ShowOpen
If Me.CommonDialog1.FileName <> "" Then
Me.txtPath(0).Text = Me.CommonDialog1.FileName
End If
End Sub
Private Sub cmdExit_Click()
Unload Me
End Sub
Private Sub cmdProcess_Click()
Dim i As Long, ok As Long, linkcount As Long
For i = 0 To 2
If Me.txtPath(i).Text = "" Then
MsgBox "请填写所有路径!", vbOKOnly + vbInformation, "提示"
Exit Sub
End If
Next
Dim db As Database
Set db = DBEngine.OpenDatabase(Me.txtPath(0).Text)
Dim t As TableDef, s1 As String, s2 As String, s3 As String
Me.ProgressBar1.Max = db.TableDefs.Count
Me.ProgressBar1.Value = 0
For Each t In db.TableDefs
Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
If t.Connect <> "" Then
linkcount = linkcount + 1
t.Connect = Replace(t.Connect, Me.txtPath(1).Text, Me.txtPath(2).Text)
Dim find As Long
find = InStr(1, t.Connect, Me.txtPath(2).Text)
On Error Resume Next
t.RefreshLink
If DAO.Errors.Count <> 0 Then
For i = 0 To DAO.Errors.Count - 1
If DAO.Errors(i).Number = "3011" Then '在目标表中未找到此表
If vbNo = MsgBox("更改链接表时发生目标表链接错误:" & vbCrLf & _
DAO.Errors(i).Description, vbYesNo + vbInformation + vbDefaultButton2, "提示") Then
On Error GoTo errHandle:
Err.Raise vbObjectError, Me.Name, "用户中断操作!"
End If
Else
Debug.Print DAO.Errors(i).Description
End If
Next
DAO.Errors.Refresh
Else
If find <> 0 Then
ok = ok + 1
End If
End If
End If
Next
MsgBox "链接表刷新完毕,数据库中总计有:" & _
Me.ProgressBar1.Max & "个数据表,其中链接表为:" & linkcount & _
"个,成功匹配操作:" & ok & "个数据表.", vbOKOnly + vbInformation, "提示"
Exit Sub
errHandle:
MsgBox Err.Number & "," & Err.Source & "," & Err.Description, vbCritical + vbOKOnly, "错误"
Me.ProgressBar1.Value = 0
End Sub
相关文章推荐
- VB使用DAO控制ACCESS链接表!
- VB 调用 DAO 与 ACCESS 里面的VBA编程的DAO交互使用详解
- TXT->Access 使用DAO数据源!(VB Code)
- VB控制EXCEL并使用SQL语句
- 在https的链接中vb使用post提交xml数据
- vb.net里使用trackbar控件控制图形
- 链接MDB,PHP使用PDO连接Access的方法
- Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role
- Nhibernate 链接Oracle10g 使用Oracle.DataAccess
- MFC使用ADO链接ACCESS的环境部署与注意事项
- Access使用宏控制程序
- VB使用ADO对象链接数据库
- [VB.NET]请问题如何使用 正值表达式 来控制使用者Textbox控件输入内容?
- 使用Windows消息控制Winamp(VB)
- VB.NET 多次读取ACCESS 建立树形时出现 链接关闭错误
- 在vb中使用Iphlpapi.dll获取网络信息 第二章 第七节 获取本机网间控制报文协议(ICMP)信息
- 100% .NET Control_使用CurrencyManager 创建一个导航条来控制DatagGrid的XNavBar控件(VB.NET).
- VB案例:DAO使用示例1
- Access使用宏控制程序 3.在宏中使用条件
- VB中Winsock控制的UDP协议的使用