在做一个三层架构的程序,
服务器: TADOConnection、TADODataSet、TDataSetProvider
客户端: TClientDataSet、TDBGrid、TDataSource
在客户端执行一存储过程 :
ClientDataSet1.Active := false;
ClientDataSet1.CommandText := 'EXEC spr_dd ' + QuotedStr('20050409');
ClientDataSet1.Active := true;
执行该操作无反应,但查询分析器里执行就可以,不知什么原因?

解决方案 »

  1.   

    ClientDataSet1.Execute;这样就可以了
      

  2.   

    to  pooplin(枫叶) :
    已经试过,还是不行。
    还有个问题就是第一次出现在异常后,第二次要重新运行客户端才行。
      

  3.   

    还有一个属性不知道你修改了没有,不然中间层是不接受SQL的。即.DataSetProvider1.Options:=[poAllowCommandText]。你也可以直接在.DataSetProvider1的Options展开找到poAllowCommandText设置为True。你上现的代码就应该能正常执行了。
      

  4.   

    ClientDataSet1.close;
    ClientDataSet1.CommandText := 'EXEC spr_dd ' + QuotedStr('20050409');
    ClientDataSet1.Execute;
    應是這樣的
      

  5.   

    请注意字符串部分,单引号的使用,需要转义处理之:
    ClientDataSet1.close;
    ClientDataSet1.CommandText := 'EXEC spr_dd ''' + QuotedStr('20050409')+'''';
    ClientDataSet1.Execute;20040409前后需要使用用单引号!