procedure   TForm1.Button1Click(Sender:   TObject); 
var 
    i:   Integer; 
begin 
    with   ClientDataSet1   do 
    begin 
        Close; 
        Fields.Clear; 
        FieldDefs.Clear; 
        CommandText   :=   SQLStr1; 
        FieldDefs.Update; 
        with   TFieldDef(FieldDefs.Insert(0))   do 
        begin 
            Name   :=   'FIELD_NAME'; 
            DataType   :=   ftBoolean; 
            DisplayName   :=   'FIELD_NAME'; 
        end; 
        for   i   :=   0   to   FieldDefs.Count   -   1   do 
            FieldDefs[i].CreateField(ClientDataSet1); 
        Fields[0].FieldKind   :=   fkInternalCalc; 
        Open; 
    end; 
end; procedure   TForm1.ClientDataSet1CalcFields(DataSet:   TDataSet); 
begin 
    with   ClientDataSet1   do 
    begin 
        if   Fields[0].Value   =   Null   then   Fields[0].AsBoolean   :=   False; 
    end; 
end; 
用上面的代码,创建了一个临时的选择列,但如何取出当前dbgrideh已选中的列的第二列的所有数据?以便提供给另一个adoquery做查询条件的值?

解决方案 »

  1.   

                   
                   for   i   :=   0   to   DBGrid1.SelectedRows.Count   -   1   do 
                    begin 
                        adods.GotoBook(pointer(DBGrid1.SelectedRows[i]));                     //   your   code   here...     
                    end;
      

  2.   

    终于解决这个问题---昨天
    var
     i,j:integer;
     str: string;
    Begin
      str:='';
      for i:=0 to DBgrid1.selectedrows.count-1 do
         begin
           Gotobook(pointer(DBgrid1.selectedrows.ites[i]));
             for j:=0 to fieldcount-1 do
               Begin
                  if j>0 then
                    str:=','+str;
                  str:=fields[i].Asstring;
               End;
              listbox1.items.add(str);
              str:='';
         End;
    End;
      

  3.   

    不行哟,我是说的第一个字段为虚建立的check字段,是想将当前勾选中的行的值取出?
      

  4.   

    不行哟,我是说的第一个字段为虚建立的check字段,是想将当前勾选中的行的值取出?
    ---
    对于你说的,因为你的数据都已经选择好了,利用Clientdataset判断check是否为True或FALSE再添加数据,这个应该不是问题吧!!!