CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

初涉delphi,50分请教一个简单问题—查询控件TADOQuery调存储过程

楼主xuehan(冬天的雪)2002-04-04 18:01:24 在 Delphi / VCL组件开发及应用 提问

有一SQL   SERVERS数据库名为:abc,存储过程名:abc_ji  
  存储过程内容:  
  CREATE   PROCEDURE   abc_ji    
  @ID   int,@name   varchar(20)   output  
  AS  
  set   @name=(select   name   from   student   where     ID=@ID)  
  GO  
   
  我要把查询结果用一个文本框显示出来,我按常规把所有属性设置好,写好代码  
  运行时老是提醒对象名abc-ji无效,那位先进能帮帮忙,最好有原代码,谢了!!  
  纯粹是学习调存储过程,书上都难找,看完了帮助还是找不出毛病。 问题点数:50、回复次数:13Top

1 楼belllab(菜鸟)回复于 2002-04-04 18:47:53 得分 0

SQL.Add('declare   @Name   varchar(20)   ');  
  SQL.Add('exec   abc_ji   :id,@Name   output   ');  
  SQL.Add('select   Ret=@Name   ');  
  Open;Top

2 楼newyj(吴刚vs西西弗)回复于 2002-04-04 19:08:11 得分 20

abc-ji无效可能是你的数据库连错了;  
  我觉得query好象不能返回一个   output类型的参数,因为他只是一个值而非一个recordset  
  最好还是用ADOStoredProc    
  设置ADOStoredProc   的ProcedureName  
  就可以看到他的参数,设置以下参数的类型  
    ADOStoredProc1.ExecProc;  
      Edit1.Text:=     ADOStoredProc1.Parameters[2].Value;  
   
   
  要用adoquery  
  CREATE   PROCEDURE   abc_ji    
  @ID   int   AS  
  select   name   from   student   where     ID=@ID  
  ---------  
  id   :=111;  
  qry.close  
  qry.sql.text   :=   'abc_ji   '+ittostr(id);  
  qry.open;  
  eidt1.text   :=qry.Fields[0].AsString;  
  qry.close;  
   
  //我已经验证过了  
  Top

3 楼xuehan(冬天的雪)回复于 2002-04-05 09:34:23 得分 0

对newyj(老鬼):老是提示我:Missing   Connection   or   ConnectionString  
  但是我显示表的记录又正确,至少不是数据库连接出错,这是什么原因?Top

4 楼zx_wang(wzx)回复于 2002-04-05 10:06:24 得分 0

返回参数的存储过程,不能用TADOQuery,必须用TADOProcedureTop

5 楼xuehan(冬天的雪)回复于 2002-04-05 10:16:16 得分 0

对zx_wang(wzx)   :谢谢你,但是我写一个存储过程进行查询,用查询控件应该能显示结果吧?怎样实现?我的存储过程已该成:  
  CREATE   PROCEDURE   abc_ji    
  @ID   int  
  AS  
  select   name   from   student   where     ID=@ID  
  Top

6 楼zx_wang(wzx)回复于 2002-04-05 10:19:31 得分 0

ADOQuery1.SQL.ADD('EXEC   @ID   =   1');  
  OK!Top

7 楼zx_wang(wzx)回复于 2002-04-05 10:22:04 得分 0

或者  
  ADOQuery1.SQL.ADD('EXEC   @ID   =   :ID');  
  Parameters['ID'].Value   :=   IntTostr(Edit1.Text);Top

8 楼forgot(忘记forgot2000)回复于 2002-04-05 10:22:33 得分 0

你的ProcedureName是不是"abc_ji;1"?去掉";1"Top

9 楼zx_wang(wzx)回复于 2002-04-05 10:27:31 得分 0

ADOQuery1.SQL.ADD('EXEC   abc_ji   @ID   =   :ID');  
  ADOQuery1.Parameters['ID'].Value   :=   IntTostr(Edit1.Text);  
  Top

10 楼xuehan(冬天的雪)回复于 2002-04-05 10:44:34 得分 0

请问各位ADOQuery1的哪些属性需设置?Top

11 楼xuehan(冬天的雪)回复于 2002-04-05 10:50:24 得分 0

执行到ADOQuery1.open;  
  还是提示:Missing   Connection   or   ConnectionString  
  没辙了,都不知道该在哪些地方设置,555555555555!!!!!  
  Top

12 楼zx_wang(wzx)回复于 2002-04-05 10:54:58 得分 30

1.ODBC  
  ADOQuery1.ConnectionString   :=   'Driver={SQL   Server};UID=sa;PWD=;Initial   Catalog=AirImport;Server=192.168.12.6'  
  2.OLEDB  
  ADOQuery1.ConnectString   :=   'Provider=SQLOLEDB.1;User   ID=sa;Password=;Initial   Catalog=AirImport;Data   Source=192.168.12.6'  
   
  强烈建议你用OLEDBTop

13 楼xuehan(冬天的雪)回复于 2002-04-05 11:33:12 得分 0

谢谢各位,马上加分!!!Top

相关问题

  • 急人。在delphi 6.0 中如何用query 控件调用一个oracle 8i 的存储过程.
  • 急人。。。在delphi 6.0 中如何用query 控件调用一个oracle 8i 的存储过程.
  • 在Delphi中使用Oracle存储过程是否必须用procedure控件?不能在query中执行?
  • 用delphi调用存储过程
  • delphi_存储过程_输出参数
  • delphi中存储过程问题。
  • delphi中存储过程问题。
  • Delphi如何读MS SERVER存储过程
  • delphi 调用存储过程!!!急!!!
  • 关于delphi调用存储过程

关键词

  • 存储过程
  • 查询
  • 数据库
  • sql
  • server
  • ji
  • adostoredproc
  • adoquery
  • abc
  • qry

得分解答快速导航

  • 帖主:xuehan
  • newyj
  • zx_wang

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo