求助!超简单!但我就是不全delphi+access 中用update出错

cgjxcq 2008-12-05 10:18:22
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
ADOQuery1.Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
ADOQuery1.Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
ADOQuery1.Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
ADOQuery1.Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
ExecSQL;

end;
end;

上面代码提示 update语法错误
...全文
254 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
yf520gn 2008-12-06
  • 打赏
  • 举报
回复
来晚啦~~
shuihan20e 2008-12-06
  • 打赏
  • 举报
回复
 with ADOQuery1 do
 begin
  SQL.Clear;
  SQL.Add('update 表名 set [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
 Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
 Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
 Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
 Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
 ExecSQL;
 end;
kampan 2008-12-06
  • 打赏
  • 举报
回复

procedure TForm1.Button1Click(Sender: TObject);
begin
 with ADOQuery1 do
 begin
  SQL.Clear;
  SQL.Add('update 表名 set [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
 Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
 Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
 Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
 Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
 ExecSQL;
 end;
end;
cgjxcq 2008-12-06
  • 打赏
  • 举报
回复
谢谢zhaoxiaohao大哥!的确如此!结贴!
zhaoxiaohao 2008-12-06
  • 打赏
  • 举报
回复
打错了,这句是“这样你往数据库理智型的语句也就成了update a set a='',='',c='' where id=''.”
这样你往数据库里执行的语句也就成了update a set a='',='',c='' where id=''
呵呵
zhaoxiaohao 2008-12-06
  • 打赏
  • 举报
回复
我试了试,一开始你清空sql语句(sql.clear)思路是对的,但是dbedit和ado也是关联的吧,这样你往数据库理智型的语句也就成了update a set a='',='',c='' where id=''.你可以试试,在sql.clear后再
showmessage(RzDBEdit1.Text))应该显示的是空,对吧。对于这种连接数据库的控件,用上面我写的方法就OK了,试试看!呵呵
starluck 2008-12-06
  • 打赏
  • 举报
回复


procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update 這裏要有表名 set [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
ADOQuery1.Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
ADOQuery1.Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
ADOQuery1.Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
ADOQuery1.Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
ExecSQL;

end;
end;


zhaoxiaohao 2008-12-06
  • 打赏
  • 举报
回复
不好意思,你用的控件好像是一个第三方控件,我没用过,一开始以为和edit差不多,所以说用commit提交一下,后来简单查了查,类似于dbedit吧。不知这样写能不能符合你的要求
with ADOQuery1 do
begin
try
edit;
fieldbyname('a1').Value:=dbedit1.Text;
fieldbyname('b1').Value:=dbedit2.Text;
fieldbyname('c1').Value:=dbedit3.Text;
post;
EXCEPT
ON E:EXCEPTION do
showmessage(sql.Text);
end;
end;
用于update,建议把语句写在try里,用于防止异常的错误
zqdue 2008-12-06
  • 打赏
  • 举报
回复
ADOQuery1.SQL.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update 表名 set a=:a1,b=:b1,c=:c1 where ID =:ID1');
ADOQuery1.Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
ADOQuery1.Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
ADOQuery1.Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
ADOQuery1.Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
ADOQuery1.ExecSQL;
LUJIAYU110 2008-12-06
  • 打赏
  • 举报
回复
语法错误,正确的为:
Update table_name SET column1='xxx' WHERE conditions
更改来自表table_name的字段column1里的符合conditions里的所有数据,把这些数据的值更
改于'xxx'
cgjxcq 2008-12-06
  • 打赏
  • 举报
回复
楼上可以说说具体方法吗?
rosege 2008-12-06
  • 打赏
  • 举报
回复
前段时间老是被这个语法错误搞得头大,后来用数据集来更新Edit,暂时解决了。
cgjxcq 2008-12-06
  • 打赏
  • 举报
回复
"commit一下"是什么意思?不太明!因为我是菜鸟!
zhaoxiaohao 2008-12-06
  • 打赏
  • 举报
回复
ID是自动给的,你不需要指定吧。还有你数据库字段是a、b、c、d,就不用加“[]”了,还有这种控件没用过,不知道需不需要commit一下,一会试试的
procedure TForm1.RzButton1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update a set a=:a1,b=:b1,c=:c1 where ID =:ID1');
//ADOQuery1.Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
ADOQuery1.Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
ADOQuery1.Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
ADOQuery1.Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
execsql;

end;
cgjxcq 2008-12-06
  • 打赏
  • 举报
回复
没有提示错误,但是没有修改数据成功!
yinxd6112 2008-12-06
  • 打赏
  • 举报
回复
是怎么不行,出错了还是?贴出出错提示来
cgjxcq 2008-12-06
  • 打赏
  • 举报
回复

还是不行啊!
我只是做一个实验,一个新的Project,用ADOConnection连接ACCESS数据库,用ADOQuery做数据集!
ACCESS中,只有一个表:a :共有四个字段分别是:
ID:自动/主键
a: 文本
b: 文本
c: 文本
FORM中只有4个RzDBEdit,一个TRzDBGrid,和一个TRzDBNavigator!
为什么就是不能???
请高手指教!本人是新手,!结帖之后一定送分!





unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
cxDataStorage, cxEdit, cxDBData, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxGrid, RzButton, StdCtrls, Mask, RzEdit, RzDBEdit,
ExtCtrls, RzPanel, RzDBNav, Grids, DBGrids, RzDBGrid;

type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
RzDBGrid1: TRzDBGrid;
RzDBNavigator1: TRzDBNavigator;
RzDBEdit1: TRzDBEdit;
RzDBEdit2: TRzDBEdit;
RzDBEdit3: TRzDBEdit;
RzDBEdit4: TRzDBEdit;
RzButton1: TRzButton;
procedure RzButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RzButton1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update a set [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
ADOQuery1.Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
ADOQuery1.Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
ADOQuery1.Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
ADOQuery1.Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
execsql;

end;
end;


end.
cgjxcq 2008-12-06
  • 打赏
  • 举报
回复
我只是做一个实验,一个新的Project,用ADOConnection连接ACCESS数据库,用ADOQuery做数据集!
ACCESS中,只有一个表:a :共有四个字段分别是:
ID:自动/主键
a: 文本
b: 文本
c: 文本
FORM中只有4个RzDBEdit,一个TRzDBGrid,和一个TRzDBNavigator!
为什么就是不能???
请高手指教!本人是新手,!结帖之后一定送分!
cgjxcq 2008-12-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shuihan20e 的回复:]
 with ADOQuery1 do
 begin
  SQL.Clear;
  SQL.Add('update 表名 set [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
 Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
 Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
 Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
 Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
 ExecSQL;
 end;
[/Quote]

我以改为:
begin
 with ADOQuery1 do
 begin
  SQL.Clear;
  SQL.Add('update a set [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
 Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
 Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
 Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
 Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
 ExecSQL;
 end;
end;

a 是表名,但是没有提示错误,但是没有修改数据成功!
完成后,定必送分!
eqapple 2008-12-06
  • 打赏
  • 举报
回复

procedure TForm1.Button1Click(Sender: TObject);
begin
 with ADOQuery1 do
 begin
  SQL.Clear;
  SQL.Add('update 表名 set [a]=:a1,[b]=:b1,[c]=:c1 where [ID] =:ID1');
 Parameters.ParamByName('ID1').Value := RzDBEdit1.Text;
 Parameters.ParamByName('a1').Value := RzDBEdit2.Text;
 Parameters.ParamByName('b1').Value := RzDBEdit3.Text;
 Parameters.ParamByName('c1').Value := RzDBEdit4.Text;
 ExecSQL;
 end;
end;
加载更多回复(1)

2,498

社区成员

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

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