我刚刚开始学习delphi,在使用Clientdataset时候,我在CommandText中写入SQL,运行程序,在DBgrid还是显示全部数据,根本就没有执行到SQL语句这是为啥?
我的用得控件是 Clientdataset和DataSource 数据在dbgrid中显示出来,用DataSetProvider这个控件把里面的PoAllowCommandText值为true时候还是不能用..
有那位大哥帮帮我,已经快一个星期了,我找了很多的资料还是解决不了,我怀疑是我连接Clientdataset方面有问题。。那位大哥能不能给个详细的例子给我看看(最好能带上使用啥控件)。。
谢谢了。。

解决方案 »

  1.   

    你可以在代码里写SQL语句执行,一般来讲可以用5个控件,连接如下:
    DataSetProvider1的dataset属性选择SQLDataSet1,options属性里面的poAllowCommandText属性选择true,
    ClientDataSet1的ProviderName属性选择DataSetProvider1,DataSource1的dataset属性选择clientdataset1
    我最近写一个数据库自动升级的工具,其中用到这个,截一段代码给你参考下:cdsDB就是Cilentdataset
    procedure TfrmAS.Button1Click(Sender: TObject);
    begin
      with cdsDB do
        begin
          cdsDB.Active := false;
          cdsDB.Close;      cdsDB.CommandText := 'if exists (select 1 from  sysobjects where  id = object_id('+'''UpGrade'''+') and   type ='+'''U'''+') drop table UpGrade' ;
          cdsDB.Execute;      cdsDB.CommandText :='create table UpGrade(objectname varchar(20),newver varchar(10),SQL int ,SQLblock text,verchange bit)';
          cdsDB.Execute;
        end;
    end;
    哥们你也给点分再问问题啊,不然没多少人愿意回答你!~