D7+Access+VF求救

liubinhua 2004-11-09 11:11:27
我用D7在Access数据库中操作一张表,(表名叫:A),然后我想把A表中的数据插入到 Visual FoxPro数据库中去,(表名:B),而且
表A中的字段有一部分和B表中相同,我想把A表中和B表中相同字段的值插入到B.DBF数据库中去,以下我的代码,但在执行的时候会报这样的错误,不懂,请各位哥哥姐姐帮帮小弟! 在此谢谢了!!!

if Application.MessageBox(pchar('确定要进行数据上报吗?'),pchar('提示'),mb_okCancel or mb_IconInformation)<>mrok then exit;
try
with adoData do
begin
close;
sql.Clear;
sql.Text:='select vcuserno,vcUserName,vcSex,vcFolk,vcfoster,vcpolity,vcdegree, '
+' cyear,vcspecialty,cclassno,dtbtime,dtetime,vchomeplace,vcfamilyaddress '
+' from studentDetail ';
open;
while not eof do
begin
with adoData2 do
begin
close;
sql.Clear;
sql.Text:='select 学号 from gBys10416 where 学号='+'"'+trim(adoData.Fieldbyname('vcuserno').AsString)+'"';
open;
end;
if adoData2.RecordCount=0 then
begin
with adoData1 do
begin
close;
sql.Clear;
sql.Text:=' insert into gBys10416(学号,考生号,准考证号,姓名,性别代码,性别,民族代码,民族,政治面貌代,政治面貌, '
+' 学历代码,学历,专业代码,专业,培养方式代,培养方式,生源所在地,生源所在00,学制,入学年份,毕业时间,毕业去向代,'
+' 毕业去向,委培定向单,委培定向00,委培定向01,接收单位隶,接收单位00,接收单位所,接收单位01,接收单位性,接收单位02,'
+' 单位申报鉴,协议书编号,毕业证号,是否一次就,是否出省就,是否师范类,备注,扩展项一,扩展项二,扩展项三,扩展项四,扩展项五) '
+' values (:variable1,:variable2,:variable3,:variable4,:variable5,:variable6,:variable7,:variable8,:variable9, '
+' :variable10,:variable11,:variable12,:variable13,:variable14,:variable15,:variable16,:variable17,:variable18,:variable19'
+' :variable20,:variable21,:variable22,:variable23,:variable24,:variable25,:variable26,:variable27,:variable28,:variable29, '
+' :variable30,:variable31,:variable32,:variable33,:variable34,:variable35,:variable36,:variable37,:variable38,:variable39, '
+' :variable40,:variable41,:variable42,:variable43,:variable44)';
parameters.ParamByName('variable1').Value := adoData.Fieldbyname('vcuserno').asstring;
parameters.ParamByName('variable2').Value := ' ';
parameters.ParamByName('variable3').Value := ' ';
parameters.ParamByName('variable4').Value := copy(adoData.Fieldbyname('vcUserName').asstring,0,12);
if trim(adoData.Fieldbyname('vcSex').asstring)='男' then
parameters.ParamByName('variable5').Value := '1'
else
parameters.ParamByName('variable5').Value := '2';
parameters.ParamByName('variable6').Value := copy(adoData.Fieldbyname('vcSex').asstring,0,2);
with adoQY do
begin
close;
sql.Clear;
sql.Text:='select cFolkNo from FolkList where vcFolkName='''+trim(adoData.Fieldbyname('vcFolk').asstring)+'''';
open;
end;
if adoQY.RecordCount>0 then
parameters.ParamByName('variable7').Value := copy(adoQY.Fieldbyname('cFolkNo').asstring,0,2)
else
parameters.ParamByName('variable7').Value := ' ';
parameters.ParamByName('variable8').Value := copy(adoData.Fieldbyname('vcFolk').asstring,0,20);
parameters.ParamByName('variable9').Value := ' ';
parameters.ParamByName('variable10').Value := copy(adoData.Fieldbyname('vcpolity').asstring,0,14);
parameters.ParamByName('variable11').Value := ' ';
parameters.ParamByName('variable12').Value := copy(adoData.Fieldbyname('vcdegree').asstring,0,10);
parameters.ParamByName('variable13').Value := ' ';
parameters.ParamByName('variable14').Value := copy(adoData.Fieldbyname('vcspecialty').asstring,0,30);
parameters.ParamByName('variable15').Value := ' ';
parameters.ParamByName('variable16').Value := copy(adoData.Fieldbyname('vcfoster').asstring,0,6);
parameters.ParamByName('variable17').Value := ' ';
parameters.ParamByName('variable18').Value := copy(adoData.Fieldbyname('vchomeplace').asstring,0,36);
parameters.ParamByName('variable19').Value := copy(adoData.Fieldbyname('cyear').asstring,0,4);
if (adoData.Fieldbyname('dtbtime').asstring)<>null then
parameters.ParamByName('variable20').Value := copy(adoData.Fieldbyname('dtbtime').asstring,0,4)
else
parameters.ParamByName('variable20').Value :=' ';
if (adoData.Fieldbyname('dtetime').value)<>null then
parameters.ParamByName('variable21').Value := copy(adoData.Fieldbyname('dtetime').asstring,0,4)
else
parameters.ParamByName('variable21').Value :=' ';
parameters.ParamByName('variable22').Value := ' ';
parameters.ParamByName('variable23').Value := ' ';
parameters.ParamByName('variable24').Value := ' ';
parameters.ParamByName('variable25').Value := ' ';
parameters.ParamByName('variable26').Value := ' ';
parameters.ParamByName('variable27').Value := ' ';
parameters.ParamByName('variable28').Value := ' ';
parameters.ParamByName('variable29').Value := ' ';
parameters.ParamByName('variable30').Value := ' ';
parameters.ParamByName('variable31').Value := ' ';
parameters.ParamByName('variable32').Value := ' ';
parameters.ParamByName('variable33').Value := ' ';
parameters.ParamByName('variable34').Value := ' ';
parameters.ParamByName('variable35').Value := ' ';
parameters.ParamByName('variable36').Value := ' ';
parameters.ParamByName('variable37').Value := ' ';
parameters.ParamByName('variable38').Value := ' ';
parameters.ParamByName('variable39').Value := ' ';
parameters.ParamByName('variable40').Value := ' ';
parameters.ParamByName('variable41').Value := copy(adoData.Fieldbyname('vcfamilyaddress').asstring,0,40);
parameters.ParamByName('variable42').Value := ' ';
parameters.ParamByName('variable43').Value := ' ';
parameters.ParamByName('variable44').Value := adoData.Fieldbyname('cclassno').asstring;
Execsql;
end;
end;
next;
end;
end;
except
on Err:Exception do
begin
gShowMessage(24,'数据上报失败!',24);
exit;
end;
end;
gShowMessage(24,'数据上报成功!',24);
adoCon.Connected:=false;
exit;
end;
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubinhua 2004-11-09
  • 打赏
  • 举报
回复
procedure TfrmdataAppear.FormCreate(Sender: TObject);
var
dbPath:string;//得到数据库路径
MyReg:TRegistry;
begin
inherited;
dbPath := ExtractFilePath(Application.ExeName);
dbPath := dbPath+'Data';
MyReg:=TRegistry.Create();
try
MyReg.RootKey:=HKEY_CURRENT_USER;
MyReg.OpenKey('\SoftWare\ODBC\ODBC.INI\ODBC Data Sources',true);
MyReg.WriteString('DBFAcc','Microsoft FoxPro VFP Driver (*.dbf)');
MyReg.OpenKey('\SoftWare\ODBC\ODBC.INI',true);
MyReg.WriteString('\SoftWare\ODBC\ODBC.INI','DBFAcc');
MyReg.OpenKey('\SoftWare\ODBC\ODBC.INI\DBFAcc',true);
MyReg.WriteString('BackgroundFetch','Yes');
MyReg.WriteString('Collate','Machine');
MyReg.WriteString('Deleted','Yes');
MyReg.WriteString('Description','');
MyReg.WriteString('Driver','C:\WINNT\System32\vfpodbc.dll');
MyReg.WriteString('Exclusive','No');
MyReg.WriteString('Null','Yes');
MyReg.WriteString('SetNoCountOn','No');
MyReg.WriteString('SourceDB',trim(dbPath));
MyReg.WriteString('SourceType','DBF');
except
on ERR1:Exception do
gShowMessage(24,err1.Message,24);
end;
MyReg.CloseKey;
MyReg.Free;

adoCon.ConnectionString := 'Provider=MSDASQL;Persist Security Info=False;Data Source=DBFAccess; '
+'Extended Properties="DSN=DBFAcc;UID=;SourceDB='+trim(dbPath)+';SourceType=DBF; '
+'Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"';
try
adoCon.Connected := true;
except
on Err:Exception do
begin
gShowMessage(26,Err.Message,26);
exit;
end;
end;
end;

我是写注册表的,用注册表建ODBC数据源,然后再用ADOConnection来连ODBC数据源的
jinjazz 2004-11-09
  • 打赏
  • 举报
回复
你换dbase驱动看看
liubinhua 2004-11-09
  • 打赏
  • 举报
回复
不要沉啊,大家能帮的就帮帮吧!!
liubinhua 2004-11-09
  • 打赏
  • 举报
回复
其实我就想求一段用AdoQuery操作DBF数据库插入的一段代码,因为我一执行我的插入时就会出现
---------------------------
Debugger Exception Notification
---------------------------
Project PMain.exe raised exception class EOleException with message '[Microsoft][ODBC Visual FoxPro Driver]Syntax error'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
jinjazz 2004-11-09
  • 打赏
  • 举报
回复
长!!

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧