ADOQuery操作Access数据的问题

aqs 2009-05-04 10:35:15
Query:=TADOQuery.create(nil);//正确
Query.Connection:=dmData.ADOCon;//正确
Query.SQL.Add('delete Operator where UserName=:UserName');
Query.Parameters.ParamByName('UserName').Value :=UserName ;
Query.ExecSQL ;//执行时报错
Query.close;
Query.Free;


为什么执行时报错呢?Operator 是表
...全文
95 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshicainiao01 2009-05-05
  • 打赏
  • 举报
回复
UsName应该定于一个值;
如: if DBGridEh1.DataSource.DataSet.FieldValues['SA'] <> Null then
UserName':= DBGridEh1.DataSource.DataSet.FieldValues['SA']
Query:=TADOQuery.create(nil);//正确
Query.Connection:=dmData.ADOCon;//正确
Query.SQL.Add('delete Operator where UserName=:UserName');
Query.Parameters.ParamByName('UserName').Value :=UserName ;
Query.ExecSQL ;//执行时报错
Query.close;
Query.Free;
应该不会错.
gxgyj 2009-05-05
  • 打赏
  • 举报
回复
1.sql delete 的语法是:
DELETE [表名.*]
FROM 表名
WHERE 条件表达式

2.
楼主的SQL语句时,最好不要出现 系统保留字 一类的,比如system user password 之类,
如果要用须用[]括起来,比如[system] [user] [password]
gxgyj 2009-05-05
  • 打赏
  • 举报
回复
Q_:=TADOQuery.create(nil);
try
Q_.Connection:=dmData.ADOCon;
Q_.SQL.Add('delete from Operator where [UserName]=:UsName');
Q_.Parameters.ParamByName('UsName').Value:=UserName;
Q_.ExecSQL;
finally
Q_.Free;
end
sparklerl 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 byteh 的回复:]
引用 8 楼 aqs 的回复:
提示:语法操作(操作符丢失)在查询表达式'Operator where userName=?'中


因为按照他的赋值方式,userName参数根本就没有值。
[/Quote]

对了 你要先判断
if length(trim(UserName))<>0 then
begin
..........
end

sparklerl 2009-05-05
  • 打赏
  • 举报
回复

Query:=TADOQuery.create(nil);//正确
try
Query.Connection:=dmData.ADOCon;//正确
Query.SQL.Add('delete from Operator where UserName='+QuotedStr(UserName));
Query.ExecSQL ;//执行时报错
Query.close;
finally
Query.Free;
end
byteh 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aqs 的回复:]
提示:语法操作(操作符丢失)在查询表达式'Operator where userName=?'中
[/Quote]

因为按照他的赋值方式,userName参数根本就没有值。
byteh 2009-05-05
  • 打赏
  • 举报
回复
function TParameters.FindParam(const Value: WideString): TParameter;

返回的是TParameter类型,TParameter = class(TCollectionItem)。

你用TParameter 中的Item或者ParamValues来实现

例如
Query.Parameters.Item[0].value := ***;

Query.Parameters.ParamValues['UserName'] :=***;
7年 2009-05-05
  • 打赏
  • 举报
回复
先直接写个值试试。where userName='sa'
aqs 2009-05-05
  • 打赏
  • 举报
回复
提示:语法操作(操作符丢失)在查询表达式'Operator where userName=?'中
aqs 2009-05-05
  • 打赏
  • 举报
回复
打开了
xmfan2000 2009-05-04
  • 打赏
  • 举报
回复
dmData.ADOCon有没有打开?
aqs 2009-05-04
  • 打赏
  • 举报
回复
而且执行delete,最好用ADOQuery的ExeSQL比较好。
aqs 2009-05-04
  • 打赏
  • 举报
回复
Query是个变量名,上面有个
Var
Quer:TADOQUery;

楼上的还是不行。
aqs 2009-05-04
  • 打赏
  • 举报
回复
不行
ailp2008 2009-05-04
  • 打赏
  • 举报
回复
学习了
abcd_nonqq 2009-05-04
  • 打赏
  • 举报
回复
Query.Parameters.ParamByName('UserName').Value :=UserName ;
这是ADOquery1的属性
query1 没有这个属性的.

看这个
直接写 ADOquery1. 它就弹出属性,有就选,回车,没有也不能直接手写这样会减少出错.正确的应是
ADOquery1.SQL.Add('select * from stuinfo where 性别=:xb');
ADOquery1.Parameters.ParamByName('xb').Value:=trim(edit3.text);
ADOquery1.Open;


而 query1.
Query1.Params[0].AsString:=edit1.Text;

2,497

社区成员

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

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