首页 > 开发 > 综合 > 正文

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

2024-07-21 02:12:27
字体:
来源:转载
供稿:网友


面向:初学者
目的:如果一年的数据较多,希望在分年的数据库中保存数据
知识点: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等)="",完成相关语句后再设置成原来的值.


希望指正!!!
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表