利用拆分后的后端數(shù)據(jù)庫保存不同年份的數(shù)據(jù)

字號:

面向:初學者
    目的:如果一年的數(shù)據(jù)較多,希望在分年的數(shù)據(jù)庫中保存數(shù)據(jù)
    知識點:1.數(shù)據(jù)庫拆分
     2.文件查找技術
     3.文件復制
     4.鏈接表的刷新
    步驟: 1.將一些每年都要使用(修改,添加等)的表的名稱前兩個字母改為共同的(如:Or_業(yè)務人員名單,Or_收貨人名單等),注意不要是"MS","SW","US"等系統(tǒng)要使用的字母
     2.將數(shù)據(jù)庫拆分(假如前端名稱為:出口業(yè)務記錄.mdb,后端名稱為:出口業(yè)務記錄_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          '刷新當前數(shù)據(jù)庫中的表對象
      If CurrentDb.TableDefs(15).Connect = ";DATABASE=" & MyPath & "\出口業(yè)務記錄_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 & "\出口業(yè)務記錄_dataOrigin.mdb"
      Else
      Tab1.Connect = ";DATABASE=" & MyPath & "\出口業(yè)務記錄_data" & FORMs!窗體1!所屬年份 & ".mdb"
      End If
      Tab1.RefreshLink
      End If
      Next Tab1
        MsgBox FORMs!窗體1!所屬年份 & "年的基礎數(shù)據(jù)庫連接成功!"
      End If
    Exit_LJ_error:
     Exit Sub
    LJ_error:
     MsgBox FORMs!窗體1!所屬年份 & "年的后端數(shù)據(jù)庫文件不存在!"
     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 = "出口業(yè)務記錄_data" & FORMs!窗體1!所屬年份 & ".mdb"
     If .Execute() <= 0 Then
      If MsgBox("沒有" & FORMs!窗體1!所屬年份 & "年的數(shù)據(jù)庫,是否要創(chuàng)建一個?", vbYesNo) = vbYes Then
      FORMs!窗體1.FORM!版本.FORM.RecordSource = ""
      FileCopy MyPath & "\出口業(yè)務記錄_dataOrigin.mdb", MyPath & "\出口業(yè)務記錄_data" & FORMs!窗體1!所屬年份 & ".mdb"
      Else
      FORMs!窗體1!所屬年份 = Year(Now())
      MsgBox "沒有" & FORMs!窗體1!所屬年份 & "年的數(shù)據(jù)庫!"
      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          '刷新當前數(shù)據(jù)庫中的表對象
      If CurrentDb.TableDefs(15).Connect = ";DATABASE=" & MyPath & "\出口業(yè)務記錄_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 & "\出口業(yè)務記錄_dataOrigin.mdb"
        Else
          Tab1.Connect = ";DATABASE=" & MyPath & "\出口業(yè)務記錄_data" & Year(Now()) & ".mdb"
        End If
      Tab1.RefreshLink
      End If
      Next Tab1
      End If
    End Sub
    注意窗體一是沒有任何綁定控件的切換面板,如果有這樣的控件,在更改鏈接表connect屬性和FileCopy之前要設置這些控件的所有***Source(如RcordSource,RowSource等)="",完成相關語句后再設置成原來的值.