我原来用的是文件复制,但是不能对内容做过滤。我看到有人写过这方面的语句,大致如下:
insert into 表
SELECT *
FROM [;DATABASE=c:\test.mdb;pwd=zj].表 where 条件
但是试了一下,报错,谁知道正确的可行的语句是怎么写的?
谢谢了
最好贴点delphi的代码。
...全文
1507打赏收藏
请问将access数据库中的记录导出到另外一个数据库中,在delphi中怎么写语句?
我原来用的是文件复制,但是不能对内容做过滤。我看到有人写过这方面的语句,大致如下: insert into 表 SELECT * FROM [;DATABASE=c:\test.mdb;pwd=zj].表 where 条件 但是试了一下,报错,谁知道正确的可行的语句是怎么写的? 谢谢了 最好贴点delphi的代码。
{$R *.DFM}
procedure TfrmConvertDB.btnOKClick
(Sender: TObject);
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
('请输入要插入数据的表的名称 ');
end;
end.
while not adodataset do
for i:=0 adodataset.recordcount-1 do
for j:=0 adodataset.fieldcount-1 do
begin
templist.add(adodataset.files[j].asvarian;
insertsql:= insert into 表 values(templist[0]+......);
adoquery.sql.add(insertsql);
adoquery.execsql;
end