我按自己输入的条件查询出记录之后,用DBgird显示出来 ,结果发现dbgird中只有记录,但记录前面没有序号,那我如何设置在DBgrid中显示记录的条数呢?另外,我还想在表中显示查询出来的记录的总数,我该用哪一个控件来实现呢?

解决方案 »

  1.   

    还有一个问题就是:
      我的表中有一个时间字段,时间格式为2005-1-1, 
    我在查询的时候,想要输入一个时间,并在dbgird控件中显示这些记录, 但是时间控件我不知道如何用(想要时间控件是那种选择式的,可以选的)请指点
      

  2.   

    Win32选项卡里有DateTimePicker控件
      

  3.   

    dbgirdeh 中的footer 是在哪? 乍没看见啊。是用来统计记录总数的吗?
      

  4.   

    用DBGrid1.DataSource.DataSet.RecordCount;得到的就是查询出来的记录总数,至于怎么显示你就自己看着办吧。
      

  5.   

    同问:如何在DBGrid中增加条目的序号列?不是问怎么显示总条目,而是如何增加一个序号列
      

  6.   

    你在网站www.bluec.com.cn下载专业的表格组件,TADBGrid轻松搞定你的问题.
      

  7.   

    这是我在一个网站看到的方法,可是自己看不懂,希望高手指点var 
      Form1: TForm1; 
      i:integer; 
      bflag,bflag2:boolean; 
     
    implementation 
     
    {$R *.dfm} 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      adoquery1.Open; 
    end; 
     
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; 
      DataCol: Integer; Column: TColumn; State: TGridDrawState); 
      var 
        rect1:TRect; 
        sValue :string; 
        ss:boolean; 
    begin 
      if DataCol = 0 then                           //設置在第一列 
      begin 
        if DBGrid1.DataSource.DataSet.state<>dsInsert  then 
          i:= DBGrid1.DataSource.DataSet.recno; 
     
        Rect1 := Rect; 
        with dbgrid1 do 
        begin 
          Canvas.Brush.Color := clBtnFace; 
          sValue := IntToStr(i); 
          Canvas.FillRect(Rect1); 
          Canvas.Pen.Width := 1; 
          Canvas.Pen.Color := clWhite; 
          Canvas.MoveTo(Rect1.Left, Rect1.Bottom); 
          Canvas.LineTo(Rect1.Left, Rect1.Top); 
          Canvas.LineTo(Rect1.right, Rect1.Top); 
          Canvas.Pen.Color := clBtnShadow; 
          Canvas.LineTo(Rect1.right, Rect1.Bottom - 1); 
          Canvas.LineTo(Rect1.Left, Rect1.Bottom - 1); 
          Rect1.Top := Rect1.Top +1; 
          if State = [gdSelected, gdFocused] then 
          begin 
            if bflag=true then 
            begin 
              sValue:=inttostr(datasource.DataSet.RecordCount +1); 
              i:=datasource.DataSet.RecordCount +1; 
                ss:=true; 
            end; 
          Canvas.Font.Color := clred; 
          end 
          else 
          begin 
            Canvas.Font.Color := clgreen; 
          end; 
          DrawText(Canvas.Handle, PChar(sValue), Length(sValue), Rect1, DT_CENTER); 
        end; 
        if i<=dbgrid1.DataSource.DataSet.RecordCount then 
        begin 
          inc(i); 
        end 
        else 
        begin 
        if (ss<>true) then 
          i:=dbgrid1.DataSource.DataSet.RecordCount+3 -TDrawGrid(DBgrid1).RowCount ; 
        end; 
      end 
      else bflag2:=false; 
    end; 
     
    procedure TForm1.DataSource1StateChange(Sender: TObject); 
    begin 
      if dbgrid1.DataSource.DataSet.State <>dsbrowse then 
      begin 
        i:=dbgrid1.DataSource.DataSet.RecordCount+3 -TDrawGrid(DBgrid1).RowCount ; 
        bflag := true; 
      end 
      else 
        bflag:=false; 
    end; 
     
    procedure TForm1.DBGrid1ColEnter(Sender: TObject); 
    begin 
     if (bflag=true)and (dbgrid1.SelectedField.FieldNo <>1) then 
     begin 
      i:=dbgrid1.DataSource.DataSet.RecordCount+3 -TDrawGrid(DBgrid1).RowCount; 
      dbgrid1.Refresh; 
     end; 
    end; 
     
    procedure TForm1.DBGrid1ColExit(Sender: TObject); 
    begin 
      if (bflag=true)and (dbgrid1.SelectedField.FieldNo =1) then 
     begin 
      i:=dbgrid1.DataSource.DataSet.RecordCount+1; 
      dbgrid1.Refresh; 
     end; 
    end; 
     
    end. 
      

  8.   

    这个问题还是答得不是很全面,不知道如何下手啊。同时,我有一个问题想问一下,我数据库中有一列里面全部是汉字,但是在DBgrid 中显示的时候,只有一个(memo) 请问如何解决
      

  9.   

    可以使用dbgrideh,用footer汇总。
    加序号的话可以使用adoquery自己维护的reco来标识,如在adoquery中建一个计算字段,在adoquery的onCalcFields事件中写代码:
    with DataSet do
      begin
        if RecNo < 1 then
          FieldByName('num').Value := 1
        else
          FieldByName('num').Value := RecNo; 
      end;
    试试吧,当然也可以在表里做文章。
      

  10.   

    经过验证,这个方法是成功的
    //聲明全局變量i 
     
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; 
      DataCol: Integer; Column: TColumn; State: TGridDrawState); 
    begin 
      with DBGrid1.DataSource.DataSet do 
      begin 
        if DataCol = 0 then                           //設置在第一列 
        begin 
          if state<>dsInsert  then i:= recno;           //這句是關鍵 
          DBGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, IntToStr(i)); 
          inc(i);                  //將i加1 
        end; 
      end; 
    end; 
     
    procedure TForm1.DataSource1StateChange(Sender: TObject); 
    begin                                            //狀態改變時將i置為1 
      i:=1; 
    end;
      

  11.   

    ADOQuery.SQL.Add('Select identity(Int,1,1) As ID,你的查询字段 into #c From table');
    ADOQuery.SQL.Add('Select * From #c Order By ID');
    ADOQuery.SQL.Add('Drop Table #c');然后在你的dbgrid中加一个列,设为ID就行了。