会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > 模块函数VBA > 正文

利用拆分后的后端数据库保存不同年份的数据

时间:2004-01-09 10:15 来源:本站原创 作者:wxjgw 阅读:

面向:初学者
目的:如果一年的数据较多,希望在分年的数据库中保存数据
知识点:1.数据库拆分
    2.文件查找技术
    3.文件复制
    4.链接表的刷新
步骤: 1.将一些每年都要使用(修改,添加等)的表的名称前两个字母改为共同的(如:Or_业务人员名单,Or_收货人名单等),注意不要是"MS","SW","US"等系统要使用的字母
    2.将数据库拆分(假如前端名称为:出口业务记录.mdb,后端名称为:出口业务记录_dataOrigin.mdb
    3.在启动窗体(假如名称为:窗体1)中建立一文本框(假如名称为:所属年份)
    4.在窗体1的Open事件和所属年份的AfterUpdate事件中调用下面的"查找文件"过程.

Public Sub 链接()
  
On Error GoTo LJ_error
  Dim TABNAME As String
  Dim Tab1 As TableDef
  Dim MyPath As String

    MyPath = Application.CurrentProject.Path
    CurrentDb.TableDefs.Refresh          '刷新当前数据库中的表对象
    If CurrentDb.TableDefs(15).Connect = ";DATABASE=" & MyPath & "\出口业务记录_data" & FORMs!窗体1!所属年份 & ".mdb" Then
    
    Exit Sub
    
    Else
    For Each Tab1 In CurrentDb.TableDefs       
                 
    TABNAME = Tab1.Name
    If Left(TABNAME, 2) <> "MS" And Left(TABNAME, 2) <> "SW" And Left(TABNAME, 2) <> "Us" Then
      If Left(TABNAME, 2) = "Or" Then
        Tab1.Connect = ";DATABASE=" & MyPath & "\出口业务记录_dataOrigin.mdb"
      Else
      Tab1.Connect = ";DATABASE=" & MyPath & "\出口业务记录_data" & FORMs!窗体1!所属年份 & ".mdb"
      End If
    Tab1.RefreshLink
    End If
  
    Next Tab1
        MsgBox FORMs!窗体1!所属年份 & "年的基础数据库连接成功!"
    End If
Exit_LJ_error:
  Exit Sub

LJ_error:
  MsgBox FORMs!窗体1!所属年份 & "年的后端数据库文件不存在!"
  Resume Exit_LJ_error
End Sub

Public Sub 查找文件()
  Dim MyPath As String
  Dim fs As Variant
  Dim TABNAME As String
  Dim Tab1 As TableDef

  MyPath = Application.CurrentProject.Path
  
  Set fs = Application.FileSearch
  With fs
  .LookIn = MyPath
  .SearchSubFolders = True
  .Filename = "出口业务记录_data" & FORMs!窗体1!所属年份 & ".mdb"
  
  If .Execute() <= 0 Then
    If MsgBox("没有" & FORMs!窗体1!所属年份 & "年的数据库,是否要创建一个?", vbYesNo) = vbYes Then
      FORMs!窗体1.FORM!版本.FORM.RecordSource = ""
      FileCopy MyPath & "\出口业务记录_dataOrigin.mdb", MyPath & "\出口业务记录_data" & FORMs!窗体1!所属年份 & ".mdb"
      Else
      FORMs!窗体1!所属年份 = Year(Now())
      MsgBox "没有" & FORMs!窗体1!所属年份 & "年的数据库!"
      Exit Sub
    End If
  End If
  End With
  链接
End Sub

   4.在窗体1的Close事件中写:
Private Sub FORM_Close()
  Dim TABNAME As String
  Dim Tab1 As TableDef
  Dim MyPath As String


    MyPath = Application.CurrentProject.Path
    CurrentDb.TableDefs.Refresh          '刷新当前数据库中的表对象
    If CurrentDb.TableDefs(15).Connect = ";DATABASE=" & MyPath & "\出口业务记录_data" & Year(Now()) & ".mdb" Then
    
      Exit Sub
    Else
      For Each Tab1 In CurrentDb.TableDefs       
                 
      TABNAME = Tab1.Name
      If Left(TABNAME, 2) <> "MS" And Left(TABNAME, 2) <> "SW" And Left(TABNAME, 2) <> "Us" Then
        If Left(TABNAME, 2) = "Or" Then
          Tab1.Connect = ";DATABASE=" & MyPath & "\出口业务记录_dataOrigin.mdb"
        Else
          Tab1.Connect = ";DATABASE=" & MyPath & "\出口业务记录_data" & Year(Now()) & ".mdb"
        End If
      Tab1.RefreshLink
      End If
    
      Next Tab1
    End If
End Sub

注意窗体一最好是没有任何绑定控件的切换面板,如果有这样的控件,在更改链接表connect属性和FileCopy之前要设置这些控件的所有***Source(如RcordSource,RowSource等)="",完成相关语句后再设置成原来的值.


希望指正!!!

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: