如何将一个ACCESS数据库表中的内容追加到另一个access数据库表中? (20分)

  • 主题发起人 主题发起人 lcl800
  • 开始时间 开始时间
L

lcl800

Unregistered / Unconfirmed
GUEST, unregistred user!
有db1.mdb和db2.mdb,现需要将db1中表user1的内容追加到db2.mdb同名的表db2中,
应该如何操作?
 
你看看ACCESS的自带帮助就有.支持直接用SQL 语句来追加记录的.
 
我也想知道,加100分!!!
 
在access中,我是用复制、粘贴来完成数据的追加,即先打开db1.mdb,复制user1,
再打开db2.mdb,选中粘贴。用不来SQL,请指教。
 
建立连接就不用说了吧
adoquery1.close;
adoquery1.sql.text:='select name from user1';
adoquery1.open;//检索db1中表user1
while not adoquery1.eof do
begin
adoquery2.close;
adoquery2.sql.text:='insert into user1 (name) values (:name)';
adoquery2.parameters.parambyname('name').value:=adoquery1.fieldbyname('name').asstring;
adoquery2.execsql;//向db2.mdb同名的表user1中写入数据
adoquery1.next;
end;
 

有简单的办法吗?
 
直接用SQL语句,看看ACCESS中的JET SQL帮助部分.
 
斑竹:
举一个例子,好吗?
 
一成:
你的方法是可行的,谢谢!
 
简单的办法就是用Bachmove控件就可以了.
 
Bachmove控件不支持ado连接
 
TO 贴主:帮助看了没有,比用循环方便多了.
我是忘了具体的语句, 不是不回答的.
 
花了半个小时,都没有找到相关的内容
用SQL搜索的
 

function datatype(var flddef:tfielddef):string;
begin
case flddef.datatype of
ftstring: result:='text('+inttostr(flddef.size)+')';
ftsmallint:result:='smallint('+inttostr(flddef.size)+')';
ftInteger: result:='integer';
ftlargeint:result:='largeint('+inttostr(flddef.size)+')';
ftBoolean: result:='yesno('+inttostr(flddef.size)+')';
ftdatetime:result:='datetime';
ftfloat:result:='float';
ftcurrency:result:='currency';
else
result:='text('+inttostr(flddef.size)+')';
end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
session.GetAliasNames(combobox1.items);
bitbtn1.Enabled :=false;
bitbtn2.enabled:=false;
bitbtn3.enabled:=false;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
session.GetTableNames(combobox1.items[combobox1.itemindex],'*.db',false,false,listbox1.items);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i:integer;
tablelist:tstringlist;
str:string;
flddef:tfielddef;
begin
table1.Databasename :=combobox1.items[combobox1.itemindex];
table1.TableName:=listbox1.items[listbox1.itemindex];
adotable1.tablename:=table1.tablename;
memo1.Lines.Clear;
tablelist:=tstringlist.create;
adoconnection1.GetTableNames(tablelist);
if tablelist.IndexOf(adotable1.tablename)<0 then
memo1.lines.add('create table '+adotable1.tablename +'(')
else
memo1.lines.add('create table '+adotable1.tablename +'new(');
table1.fielddefs.Update;
for i:=0 to table1.fielddefs.Count -1 do
begin
flddef:=table1.fielddefs;
str:=' '+table1.fielddefs.Name +' '+datatype(flddef);
if i=table1.fielddefs.count-1 then
str:=str+');'
else
str:=str+',';
memo1.Lines.Add(str);
end;
bitbtn2.Enabled :=true;
bitbtn3.enabled:=true;
end;


procedure TForm1.BitBtn2Click(Sender: TObject);
begin
adocommand1.CommandText :=memo1.Text;
adocommand1.Execute;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var
i:integer;
begin
table1.Open;
adotable1.Open;
try
while not table1.eof do
begin
adotable1.Insert;
for i:=0 to table1.FieldDefs.count-1 do
begin
with table1.fields do
adotable1.FieldByName(table1.FieldDefs.Name ).value:=value;
adotable1.post;
table1.Next;
end;
end;
finally
table1.close;
adotable1.close;
end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
bitbtn1.Enabled :=true;
end;

end.
 
多人接受答案了。
 
后退
顶部