with sp_skrbb do
  begin
    Close;
    ProcedureName := 'YourProc';
    Parameters[1].value := trimright(edit1.text);
    parameters[2].value := trimright(edit2.text);
    Prepared := true;
    open;

解决方案 »

  1.   

    我说过了,点击后sql里面的确已经运行了。就是dbgrid里面没有反应
      

  2.   

    需要Query的Select .
    否则将输出的结果存放在一个临时表中;
    Proc的返回值不能直接输出到dbgrid中的,
      

  3.   

    to 楼上,Proc的值可以直接输出到 Dbgrid中比如有过程CREATE procedure test asselect * from sysobjectsdelphi中调用
      AdoQuery1.Close;
      Adoquery1.sql.text := 'exec test';
      Adoquery1.open;
      

  4.   

    datasource1.dataset := sp_xjrbb  这是在属性里面定义的
    dbgrid1.datasource := datasource1 这个也是在属性里面定义的
      

  5.   

    VARYING指定作为输出参数支持的结果集(由存储过程动态构造,内容可以变化)。仅适用于游标参数。
      

  6.   

    可以的!TADOQuery/TQuery從TDataSet繼承下來的
      

  7.   

    补充一下:我的存储过程最后一句是:
    select * from #temptable
    这里的#temptable是在存储过程里面生成的。
    用上面的Tquery查询的方法提示说:没有返回纪录集。
    用存储过程TProc就没有提示,也没有数据。
    而且我返回的是纪录集,不是参数变量。
    为什么呢?
      

  8.   

    过程参数有问题
    proc.paramters.refresh;
    proc.parambyname('field1').value := ''
    ...
    proc.open
      

  9.   

    不会吧?可是我从sql的监视器上看到的执行结果是正确的。现在的问题是结果不会进到dbgrid。
      

  10.   

    将Dbgride关了,重新再打开试试
      

  11.   

    假如你的StoredProc中有多个Select语句,则DBGrid中显示的是第一个Select出来的东西。确认一下第一个Select是不是你要的数据集!
      

  12.   

    我说的Select不包括
    select ... into ...
    if exists(select...)
    select @a=...
    等不返回数据集的Select语句。
    可以在SQL Query Analyzer中执行一下StoredProc,所有返回数据集的Select的结果都会显示出来,(不想DBGrid只显示一个数据集)
      

  13.   

    如果不是这个问题的话,把你的
      with Grid_sk do
        ...
      begin
    这一段代码去掉是一下看。
      

  14.   

    在你的sp上指定范围的纪录字段,然后在grid中的columns中指定fieldname.你的存储过程已经返回了纪录,只不过因为你的grid无法识别其中的对应关系。不信的话你把grid的columns去掉看看。