请问:在VB中如何方便的将access数据库中一个表的数据拷贝到另一个表中?

简单 2003-05-21 02:53:23
数据库维护中,可以在datagrid中对数据表中的初始数据进行修改、删除、添加纪录。access数据库中有初始数据的备份,如果我想恢复初始数据,想把备份表中的数据全部copy的原来的表中,请问怎么拷贝比较方便?

谢谢大家!
...全文
85 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
koa3000 2003-05-21
  • 打赏
  • 举报
回复

insert into table_current from select * from table_backup
koa3000 2003-05-21
  • 打赏
  • 举报
回复

insert in table_current from select * from table_backup
简单 2003-05-21
  • 打赏
  • 举报
回复
对呀,可以用delete把表里的记录清空
怎么再把另一个表的数据导入这个表中呢?
Wonny 2003-05-21
  • 打赏
  • 举报
回复
试试这样行不行:
delete * from table_current
select into ...
sealy 2003-05-21
  • 打赏
  • 举报
回复
关注表的复制生成问题!!
存取对象变量库结构作为一个功能较完备的Windows软件开发平台,Visual Basic专业版提供了对数据应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据存取对象变量(Data Access Object Variable),直接调用ODBC 2.0 API接口函数等三种访问数据的方法。对其标准内置的Ms Access数据,它可以提供不弱于专业数据软件的支持,可以进行完整的数据维护、操作及其事务处理。在VB,将非Access数据称为外来数据。对于FoxPro、dBASE、Paradox等外来数据。虽然借助VB的Data Manager 能够对这些数据进行NEW、OPEN、DESIGN、DELETE等操作,但在应用程序的运行状态并不能从底层真正实现这些功能。本文从使用数据存取对象变量的方法出发,实现了非Access格式数据(以FoxPro数据为例)的建新库、拷贝数据结构、动态调入等操作,阐述了从编程技巧上弥补VB对这些外来数据支持不足的可行性 。 一 、 VB数据的体系结构具体的VB数据结构。 VB数据的核心结构是所谓的MicroSoft JET数据引擎,JET引擎的作用就像是一块"面 板",在其上可以插入多种ISAM(Indexed Sequential Access Method,即索引顺序存取方 法) 数据驱动程序。JET引擎为Access格式数据提供了直接的内部(build-in)支持,这就是VBAccess数据具有丰富支持的真正原因。 VB专业版提供了FoxPro、dBASE(或 Xbase)、Paradox、Btrieve等数据的ISAM驱动程序,这就使得VB能支持这些数据格 式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB能支持所有兼容ISAM的数据格式(前提是只需获得这些数据的ISAM驱动接口程序)。 由上可见,Ms JET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据的外部接口;为应用代码提供的内部接口。实际上,在VB从一种数据类型转化为另一种数据类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL (Data Definition Language,即数据定义语言)和DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。 从VB的程序代码的角度来看,ODBC,ISAM驱动程序以及Ms Access数据的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给VB应用程序员的记录集对象视图同所使用的数据格式及类型是相互独立的。即对FoxPro等数据仍然可以使用众多的数据存取对象变量,这就为非Access数据的访问提供了最重要的方法。   二 、使用非Access数据时的参数设置及配置文件的参数读取如果在VB的程序使用了数据的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置 (.INI)文件,在INI文件可以对不同类型的数据进行设置。如果找不到这个INI文件, 将会导致不能访问数据。通常情况下,INI文件的文件名和应用程序的名称相同,所以如果没有指明,VB的程序会在Windows子目录去找和应用程序同名的INI文件。可以使用VB的SetDataAccessOptions语句来设置INI文件。 SetDataAccessOptions语句的用法如下:SetDataAccessOptions 1 ,IniFileName其IniFileName参数指明的是INI文件的带路径的文件名。值得注意的是,当应用程序找不到这个INI文件时,或在调用 OpenDataBase函数时对其Connect参数值没有设定为VB规定的标准值,如对FoxPro 2.5格式设定为了" FoxPro;"(应为" FoxPro 2.5; "),或者没有安装相应的ISAM驱动程序,则此时VB会显示一条错误信息" Not Found Installable ISAM "。通常,INI文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序自己生成。 通常这种 INI文件有" [Options]"、"[ISAM]"、" [Installed ISAMs]"、"[FoxPro ISAM]"、"[dBASE ISAM] " 、" [Paradox ISAM] "等设置段,对于一个完整的应用程序则还应有一个属于应用 程序自己的设置段如" [MyDB]”。可在其设置DataType、Server、DataBase、 OpenOnStartup、DisplaySQL、QueryTimeOut等较为重要的数据参数,并以此限定应用程序一般的运行环境。 Windows API接口函数在Kernel.exe动态链接库提供了一个OSWritePrivateProfileString函数,此函数能按Windows下配置文件(.INI)的书写格式写入信息。 在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如PageTimeOut(页加锁超时时限)、MaxBufferSize(缓冲区大小)、LockRetry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。 设此应用程序的配置文件为MyDB.INI,则具体过程如下:Funtion GetINIString$( Byval Fname$ ,Byval szItem$ ,Byval szDeFault$ ) ' 此自定义子函数实现INI 文件内设置段内参数的读取Dim Tmp As String,x As Integer Tmp = String( 2048,32 ) x = OSGetPrivateProfileString(Fname$,szItem$ , szDefault$,Tmp,Len(Tmp) ," MyDB.INI " ) GetINIString = Mid$( Tmp,1,x ) EndFunction以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内Declare Function OSGetPrivateProfileString% Lib "Kernel" Alias "GetPrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal ReturnString$, ByVal NumBytes As Integer, ByVal FileName$) Declare Function OSWritePrivateProfileString% Lib "Kernel" Alias "WritePrivateProfileString" (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$) Declare Function OSGetWindowsDirectory% Lib "Kernel" Alias "GetWindowsDirectory" (ByVal a$, ByVal b%) Sub Form1_Load( ) Dim st As String Dim x As Integer Dim tmp As String tmp = String$( 255, 32 ) ' INI文件内为各种数据格式指明已安装的相应ISAM驱动程序x = OSWritePrivateProfileString(" Installable ISAMS", "Paradox 3.X", "PDX110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE III", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "dBASE IV", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.0", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "FoxPro 2.5", "XBS110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "Installable ISAMS", "Btrieve", "BTRV110.DLL", "MyDB.INI" ) x = OSWritePrivateProfileString( "dBase ISAM", "Deleted", "On", "MyDB.INI" ) ' 指明 INI文件的位置x = OSGetWindowsDirectory( tmp, 255 ) st = Mid$( tmp, 1, x ) SetDataAccessOption 1, st + "\mydb.ini" '获得INI文件一些参数 gwMaxGridRows = Val(GetINIString( " MyDB.INI " ,"MaxRows", "250" )) glQueryTimeout = Val(GetINIString( " MyDB.INI " ,"QueryTimeout", "5" )) glLoginTimeout = Val(GetINIString( " MyDB.INI " ,"LoginTimeout", "20" )) End Sub   三 、数据存取对象变量对外来数据编程的方法及其实例在VB专业版数据编程的三种方法,第二种-使用数据存取对象变量(DAO)的方法最具有功能强大、灵活的特点。 它能够在程序存取ODBC 2.0的管理函数;可以控制多种记录集类型:Dynaset,Snapshot 及Table记录集合对象;可以存储过程和查询动作;可以存取数据集合对象,例如 TableDefs,Fields,Indexes及QueryDefs;具有真正的事物处理能力。因而,这种方法对数据处理的大多数情况都非常适用。 由于VB的记录集对象与所使用的数据格式及类型是相互独立的,所以在非Access数据也可以使用数据存取对象变量的方法。因而 对FoxPro等外来数据而言,使用数据存取对象变量的方法同样也是一种最佳的选择。 有一点需要注意的是,VB的标准版仅能使用数据控件(Data Control)对数据的记录进行访问,主要的数据存取对象也仅有Database、Dynaset对象可通过数据控件的属 性提供,其它的重要对象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在VB的标准版生成,所以使用数据存取对象变量的方法只能用VB 3.0以上的专业版。 (一)、非Access数据的新建及库结构的修改VB专业版数据存取对象变量可以分为两类,一类用于数据结构的维护和管理,另一类用于数据的存取。其数据结构时可以使用下面的对象: DataBase、TableDef、Field、Index,以及三个集合 (Collection): TableDefs、Fields和Indexes 。每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。一旦数据对象建立后,就可以用它对数据的结构进行修改和数据处理。对于非Access数据,大部分都是对应于一个目 录,所以可以使用VB的MkDir语句先生成一个目录,亦即新建一个数据。而每一个Access数据文件可看作是此目录下的一个数据(Table),但实际上它们是互相独立的。 下面是新建一个FoxPro 2.5格式数据的程序实例。 Sub CreateNew ( ) Dim Db1 As database , Td As TableDefs Dim T1 As New Tabledef , F1 As New Field , F2 As New Field , F3 As New Field Dim Ix1 As New Index Dim Path As String Const DB_TEXT = 10 , DB_INTEGER = 3 ChDir "\" Path$ = InputBox( " 请输入新路径名: ", "输入对话框" ) MkDir Path$ ' 新建一个子目录Set Db1 = OpenDatabase(Path$, True, False, "FoxPro 2.5;") Set Td = Db1.TableDefs T1.Name ="MyDB" '新建一个数据数据名为MyDB F1.Name = "Name" , F1.Type = DB_TEXT , F1.Size = 20 F2.Name = "Class" , F2.Type = DB_TEXT , F2.Size = 20 F3.Name = "Grade" , F3.Type = DB_INTEGER T1.Fields.Append F1 '向数据添加这些字段T1.Fields.Append F2。
光盘使用说明 1.光盘位置说明 (1)在本书的每一章节,如果该章节有示例或实例,在章节前的“函数名称栏”(如图1所示)将给出示例或实例在光盘的具体位置,根据这个实例位置,在光盘可以找到相对应的示例或实例源程序。 Randomize函数 实用程度:★★★☆☆ 实例位置:光盘\mingrisoft\10\01 图1 (2)如果图1的实例位置为“无”,则示该函数在光盘没有给出示例或者实例。 光盘的示例或实例存放的具体路径如图2所示。 图2 2.运行环境设置 光盘的所有程序是在Windows 2003下开发的,程序测试环境为Windows2000和WindowsXP和Windows2003。用户在Windows 98、Windows 2000、Windows2003和Windows XP下都可使用光盘的程序。 3.源程序使用方法 如果用户要使用源程序,计算机除了满足上面要求的配置外,还需要完成如下工作。 (1)在系统上安装Visual Basic 6.0。 (2)使用本书源程序时,请将该文件夹下的所有文件拷贝到计算机硬盘上,并去掉所有文件的只读属性。 (3)如果后台数据为SQLServer2000,请在系统上安装SQLServer2000。并且附加相应的数据文件,附加方法请参照下一小节。 (4)光盘的部分示例程序只给出了程序代码,并没有演示效果,如想实现某一具体的效果,请读者独立思考完善。如在讲解部分语句时,只给出了语句的使用方法和思路,并没有给出更深一步的应用,因此无法演示其应用的效果。 4.使用数据Access数据 本书的部分实例应用到了Access数据数据文件放在与程序相同的目录下,实例程序能够自动识别数据路径,无须读者做任何配置工作。 注意:请不要随意改动Access数据文件的路径,如果要改动,请将数据文件与程序文件放在同一路径下,以免程序运行时,找不到数据。  SQL Server2000数据 本书的少量实例还应用到了SQL Server2000数据。使用程序时应首先在SQL Server2000的企业管理器安装数据,然后在使用该实例,详细说明参见示例文件夹的使用说明书。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧