高分求助:测试成功立马给分(两个数据源)!!! (150分)

  • 主题发起人 主题发起人 myjane
  • 开始时间 开始时间
M

myjane

Unregistered / Unconfirmed
GUEST, unregistred user!
现有:
一个FOXPRO的表:(是用ODBC连接的)
一个ACCESS的表:xiao(用ADO连接的)
因为是两个不同的数据源,
错误提示:查询值的数目与目标字段中的数目不同。
代码如下:
procedure TForm1.BitBtn3Click(Sender: TObject);
var d1,e1:string;
begin
d1:=bdate.text;
e1:=edate.text;
with adoquery2 do
begin
close;
sql.Clear;
SQL.ADD('insert into xiao(khdm,mc,ono,odate,ckdm,dm,osl.odanj,ozhk,wzdj) in """odbc;dsn=awfi"');
sql.add('SELECT KH.DM,KH.MC,MM.O_NO,MM.O_DATE,MM.CKDM,YY.DM,MM.O_SL,MM.O_DANJ,MM.O_ZKE,YY.DJ');
sql.add('FROM DM_WZ YY,OUT MM,DM_KH KH');
sql.add('WHERE (kh.dm=mm.xfdm)and(YY.DM=MM.WZDM)and(mm.o_date>=:bbdate and mm.o_date<=:eedate)');
sql.add('order by mm.o_no,yy.dm');
Parameters.parambyname('bbdate').value:=strtodate(d1);
parameters.parambyname('eedate').value:=strtodate(e1);;
execsql;
end;
end;
以核对过字段的长度、类型相同
 
如果两个表结构一样的话,很简单啊。
放两个datebase连接不同的数据库,两个table,然后用batchmove转移数据。
 
扳手说的对,
还可以先读出,然后再写
 
用access选中表然后另存或导出.
 
因为是两个数据源,在下不会操作,请前辈给出代码
 
给出代码?是你在做项目还是...你难道不是来学习的吗?
 
Adoconnection连接到ACCESS上,在ADOQUERY中执行

1、不通过ODBC

Insert into wz_dm (A1,A2) in "c:/temp" "dbase 5.0;"
Select B1,B2 from wz

2、通过ODBC(数据源名为AWFI,连接到单表上的)

Insert into wz_dm(A1,A2) in "" "ODBC;DSN=awfi"
Select B1,B2 From wz

可在ACCESS中建立查询进行验证。
 
是自已用,不是做项目.
 
to:QuickSilver
提示语法错误!!!
 
以上给出代码实际上均已测试过。

另ADO是直接连接到ACCESS数据库上的,不是通过ODBC再连接的
如你是两者都通过ODBC连接的,就按照扳手兄所说的用BatchMove即可。
 
to:QuickSilver
提示子句语法错误
环境:win98se delphi5.0
 
Insert into wz_dm (A1,A2) in "c:/temp" "dbase 5.0;"
Select B1,B2 from [c:/mdb].wz
adoconnection.execute(sql);

 
在ADO+ACCESS中,注意日期的使用,请将日期转变为字符型处理应该就可以了。
 
很简单,将osl.odanj改为osl,odanj就可以了。再仔细检查字段的类型是否匹配。
快给我分分!!!
 
还是用一个数据源连吧,稳定
 
多人接受答案了。
 
后退
顶部