ADOQuery如何更新一条记录?

vc_tapi 2004-07-30 08:58:59
with ProfileFrm.ADOQuery Do Begin
close;
SQL.Clear;
SQL.Add('UPDATE Contacts_General SET First=:first, ');
SQL.Add(' Middle = :mid ,');
SQL.Add(' Last = :last ,');
SQL.Add(' Nickname = :nick ,');
SQL.Add(' Title = :title ,');
SQL.Add(' Suffi = :suf ,');
SQL.Add(' Photo = :pho ');
SQL.Add(' WHERE ID= :id ');

Parameters.ParamByName('first').value:=ProfileFrm.prof.general.First;
Parameters.ParamByName('mid').value:=ProfileFrm.prof.general.Middle;
Parameters.ParamByName('last').value:=ProfileFrm.prof.general.Last;
Parameters.ParamByName('nick').value:=ProfileFrm.prof.general.Nickname;
Parameters.ParamByName('title').value:=ProfileFrm.prof.general.Title;
Parameters.ParamByName('suf').value:=ProfileFrm.prof.general.Suffi;
Parameters.ParamByName('pho').value:=ProfileFrm.prof.general.Photo;
Parameters.ParamByName('id').value:=ProfileFrm.prof.tag;
ExecSQL;
end;
提示语法不对!数据库ACCESS 2000
...全文
233 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vc_tapi 2004-07-31
  • 打赏
  • 举报
回复
搞定了,原来First, Middle和Last都是关键字,尽管Access中更新没有问题,但是在程序的SQL语句中要加[]

揭帖!
vc_tapi 2004-07-31
  • 打赏
  • 举报
回复
ProfileFrm.prof.general不过是一个结构而已。改为一下代码还是UPDATE语句的语法错,我晕了,以前写过一个insert语句没有问题啊,现在更新有问题了。
var
first,mid,last,nick,title:string;
suf,pho,id:string;
begin
first:=' first';
mid:='mid';
last:='last';
nick:='nick';
title:='pro';
id:='11';

ADOQuery1.close;
ADOQuery1.SQL.Clear;
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Apa.mdb;Persist Security Info=False';

ADOQuery1.SQL.Text:='UPDATE Contacts_General SET First='''+first+''' ,Middle='''+mid+''', Last='''+last+''' ,Nickname='''+nick+''' WHERE ID='''+id+'''';

ADOQuery1.ExecSQL;
neo40 2004-07-31
  • 打赏
  • 举报
回复
好象很简单的问题,怎么被你写的这么费劲。
longtusoft 2004-07-30
  • 打赏
  • 举报
回复
Parameters.ParamByName('first').value:=ProfileFrm.prof.general.First;
Parameters.ParamByName('mid').value:=ProfileFrm.prof.general.Middle;
Parameters.ParamByName('last').value:=ProfileFrm.prof.general.Last;
Parameters.ParamByName('nick').value:=ProfileFrm.prof.general.Nickname;
Parameters.ParamByName('title').value:=ProfileFrm.prof.general.Title;
Parameters.ParamByName('suf').value:=ProfileFrm.prof.general.Suffi;
Parameters.ParamByName('pho').value:=ProfileFrm.prof.general.Photo;
Parameters.ParamByName('id').value:=ProfileFrm.prof.tag;
改成:
Parameters.ParamByName('first').value:= Fields[0].value ;
依此类推!
搞不明白你的PROFILEFRM.PROF.GENERAL是些什么东东.
vc_tapi 2004-07-30
  • 打赏
  • 举报
回复
Delphi6 Delphi7都一样
vc_tapi 2004-07-30
  • 打赏
  • 举报
回复
很奇怪阿,把空格去掉以后还是不行。错误是EOleException,'UPDATE语句的语法错误'。

此SQL语句是我在ACCESS中测试通过的。

ParamByName('first').asstring 不存在asstring这个域

在XP和win2000都一样
lionlsl 2004-07-30
  • 打赏
  • 举报
回复
ParamByName('first').value不对,就写成ParamByName('first').asstring//此处应为字段的类型!~
pilicat 2004-07-30
  • 打赏
  • 举报
回复
1、把生成的SQL弄到Access中看看可不可以,方法:ProfileFrm.ADOQuery.SQL.SaveToFile('C:\abc.txt');打开c:\abc.txt文件,在Access2000中运行看看行不行。

2、把出错信息写出来看看。
capoatguitar 2004-07-30
  • 打赏
  • 举报
回复
数据库也有糊涂的时候!!!
jinjazz 2004-07-30
  • 打赏
  • 举报
回复
应该没问题,是数据库提示还是delphi提示?你把等号两边的空格都去掉看看

2,497

社区成员

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

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