用ADOQUERY为何不能带参数删除??

gzrex 2002-03-21 02:22:51
DEPTID:='001';
ADOQUERY1.CLOSE;
ADOQUERY1.SQL.CLEAR;
ADOQUERY1.SQL.ADD('DELETE DEPT WHERE DEPTID=:SPDEPTID')
dept.Parameters.ParamByName('spdeptid').asstring:=deptid;
dept.ExecSQL;
请问以上代码为何不能编译。

DEPTID:='DELETE DEPT WHERE DEPTID='+'001';
ADOQUERY1.CLOSE;
ADOQUERY1.SQL.CLEAR;
ADOQUERY1.SQL.ADD(deptid)
dept.ExecSQL;
以上代码能编译,但不删除001记录。

请各位大虾释疑。
...全文
121 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzrex 2002-03-21
  • 打赏
  • 举报
回复
已解决问题,多谢各位相助。谢谢。
snowmiao2002 2002-03-21
  • 打赏
  • 举报
回复
我以前也遇到类似的问题
在使用时要有关键字from.
ADOQrySave.SQL.Clear ;
ADOQrySave.Parameters.Clear;
ADOQrySave.SQL.Add ('delete from dept where deptid='='001');
ADOQrySave.ExecSQL ;
ADOqrysave.Close ;
dream_y 2002-03-21
  • 打赏
  • 举报
回复
在dephi中的SQL语句中的数字是不能有引号的!
如果DEPTID:='001';是数字形:>DEPTID:=001;
ADOQUERY1.CLOSE;
ADOQUERY1.SQL.CLEAR;
ADOQUERY1.SQL.ADD('DELETE DEPT WHERE DEPTID=:'+inttostr(SPDEPTID));

adoquery1.Parameters.ParamByName('spdeptid').value:=deptid;
adoquery1.ExecSQL;



如果DEPTID:='001';是字符形:>DEPTID:='001';
>ADOQUERY1.CLOSE;
>ADOQUERY1.SQL.CLEAR;
>ADOQUERY1.SQL.ADD('DELETE DEPT WHERE DEPTID=:'''+SPDEPTID+'''');

>adoquery1.Parameters.ParamByName('spdeptid').value:=deptid;
>adoquery1.ExecSQL;

gzrex 2002-03-21
  • 打赏
  • 举报
回复
不行,编译时出错[Error] unit_dept.pas(98): Undeclared identifier: 'asstring'
jiaorg 2002-03-21
  • 打赏
  • 举报
回复
>不好意思,刚刚写错了,应是以下代码出问题。
>DEPTID:='001';
>ADOQUERY1.CLOSE;
>ADOQUERY1.SQL.CLEAR;
>ADOQUERY1.SQL.ADD('DELETE DEPT WHERE DEPTID=:SPDEPTID')

>adoquery1.Parameters.ParamByName('spdeptid').value:=deptid;
//修改在这里
>adoquery1.ExecSQL;

请问以上代码为何不能编译。

》DEPTID:='DELETE DEPT WHERE DEPTID='+'001';
》ADOQUERY1.CLOSE;
》ADOQUERY1.SQL.CLEAR;
》ADOQUERY1.SQL.ADD(deptid)
》dept.ExecSQL;
该成adoquery1.execsql;
Carfield 2002-03-21
  • 打赏
  • 举报
回复
DEPTID:='001';
ADOQUERY1.CLOSE;
ADOQUERY1.SQL.CLEAR;
ADOQUERY1.SQL.ADD('DELETE from DEPT WHERE DEPTID=:SPDEPTID')
ADOQUERY1.Parameters.ParamByName('spdeptid').asstring:=deptid;
ADOQUERY1.ExecSQL;
luoshumeng 2002-03-21
  • 打赏
  • 举报
回复
老兄,帮忙看一下我的问题吧,没有人回复呢,关于注册表的
luoshumeng 2002-03-21
  • 打赏
  • 举报
回复
你只用改为
ADOQUERY1.Parameters[0].asstring:=deptid;
ADOQUERY1.ExecSQL;
如果有多个参数的话就依次了
如:
ADOQUERY1.Parameters[1].asstring:=deptid;
ADOQUERY1.ExecSQL;

gzrex 2002-03-21
  • 打赏
  • 举报
回复
不好意思,刚刚写错了,应是以下代码出问题。
DEPTID:='001';
ADOQUERY1.CLOSE;
ADOQUERY1.SQL.CLEAR;
ADOQUERY1.SQL.ADD('DELETE DEPT WHERE DEPTID=:SPDEPTID') adoquery1.Parameters.ParamByName('spdeptid').asstring:=deptid;
adoquery1.ExecSQL;
请问以上代码为何不能编译。
DEPTID:='DELETE DEPT WHERE DEPTID='+'001';
ADOQUERY1.CLOSE;
ADOQUERY1.SQL.CLEAR;
ADOQUERY1.SQL.ADD(deptid) dept.ExecSQL;
以上代码能编译,但不删除001记录。 请各位大虾释疑。
jiaorg 2002-03-21
  • 打赏
  • 举报
回复

dept.Parameters.ParamByName('spdeptid').asstring:=deptid;
dept.ExecSQL;

改称

ADOQUERY1.Parameters.ParamByName('spdeptid').asstring:=deptid;
ADOQUERY1.ExecSQL;

1,660

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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