Office中国论坛/Access中国论坛

标题: [讨论]请高手完成代码中缺少的窗体!!重新定位链接表二步走 [打印本页]

作者: secowu    时间: 2005-7-18 20:29
标题: [讨论]请高手完成代码中缺少的窗体!!重新定位链接表二步走
【摘】重新定位链接表二步走  









[ kevindeng  2003年7月20日,阅读人数193人 ]









尽管Accxp网上有很多关于定位链接表的贴子,但还是有很多的朋友询问这方面的问题。应letter网友的提议,结合Alex总版主的重新定位链接表文件源码,现将这方面的具体操作介绍如下:

假设前台数据库文件名为frontBase.mdb

后台数据库文件名为backData.mdb

frontBase当中有链接表tbl1, tbl2, tbl3, …,链接到backData.mdb中

首先我们要在前台数据库文件的启动窗体加载事件中判断链接是否正确,方法是打开任意一个链接表,假设为tbl1,代码如下:









Public Function CheckLinks() As Boolean

' 检查到后台数据库的链接;如果链接存在且正确的话,返回 True 。  

  Dim dbs As Database, rst As DAO.Recordset  

  Set dbs = CurrentDb()

  ' 打开链接表查看表链接信息是否正确。

  On Error Resume Next

  Set rst = dbs.OpenRecordset(“tbl1”)

  rst.Close

  ' 如果没有错误,返回 True 。

  If Err = 0 Then

    CheckLinks = True

  Else

    CheckLinks = False

  End If  

End Function




启动窗体的加载事件:













Private Sub FORM_Load()

If CheckLinks = False then

Docmd.OpenFORM "frmConnect"

End If

End Sub




frmConnect 连接窗体如下图



接下来的事情就是如何刷新链接表了。

上面的窗体右边的按钮是用用来调用API打开文件对话框,具体代码如下:













Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Boolean  





Type OPENFILENAME

  lStructSize As Long

  hwndOwner As Long

  hInstance As Long

  lpstrFilter As String

  lpstrCustomFilter As String

  nMaxCustFilter As Long

  nFilterIndex As Long

  lpstrFile As String

  nMaxFile As Long

  lpstrFileTitle As String

  nMaxFileTitle As Long

  lpstrInitialDir As String

  lpstrTitle As String

  flags As Long

  nFileOffset As Integer

  nFileExtension As Integer

  lpstrDefExt As String

  lCustData As Long

  lpfnHook As Long

  lpTemplateName As String

End Type


Private Sub FileOpen_Click()

  Dim ofn As OPENFILENAME

  Dim rtn As String


  ofn.lStructSize = Len(ofn)

  ofn.hwndOwner = Me.hwnd

 

  ofn.lpstrFilter = "数据库文件 (*.mdb)" & vbNullChar & "*.mdb"

  ofn.lpstrFile = Space(254)

  ofn.nMaxFile = 255

  ofn.lpstrFileTitle = Space(254)

  ofn.nMaxFileTitle = 255

  ofn.lpstrInitialDir = CurrentProject.Path

  ofn.lpstrTitle = "后台数据文件为"

  ofn.flags = 6148


  rtn = GetOpenFileName(ofn)

 

  FileName.SetFocus

  If rtn = True Then

    FileName.Text = ofn.lpstrFile

    FileName.Text = FileName.Text

    OK.Enabled = True

  Else

    FileName.Text = ""

  End If

End Sub




连接按钮刷新链接表,代码如下:













Private Sub OK_Click()

Dim tabDef As TableDef

For Each tabDef In CurrentDb.TableDefs

If Len(tabDef.Connect) > 0 Then

tabDef.Connect = ";DATABASE=" & Me.FileName.Text & "WD=" + 后台数据库密码

tabDef.RefreshLink

End If

Next

MsgBox "连接成功!"

DoCmd.Close acFORM, Me.Name

End Sub


其实很简单只有两步,判断链接是否正确和刷新链接表。







[此贴子已经被作者于2005-7-18 17:24:47编辑过]


作者: secowu    时间: 2005-7-18 20:52
我想使用这作为管理链接表的一个很好补充但我没能力还原这位高人的缺少的那个窗体希望有达人相助谢谢
作者: secowu    时间: 2005-7-18 23:36
以下是引用secowu在2005-7-18 12:52:00的发言:



我想使用这作为

管理链接表的一个很好补充

但我没能力还原

这位高人的缺少的那个窗体

希望有达人相助

谢谢



求助海狸先生

虽然,有时我们一次可以设定

但还是很有用的。
作者: secowu    时间: 2005-7-19 01:26
Docmd.OpenFORM "frmConnect"

这段代码中指向的这个窗体,我想了,试了很久都没有做出来哪位达人,高手提供?谢谢
作者: xinle    时间: 2006-3-15 02:55
顶上去
作者: wwjf    时间: 2006-9-23 09:48
在哪里加用户名和密码?
作者: kevindeng    时间: 2006-9-23 17:55
这是以前在ACCXP上写的,我不是很清楚secowu为什么不能还原frmConnect窗体.今天把它重新做了一下.希望对大家有所帮助. 后台密码是1234

[attach]20522[/attach]

作者: ok003    时间: 2006-12-6 08:22
终于找到你了!!我的天啊!
作者: ok003    时间: 2006-12-6 08:29
kevindeng 是否可以把错误处理完善一下,如果不选文件或密码有错时会弹出调试窗口。
作者: ok003    时间: 2006-12-6 09:05
kevindeng  

我刚才测试了一下,如果只链接单一一个数据库还可以更新链接,

如果链接了两个后台数据库的话,就会提示错误。

不知道这个能不能解决?期待。。。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3