只要你对CheckListBox的选择及时的写入DataSet中,与DataSet想连的DBGrid会自动更新的。

解决方案 »

  1.   

    说具体点
    CheckListBox中的项目 对应的是什么?字段?DBGrid显示的字段不同还事纪录不同
      

  2.   

    CheckListBox中是商品的名称,DBGrid中显示商品库中的内容.
      

  3.   

    当CheckListBox的值改变之后,再查一遍数据库,得到相应的结果,更新DBGrid!
      

  4.   

    查询只能通过商品名称来查询,每一次CheckListBox的值改变之后,我都需要重新遍历一遍CheckListBox,然后写如下的语句:
     SQL.ADD('select * from kcjlb');
     SQL.ADD('where 商品名称=:p_name1 and 商品名称=:p_name2 ...');
     parabyname('p_name1').value:=...
     parabyname('p_name2').value:=...
     ...
    这样写是不是太麻烦了,有没有简单一些的方法
      

  5.   

    SQL.ADD('where 商品名称=:p_name1 and 商品名称=:p_name2 ...');这句有问题应该是
    SQL.ADD('where 商品名称=:p_name1  or 商品名称=:p_name2 ...');
    写一个函数
    var 
      count:integer;
      temstr:array of string;
    procedure chaxun();
    begin
     找到CheckListBox当前选择项数。///——i;
     if i=1 then 自己写
     else begin
        setlength(temstr,i);   with query do begin
           if active then active:=false;
           sql.clear;
           SQL.ADD('select * from kcjlb where ');
           sql.add(' 商品名称=:p_name1'); 
           for count:=0 to i-1 do begin
             temstr[count]:=CheckListBox的项i;
             if count>0 then begin  
                  sql.add(' and 商品名称=:p_name'+inttostr(count+1)); 
                  parambyname('p_name'+inttostr(count+1)).value:=temstr[count]
              end; 
            end;
            parambyname('p_name1').value:=temstr[0];
            query1.active:=true;
         end;    
      end;
    end;
      

  6.   

    to chechy(chechy)及大家:
    能否再帮我看看http://www.csdn.net/expert/topic/220/220794.shtm,多谢!