dbgrid.datasource.dataset的当前记录就是你所点的记录。

解决方案 »

  1.   

    帮助:你只要稍加修改即可
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i, j: Integer;
      s: string;
    begin
      if DBGrid1.SelectedRows.Count>0 then
        with DBGrid1.DataSource.DataSet do
          for i:=0 to DBGrid1.SelectedRows.Count-1 do
          begin
            GotoBook(pointer(DBGrid1.SelectedRows.Items[i]));
            for j := 0 to FieldCount-1 do
            begin          if (j>0) then s:=s+', ';
              s:=s+Fields[j].AsString;
            end;
            Listbox1.Items.Add(s);
            s:= '';
          end;
    end;
      

  2.   

    dbgrid中当前选中的行就是表中的当前记录呀
      

  3.   

    begin
      if form1.DBGrideh1.SelectedRows.Count>0 then
        with form1.DBGrideh1.DataSource.DataSet do
          for i:=0 to form1.DBGrideh1.SelectedRows.Count-1 do
          begin
           s:=fields[i].asstring;
           end;
          form2.ADOQuery1.Close;
          form2.ADOQuery1.sql.clear;
          form2.ADOQuery1.SQL.Add('select * from orders');
          form2.ADOQuery1.SQL.Add('where customerid='+'''s''');
          form2.adoquery1.open;
          end;
    为什么在dbgrid中只有表头呢?记录没有显示
      

  4.   


    for i:=0 to form1.DBGrideh1.SelectedRows.Count-1 do
    begin
         s:=fields[i].asstring;
    end;
    去掉。
    改为s:=DBGrideh1.DataSource.Dataset.FieldByName('customerid').AsString
    试试!
      

  5.   

    form2.ADOQuery1.SQL.Add('where customerid=:S');
          form2.ADOQuery1.ParamByName('s').asString:=DBGrideh1.DataSource.Dataset.FieldByName('customerid').AsString
      
      

  6.   

    form2.ADOQuery1.SQL.Add('where customerid=:S');
          form2.ADOQuery1.ParamByName('s').asString:=DBGrideh1.DataSource.Dataset.FieldByName('customerid').AsString
      
      

  7.   

    begin
      if form1.DBGrideh1.SelectedRows.Count>0 then
        with form1.DBGrideh1.DataSource.DataSet do
          for i:=0 to form1.DBGrideh1.SelectedRows.Count-1 do
          begin
           s:=fields[i].asstring;//问题在这里,s等于当前记录最后字段值,不等于customerid。
           end;
          form2.ADOQuery1.Close;
          form2.ADOQuery1.sql.clear;
          form2.ADOQuery1.SQL.Add('select * from orders');
          form2.ADOQuery1.SQL.Add('where customerid='+'''s''');
          form2.adoquery1.open;
          end;
    循环语句应改为:
               s:=fieldbyname('customerid').asstring
      

  8.   

    to surfguy
    还是一样没有数据!
    只有表头