环境:DELPHI+access97,最好能使用ADO连接
FAQ中的回答没什么用,光一个什么SQL语句没有效果,因为我不知道该在哪里写入,谁能告诉我?
现在面临的问题是(至少我觉得是个问题),ADOConnection(connectionstring是我自定义的),只能同时和一个数据库连接,那怎么可能同时操作两个数据库呢?我觉得关键是怎么同时连接操作两个数据库。
求高人帮我,把一个ACCESS数据库中的表或者视图弄到另一个access数据库这个过程怎么操作?越详细越好。
FAQ中的回答没什么用,光一个什么SQL语句没有效果,因为我不知道该在哪里写入,谁能告诉我?
现在面临的问题是(至少我觉得是个问题),ADOConnection(connectionstring是我自定义的),只能同时和一个数据库连接,那怎么可能同时操作两个数据库呢?我觉得关键是怎么同时连接操作两个数据库。
求高人帮我,把一个ACCESS数据库中的表或者视图弄到另一个access数据库这个过程怎么操作?越详细越好。
ADOQUERY
要连接目标库
SQL里面写源库的绝对路经
在数据库中建立连接.在form中使用即可. CREATE DATABASE LINK "lk_test2" CONNECT TO "test2"
IDENTIFIED BY "test2_passwd"
USING 'test2'; insert into test2_table@lk_test2 values..... 为了使用方便可以将:test2_table@lk_test2再建一个同义词;
如果你是在一个局域网内,在SQL服务器中建立link server 指向另一台服务器,在Delphi做一个数据连接连到其中一台服务器,访问另一台服务器中的数据库,只需在SQL 语句中加入link server中连接名称既可
我还是不会把一个ACCESS数据库中的表或者视图弄到另一个access数据库里去?SQL语句我到是会写了,但是不知道写在哪.
我曾今把源数据保存为文件,但是在到入另一个ACCESS的时候报错了
select 字段1,字段2,字段3,...,字段n
from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="D:\Data1.mdb";User ID=YourUserID1;Password=YourPassword1')...表1前提是表1和表2的结构相同!!
如果表2事先不存在,可有SQL语句创建!!
写在哪?写在ADOCnection.ConnectionString()里,还是ADOCnection.Excute()里?还是ADOQuery.ConnectionString()里?
FROM OpenDataSource( 'MSDAORA.1',
'Password=;User ID=;Data Source=DEVPMIS;Persist Security Info=True')..PMIS.T_KEYOBJECT这是我用来从oracle->sql2000的,ACCESS也一样的不过建议不要用batchhmove
//且表名也固化为taHistoryData,然后将要导出的数据导入其中
procedure TForm_main.export_BitBtnClick(Sender: TObject);
var
CreateAccess:OleVariant;
str:string;
path:string;
begin
try
adoquery1.ExecSQL;
except
on E:EOleException do
if application.Messagebox('请您先打开要处理的数据文件!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
exit;
end; if adoquery1.RecordCount=0 then
begin
if application.Messagebox('没有相应的数据,无需导出!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
exit;
end; savedialog1.FileName:=file_name_default;
savedialog1.InitialDir:=s_ini;
if savedialog1.Execute then
begin
path:=savedialog1.FileName;
//创建一个空的Access数据库
try
CreateAccess:=CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+path);
except
on Err:EoleException do
begin
if Pos('数据库已经存在',Err.Message) > 0 then
if application.Messagebox('同名文件已经存在,导出失败!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
exit
else
if application.Messagebox('文件创建失败!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
exit;
end;
end; with datamodule2 do
begin
adoconnection1.Close;
adoconnection1.LoginPrompt:=false;
adoconnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+path;
adoconnection1.Open;
end; //拷贝数据
try
with adoquery2 do
begin
Connection:=DataModule2.ADOConnection1;
//拷贝taAddresses表
sql.Clear;
str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taAddresses from '+ExtractFileName(s_ini)+'.taAddresses';
SQL.Add(str);
ExecSQL;
//拷贝taCustomers表
sql.Clear;
str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taCustomers from '+ExtractFileName(s_ini)+'.taCustomers';
SQL.Add(str);
ExecSQL; //拷贝taHistoryData表
sql.Clear;
str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taHistoryData from '+ExtractFileName(s_ini)+'.taHistoryData '+sql_str;
SQL.Add(str);
ExecSQL; //拷贝taJob表
sql.Clear;
str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taJob from '+ExtractFileName(s_ini)+'.taJob';
SQL.Add(str);
ExecSQL;
//拷贝taProjects表
sql.Clear;
str:='select * into '+ExtractFileName(savedialog1.FileName)+'.taProjects from '+ExtractFileName(s_ini)+'.taProjects';
SQL.Add(str);
ExecSQL; except
on e:EOleException do
if application.Messagebox('导出失败!原数据库内有数据表丢失,请先核对!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
exit;
end;
adoquery1.first;
if application.Messagebox('数据导出完毕!','提示',mb_Ok+mb_defbutton1+mb_iconquestion+mb_systemmodal)= idOk then
exit;
end
else
exit;end;