本系统采用前台TClientDataSet传递sql语句到后台com+服务
执行结果返回给TClientDataSet控件。
应用中采用TSocketConnection连接
    CDS: TClientDataSet;
    SocketConnection: TSocketConnection;
    ConnectionBroker: TConnectionBroker;     CDS.Close;
     CDS.CommandText := SelectSQL;
     CDS.Open;但是在应用中,调用CDS.Open时会出现成员不存在的错误。
有没有碰到类似错误的?
请指教是怎么回事?

解决方案 »

  1.   

    SelectSQL;中的SQL语句有问题
      

  2.   

    但是这个时候应该没有执行sql语句吧?
    我的程序代码都没有更改过。只是sql服务器后来重新安装了。
    程序就不能运行了。是不是sql服务器有问题?
      

  3.   

    你确定是sql语句错误吗?
    因为我的sql语句是根据参数拼出来的,如果sql服务器的一些
    东西改变了,那么拼sql语句的参数应该也会改变。
    在原理上不是很明白,可以说清楚点吗?
      

  4.   

    sql 语句应该没有错
    我在数据库中直接用sql语句进行了测试。
    可以查到需要的东西的
      

  5.   

    把你的连接控件删掉,重新连一遍试试,估计可能她保留了你以前的sql信息。
      

  6.   

    应该不会呀,这些sql语句调试的时候都没有错呀
    我看delphi帮助中说,cds.open出错
    是因为:If an error occurs during the dataset open, dataset state is set to dsInactive, and any cursor is closed.
    是不是因为数据库的游标关了,我不是很清楚。
    请教.........
      

  7.   

    sql语句没有错的
    我在sql server上执行,可以查到结果
      

  8.   

    问题解决了。
    前面说的都没有关系的。sql语句大写或者小写都没有关系的。
    其次datasetProvider allowcommandtext应该设置为true。
    我的问题在于。服务器端我用的是Tdbcom = class(TMtsDataModule, Idbcom)来进行数据
    读取。但是,偶然的原因,程序的接口丢失了,我用type library创建interface的时候没有注意她的parent interface.正确的parent interface应该是IappServer,而我的程序中是idispatch,所以,在cds.open的时候会出现成员不存在的错误。
    如果sql语句不对,也会出现错误,但是不是这个错误。
    不管怎么样,还要多谢几位,分数平分。呵呵