下面是我通过LISTVIEW做的一个简单的查询窗口,显示的查询条数正确,说明编译和数据连接都没问题,但是LISTVIEW中却没有数据显示,这是为什么呢,望高手们指点,小弟感激不尽procedure Tform1.Button1Click(Sender: TObject);
   var
  Content: string;
begin
 try
  ListView1.Items.Clear;  with ADOQuery1 do
  begin
    Content:=Edit2.Text;
    SQL.Clear;
    if RadioButton1.Checked then
    begin
      SQL.Add('select * from 2009 where 姓名 like :姓名');
      Parameters.ParamByName('姓名').value := Content;
    end;
    if RadioButton2.Checked then
    begin
      SQL.Add('select * from 2009 where 所在分厂 like :所在分厂');
      Parameters.ParamByName('所在分厂').value := Content;
    end;
    if RadioButton3.Checked then
    begin
      SQL.Add('select * from 2009 where 寝室号 like :寝室号');
      Parameters.ParamByName('寝室号').value := Content;
    end;
   open ;
    while not Eof do
    begin
      with ListView1.Items.Add do
      begin
        Caption := FieldByName('姓名').AsString;
        subitems.add(fieldbyname('姓别').asstring);
        SubItems.Add(FieldByName('手机号').AsString);
        SubItems.Add(FieldByName('所在分厂').AsString);
        SubItems.Add(FieldByName('寝室号').AsString);
        SubItems.Add(FieldByName('qq号').AsString);      end;
    Next;
  end;  StaticText1.Caption:= '共'+IntToStr(RecordCount)+'条记录';
  Close;
  end;
  except
    MessageDlg('查询失败',mtError,[mbok],0);
 end;
end;procedure TForm1.RadioButton1Click(Sender: TObject);
begin
  Edit2.Text := '';
end;end.

解决方案 »

  1.   

    你的SQL有问题
    先改成不用参数的
          SQL.Add('select * from 2009 where 姓名 like ''%王%'' '); 
      

  2.   

    procedure Tform1.Button1Click(Sender: TObject); 
      var 
      Content: string;
    begin   ListView1.Items.Clear;  with ADOQuery1 do
      begin 
        Content:=Edit2.Text;
        SQL.Close;
        SQL.Clear;
        if RadioButton1.Checked then
        begin
          SQL.Add('select * from 2009 where 姓名 like :A');
          Parameters.ParamByName('A').value := Content+'%';
        end
        else
        if RadioButton2.Checked then
        begin
          SQL.Add('select * from 2009 where 所在分厂 like :A');
          Parameters.ParamByName('A').value := '%'+Content+'%';
        end
        else
        if RadioButton3.Checked then
        begin
          SQL.Add('select * from 2009 where 寝室号=:A');
          Parameters.ParamByName('A').value := Content;
        end;    try
        open ;
        except 
           MessageDlg('查询失败',mtError,[mbok],0); 
        end;    while not Eof do
        begin
          with ListView1.Items.Add do
          begin
            Caption := FieldByName('姓名').AsString;
            subitems.add(fieldbyname('姓别').asstring);
            SubItems.Add(FieldByName('手机号').AsString);
            SubItems.Add(FieldByName('所在分厂').AsString);
            SubItems.Add(FieldByName('寝室号').AsString);
            SubItems.Add(FieldByName('qq号').AsString);      end;
        Next;
        end;    StaticText1.Caption:= '共'+IntToStr(RecordCount)+'条记录';
        Close;
      end;end;SQL语句,若用了like,而未用到通配符%,和=号相同效果,如查"寝室号"这句,直接用=号,效率会更高
    like和%搭配使用,可以在前,后或前后加上%,看你要的结果了
      

  3.   

    还有 ListView1.ViewStyle:=vsReport;
      

  4.   

    SQL应该没有问题呀,如果有问题的话,下面也不会显示查询的条数了,两位认为还有其它可能吗
      

  5.   

    嗯,是设置成的VSREPORT,而且我不用前边的查询语句,直接用FORM1的oncreate事件是可以显示出数据的