我直接用TClientDataSet的commandtext来根据条件打开一个表,语句如下
   OrderWare_DataSet.CommandText:='select * from Order_Ware where Order_ID='''+ Order_ID
                                   +''' order by Order_ID,Ware_NumID';
   OrderWare_DataSet.Close;
   OrderWare_DataSet.Execute;
   OrderWare_DataSet.Open;
   OrderWare_DataSet.Edit;
在上面的查询语句中我用order by 来将结果集排序并且加载到OrderWare_DataSet控件中,可是执行以后结果集没有按照order by 定义的顺序来显示,不知道这是为什么?
后来我用了第二种办法,定义了一个类,类的功能就是完成查询,然后将结果集赋值到OrderWare_DataSet中,语句如下:
   objQuery:=TQueryData.Create;
   objQuery.SQLs:='select * from Order_Ware where Order_ID='''+ Order_ID
                   +''' and jigou_code in (select jigou_code 
                   from DIC_User_JiGou where user_code='''+
                   objuser.User_Code+''') order by Order_ID,Ware_NumID';
   if objQuery.Query then
   begin
     OrderWare_DataSet.Close;
     OrderWare_DataSet.Data:=objQuery.CDS_Temp.Data;
     OrderWare_DataSet.Edit;
   end;
这个方法也不能按照我定义好的Order by 来显示数据,不知道是为什么,
请问朋友们,我如果想按照数据表中某一个字段来显示并且输出结果集到TClientDataSet中应该怎么做呢?谢谢!

解决方案 »

  1.   

    排序规则不同,楼主用的是不是oracle数据库?
      

  2.   

    你是不是在ClientDataSet上面定义了索引.
      

  3.   

    察看,indexname或indexfieldnames中是否定义了索引,有的话,删除即可
      

  4.   

    朋友,我用的是SQLServer数据库。另外我没有设置索引,这个TClientdataset连接的是一个主从表里的从表,所以在indexfieldnames里放置的是对应主表的字段,你们觉得跟这个有关系吗?
      

  5.   

    是IndexFieldNames影响了数据的排序显示,但是如果IndexFieldNames为空就不能设置这个控件的主从关系啊!