设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

重新定位链接表二步走

1970-1-1 08:00| 发布者: kevindeng| 查看: 1839| 评论: 0

尽管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 连接窗体如下图 

[img]f:\m.bmp[/img] 


接下来的事情就是如何刷新链接表了。 
上面的窗体右边的按钮是用用来调用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 & ";PWD=" + 后台数据库密码 
tabDef.RefreshLink 
End If 
Next 
MsgBox "连接成功!" 
DoCmd.Close acFORM, Me.Name 
End Sub 


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

最新评论

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-29 11:13 , Processed in 0.084004 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部