一个简单的数据导入问题?(200分)

  • 主题发起人 主题发起人 happyfox
  • 开始时间 开始时间
H

happyfox

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI应用 中有一个PRAODOX的表DZ.DB,现希望从A:/WW.DB中导入数据实现数据的恢复,如何实现?
请详细解答200分
 
怎么没人做答啊?
帮帮兄弟?
 
BDE连接,BatchMove
或直接用SQL语句insert也可以.
最简单直接复制文件,我的备份与恢复就是这样做的
 
怎么个复制法?
我是DELPHI的新手?
 
可能有点有明白你的问题?
如果是完全恢复.
先关闭所有与DZ.DB的连接.然后
在Delphi中调用CopyFileTo.
Copies the source file to the destination file.
function CopyFileTo(const Source: string; const Destination: string): Boolean;
Parameters
const Source: string
Source file name.
const Destination: string
Destination file name.
Returns
Boolean - True if the file is copied, False on error.
Description
CopyFileTo is a function used to copy the file specified in Source to the file
specified in Destination.
CopyFileTo will return False if the file in Destination already exists.
CopyFileTo encapsulates the platform-specific calls needed to perform the
file copy operation. On the Windows platform, this is the Win32 API function
CopyFile. On the Linux platform, CopyFileTo uses a TFileStream instance to
create the destination file.
 
怎么关闭所有与DZ.DB的连接?
我不明白,请写出详细的通过最简单直接复制文件实现数据的备份与恢复的方法?
200分!!!
 
详细的,基础的东西你自己看书才能有所收获!
 
copyfileto 我知道,
但我的DZ.DB是CARMIS数据库下的一个表,在主窗口中GRID正在使用该表,如何切段连接??
谢谢!!!
 
怎么没人做答啊?
帮帮兄弟?????????????????????????
 
用datapump.exe就可以了。若在程序中可以用先关闭表即关闭与DZ.DB相关TABLE.CLOSE,再用copyfile函数。
 
如果是直接用Table连结,Table.Close关闭表;如果使用了DataBase,DataBase.Close关闭数据库连结,然后就可以CopyFile了
 
我想你的系统可能是多用户系统吧!

一般,要恢复系统的话,是要所有连接的用户都退出系统的。但是如果你只是要恢复

其中的某一个表的话,在表不大的情况下,可以采用在多用户操作时先删除所有记录,

然后导入数据的方法。
 
to happyfox:
>>在主窗口中GRID正在使用该表,如何切段连接??
将主窗口的Table或query的Cacheupdate属性设置为True就不影响数据的导入/导出了

另外, 请使用本论坛的搜索功能, 搜索关键词: batchmove




 
各位高手:
1、备份数据用copyfileto已经实现了。
恢复数据我使用copyfileto时如下语句:
copyfileto('111.db','dz.db')
*** 111.dbf为原来备份在其他磁盘上的数据文件, dz.db为数据库carMIS下的表
上属语句就是无法执行,因为dz.db文件已经存在;
是否要先删除dz.db,但我试过,也无法在程序当中删除;
请你告诉我?
///////////////////////////////////////////////////
2、
或者如何实现从111.db 表文件将数据导入 dz.db 中???
十万火急!!!!!
谢谢!!!


 
1。不能删除是因为你的程序中本窗体或其它窗体(包括报表窗体,如果你用了QuickRreport)
中有Table正在打开它, 你只要在执行form1.Table.Close再复制就没有问题了
或者如前面我所讲的, 将table和query的Cacheupdated属性设置为true;
要在table中更新数据时, 用applyupdate方法

2.用TBatchmove控件, 在Delphi6中在BDE中可以找到该控件,是和table控件放在一起的
用法很简单的

另外,库结构相同的话,可以用SQL语句

var
s: string;
begin
Query1.SQL.clear;
s:='insert into dz select * from 111';
Query1.sql.Add(s);
Query1.ExecSQL;
end;
 
后退
顶部