数据库中数据的倒入倒出(100分)

  • 主题发起人 主题发起人 xiaoben007
  • 开始时间 开始时间
X

xiaoben007

Unregistered / Unconfirmed
GUEST, unregistred user!
InterBase数据库中数据的倒入倒出,对到出的文件格式没有要求,但是要求倒出的文件编辑后能在倒入到InterBase数据库中。
请各位有没有什么办法
 
用batchmove控件
 
../Borland/Delphi5/Help/Examples/Batchmv/batmv.dpr (D6中也有此例子)

Tbatchmove需要BDE的支持,它在ADO中不行,其步骤是:
1.设置好连接MSSQL的QUERY,假定为query  (其实可以指向任何一种数据库, 也可建ODBC DSN)
2.建立一个别名,为STANDARD的
3.一个TTABLE,类型选DBASE,连接到2建立的别名 table (其实可以指向任何一种数据库,也可建ODBC DSN)
4.BATCHMOVE的SOURCE为query,destinationN为table
5.MODE为BATCOPY
6....下面是执行代码


下面是用TBatchmove简单例子, 其实还可以更简单 ^_^

var
bachmove:Tbachmove;
table:Ttable;
Begin
Table:=TTable.Create(Application);
Table.Tablename:=DFWname;
Table.TableType:=ttDbase;
BatchMove.source:=Query;
BatchMove.Destination:=Table;
BatchMove.Mode:=batCopy;
try
batchMove.execute;
finally
bachMove.Free;
Table.free;
end;
end;
batcopy是拷贝数据原到一个表项中,如果表项不在,自动建立,如果在的话,先删除,
然后再根据数据域的结构建立。
如果是batAppend的话,将数据源的记录添加到记录表中,目标表必须存在(缺省)



下面是不用batchmove的办法:
var iField :integer;
begin
if ((edTotbl.text<>'') and
(edFromtbl.text<>''))then begin
tblSource.TableName:=edFromtbl.text;
{指定TableName}
tblDest.TableName:=edTotbl.text;
with tblSource do begin
Open; {打开老系统的表}
while EOF=FALSE do begin
{逐条记录处理}
qryInsert.SQL.Clear;
qryInsert.sql.Add
('Insert into '+edTotbl.text + '(');
for iField:=0 to dbg.FieldCount-1 do begin
qryInsert.sql.add
(dbg.Fields[iField].DisplayLabel);
if iField<>dbg.FieldCount-1 then
qryInsert.sql.add(',');
end;
qryInsert.sql.add(') values(');
for iField:=0 to dbg.FieldCount-1 do begin
{进行数据类型转换}
if dbg.fields[iField].DataType=ftInteger then
qryInsert.sql.add(inttostr
(dbg.fields[iField].asInteger));
if dbg.fields[iField].DataType=ftFloat then
qryInsert.sql.add(floattostr
(dbg.fields[iField].asFloat));
if dbg.fields[iField].DataType=ftDate then
qryInsert.sql.add(''''+datetostr
(dbg.fields[iField].asDateTime)+'''');
if dbg.fields[iField].DataType=ftString then begin
if dbg.fields[iField].asString<>'' then
qryInsert.sql.add(''''+dbg.fields
[iField].asString+'''')
else
qryInsert.sql.add('NULL');
end;
if iField<>dbg.FieldCount-1
then qryInsert.sql.add(',');
end;
qryInsert.sql.add(')');
qryInsert.ExecSQL;
{把数据插入到新系统的表中}
next;
end;
end;
tblDest.Close;
tblDest.Open;;
ShowMessage(' 转换完毕! ');
end
else
ShowMessage
('请输入要插入数据的表的名称 ');
 
可是我想把数据库的表数据倒出成*。TXT或者*.Xls文件,然后编辑后倒回。
 
这个对你有帮助
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1273065
 
后退
顶部