我想把dbgrid中选中行的数据提出来,传到别出去,但不知道怎样做?
 最好有个例子?
 谢谢各位!!!

解决方案 »

  1.   

    temp1:=dbgrid1.datasource.dataset.fieldbyname('字段1').value;
    ...
    tempN:=dbgrid1.datasource.dataset.fieldbyname('字段N').value;
      

  2.   

    我知在VB中,选中以后得到一个行号,
    在别外你在数据库中找到这一条记录就行了,delphi中没用过,一起学习
      

  3.   

    对相应数据集进行操作adouqery1.FieldByName('Field1').Value
      

  4.   

    self.dbgrid1.selectedrows.items[0];
    aa:=self.dbgrid1.datasource.dataset.fields[0].asstring;0为第一列的字段值
      

  5.   

    temp1:=dbgrid1.datasource.dataset.fieldbyname('字段1').value;
      

  6.   

    var 
      a,b,c:string;a:=adoqry.fields[0].asstring;
    b:=adoqry.fields[1].asstring;
    c:=adoqry.fields[2].asstring;這樣就可以傳遞了
      

  7.   

    procedure DBGridMulDel(DBGrid: TDBGrid; TableName: String = '';
      ViewFieldName: String = ''; TableFieldName: String = '');
    //删除DBGrid中选中的多行
    //如果字段和表名不全,则按普通表删除
    //否则,根据所给信息,删除给定的表
    var
      i, j: Integer;
      s: String;
      q: TADOQuery;
    begin
      if not DBGrid.DataSource.DataSet.Active then Exit;
      //如果没有给TableName,FieldName,则认为是表,直接删除
      if (TableName = '') or (ViewFieldName = '') or
        (TableFieldName = '') then begin
        if DBGrid.SelectedRows.Count > 0 then
          with DBGrid.DataSource.DataSet do
            for i:= DBGrid.SelectedRows.Count - 1 downto 0 do
            begin
              GotoBook(pointer(DBGrid.SelectedRows.Items[i]));
              Delete;
            end;
        Exit;
      end;
      //视图,需要给出表名和关键字段名
      if DBGrid.SelectedRows.Count>0 then
        with DBGrid.DataSource.DataSet do
          for i:= DBGrid.SelectedRows.Count - 1 downto 0 do
          begin
            GotoBook(pointer(DBGrid.SelectedRows.Items[i]));
            for j := 0 to FieldCount-1 do
            begin
              if Fields[j].FieldName = ViewFieldName then
              s := s + ' or ' + TableFieldName + '=' + Fields[j].AsString;
            end;
          end;
      if s = '' then
        Exit;
      s := RightStr(s, Length(s) - 4);//去掉' or '
      s := 'delete from ' + TableName + ' where ' + s;
      q := TADOQuery.Create(Application);
      try
        with q do begin
          q.Connection := TCustomADODataSet(DBGrid.DataSource.DataSet).Connection;
          q.SQL.Add(S);
          q.ExecSQL;
        end;
      finally
        q.Free;
      end;
    end;
      

  8.   

    function GetDBGridSelected(DBGrid: TDBGrid; FieldName: String = ''):String;
    //返回选中DBGrid指定的Field的Value
    var i: Integer;
    begin
      if not Assigned(DBGrid.DataSource) then
        raise Exception.Create('DataSource not Assigned!');
      if not Assigned(DBGrid.DataSource.DataSet) then
        raise Exception.Create('DataSet not Assigned!');  if DBGrid.SelectedRows.Count > 0 then
        with DBGrid.DataSource.DataSet do
          for i:= DBGrid.SelectedRows.Count - 1 downto 0 do begin
            GotoBook(pointer(DBGrid.SelectedRows.Items[i]));
            Result := Result + ',' +
              DBGrid.DataSource.DataSet.FieldByName(FieldName).AsString;
          end;
      if Result <> '' then
        Result := RightStr(Result, Length(Result) - 1);
    end;