将paradox改用MSSQL后,查询语句出了问题!(很菜的问题,40分相送)

bibleboy 2001-11-25 10:03:58
Delphi5+MSSQL2000
数据库连接是BDE的ODBC通道
TEdit,TButton,TDBGrid,TQuery进行多表查询

按钮单击事件写法如下:
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('select 读者号,读者姓名,书号,书名,借书日期,状态');
Query2.SQL.Add('from book,borrow,reader');
Query2.SQL.Add('WHERE 读者号 = : sbookstore1 AND ');
Query2.SQL.Add('borrow.书号 = book.书号 AND ');
Query2.SQL.Add('borrow.读者号 = reader.读者号');
Query2.SQL.Add('ORDER BY 状态 DESC, 借书日期 DESC');
Query2.ParamByName('sbookstore1').Asstring:= edit2.text;
Query2.PREPARE;
Query2.ExecSQL;
Query2.Active:=True;

运行结果报错:Query2:Parameter 'sbookstore1' not found

另:原先采用Paradox做数据库,程序运行正确。
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hellowbh 2001-11-25
  • 打赏
  • 举报
回复
: sbookstore1 你的参数和:中间有空格。 去掉空格就可以了。
gmc007 2001-11-25
  • 打赏
  • 举报
回复
在多表查询的时候,你应该这样:
表名.字段名
bibleboy 2001-11-25
  • 打赏
  • 举报
回复
另外,单表查询时,以下例子是正确的。大家帮我up呀!!

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from book');
Query1.SQL.Add('where 书号=:sbookstore');
query1.ParamByName('sbookstore').Asstring:= edit1.text;
Query1.PREPARE;
Query1.ExecSQL;
Query1.Active:=True;
edit1.text:='';
thedream 2001-11-25
  • 打赏
  • 举报
回复
楼上老兄:这你都看得出来~厉害

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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