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

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

希望指正!!!

时间: 2024-11-03 17:08:00

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

从一个页面post过来的表单内容要怎么用数据库保存,并且每次打开后都会显示之前传过来的所有数据

问题描述 从一个页面post过来的表单内容要怎么用数据库保存,并且每次打开后都会显示之前传过来的所有数据 不太懂mysql,大概就是post过来的表单数据一个$title和$content:然后sql语言要怎么写,使这个php页面能保存每次从另一个也页面传来的这两个内容,并且每次打开后将之前传过来的所有内容都调用,以h1和p的形式显示出来.求大神贴出代码 解决方案 这和mysql没多大关系,你就搜下PHP怎么访问/保存数据库就行了,很多例子的 解决方案二: 没写过php,但是流程都是前台数据传到

这个利用sqlite写的数据库为什么退出应用后再进去数据库就无法找到了啊

问题描述 这个利用sqlite写的数据库为什么退出应用后再进去数据库就无法找到了啊 package com.sample.Sample_8_4; import android.app.Activity;import android.app.AlertDialog;import android.content.ContentValues;import android.content.DialogInterface;import android.database.Cursor;import andr

利用percona-xtrabackup快速搭建MySQL数据库主从复制

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1709183 应用场景: Linux服务器A运行MySQL服务,并开启了log-bin(log-bin = mysql-bin)和指定了server-id(server-id = 1); Linux服务器B也以与服务器A同样的方式(不同样也可以,参考下面的"注意")安装了MySQL服务,可开启log-bin

全局变量-js刷新页面后怎么能保存之前赋值的数据不丢失

问题描述 js刷新页面后怎么能保存之前赋值的数据不丢失 在jsp页面中通过js刷新页面,在刷新之前我给input标签和A标签都赋值了 以及和一些全局变量都赋值了. 我想通过js刷新之后把刚才标签或者是变量的值都保存下来,以便接下来用. 但是,现在js刷新之后上面的那些数据都丢失了. 请问有什么办法能让刷新之后还能保存住数据不丢失. 那位大神知道. 解决方案 页面无刷新调用数据(IFRAME+js) 解决方案二: 刷新后,你先查一下保存的变量中的数值是否正确? 如果正确,则需要在刷新完成后执行一下

使用数据库保存session的方法

php的session默认是以文件方式保存在服务器端,并且在客户端使用cookie保存变量,这就会出现一个问题,当一个用户由于某种安全原因关闭了浏览器的cookie,程序中的session相关操作将无法执行.因此,如果能以数据库保存session数据,将不受客户端设置的限制,并且在性能和扩展性等方面有一个飞跃.程序中使用关键函数是session_set_save_handler,同时要将php.ini里的session.save_handler = files 改为 user.这里我们讨论的环境

datagridview如何保存到数据库时不覆盖原数据

问题描述 datagridview如何保存到数据库时不覆盖原数据 我现在先从数据库里取出标准表到datagridview里, 修改完后我想将该表存到数据库里,但不覆盖原来的标准表,应该怎么做? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Tex

利用asp.net datalist绑定数据库中的图片,后台该怎么写

问题描述 利用asp.netdatalist显示数据库保存的图片,前台是这样写的:<asp:ImageID="Image1"runat="server"ImageUrl='<%#"~/picture/"+Eval("image")%>'/>,那后台该怎么写呢 解决方案 解决方案二:直接绑定在前台赋值即可解决方案三:后台:DataList1.DataSource=dt;DataList1.Databind

删除EM,强制结束EM进程后,启动数据库ORA-00119,ORA-00132报错的解决方法_oracle

通过emca -deconfig dbcontrol db -repos drop命令删除EM资料库时,很长时间没有删除完成,期间数据库连接数暴涨,达到数据库最大连接数,结果前台及后台均连接不上数据库.强制杀死EM及应用相关进程,关闭数据库后,重启数据库时报:ORA-00119,ORA-00132错误. SQL> startup; ORA-00119: invalid specification for system parameter LOCAL_LISTENER ORA-00132: syn

mysql 搜索时,怎么做拆词查询,php实验拆词我已经做到了,问题在拆了词后怎么查询数据库

问题描述 mysql 搜索时,怎么做拆词查询,php实验拆词我已经做到了,问题在拆了词后怎么查询数据库 mysql 搜索时,怎么好似百度搜索那样做查询,php拆词我已经做到了,问题在拆了词后怎么查询数据库,用的是mysql,如下图,想做到下面的效果 解决方案 不太明白问题原因?不是用like模糊查找吗? 解决方案二: 拆分为多个关键词之后就用多个Like OR Like 查询 解决方案三: 参考:http://www.linuxidc.com/Linux/2013-04/82511.htm