Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Mostrar columna del dbgrid en un dbmemo (https://www.clubdelphi.com/foros/showthread.php?t=83969)

exequielmatias1 22-08-2013 02:01:12

Mostrar columna del dbgrid en un dbmemo
 
Hola! tengo la siguiente pregunta
Necesito mostrar en un dbmemo en forma de lista una columna de un dbgrid que es el resultado de una consulta anterior..

ecfisa 22-08-2013 02:31:43

Hola.

Me parece mas simple mostrarlo en el Memo directamente desde una consulta.

Por ejemplo:
Código Delphi [-]
procedure EncolumnarMemo(const ColName:string; aQuery: TADOQuery; aMemo: TMemo);
begin
  aMemo.Lines.BeginUpdate;
  aMemo.Clear;
  try
    with aQuery do
    begin
      Close;
      SQL.Text := 'SELECT ' + ColName + ' FROM TU_TABLA';
      Open;
      while not Eof do
      begin
        aMemo.Lines.Add(FieldByName(ColName).AsString);
        Next;
      end;
      Close;
    end;
  finally
    aMemo.Lines.EndUpdate;
  end;
end;

Ejemplo del uso:
Código Delphi [-]
 
   EncolumnarMemo('NOMBRE_DEL_CAMPO',  ADOQuery1, Memo1);

Saludos. :)

exequielmatias1 22-08-2013 18:16:19

Hola ecfisa, antes que nada muchas gracias! siempre muy atento..
este codigo me funciono! pero me muestra toda la columna de la tabla, yo necesito mostrar en el memo, sólo el resultado de una consulta hecha anteriormente que se muestra en un dbgrid. Es decir pasar los campos mostrados en el dbgrid a un memo
Al ejecutar este codigo me borra el resultado anterior...

ecfisa 22-08-2013 19:08:49

Cita:

Empezado por exequielmatias1 (Mensaje 465922)
este codigo me funciono! pero me muestra toda la columna de la tabla, yo necesito mostrar en el memo, sólo el resultado de una consulta hecha anteriormente que se muestra en un dbgrid. Es decir pasar los campos mostrados en el dbgrid a un memo

Hola.

Esa consulta fué un ejemplo, en la práctica deberías repetir la consulta que utilizaste para mostrar la información en el DBGrid, por ejemplo:
Código Delphi [-]
...
  SQL.Text := 'SELECT ' + ColName + ' FROM TU_TABLA WHERE OTRO_CAMPO BETWEEN 1 AND 50';
...
Cita:

Al ejecutar este codigo me borra el resultado anterior...
Lo ideal es usar otro componente query para enviarle a la función.


Cita:

Es decir pasar los campos mostrados en el dbgrid a un memo
Directamente desde el DBGrid sería:
Código Delphi [-]
procedure TForm1.EncolumnarMemo(const aFieldName: string);
var
  BM: Pointer;
begin
  Memo1.Lines.Clear;
  with DBGrid1.DataSource.DataSet do
  begin
    DisableControls;
    BM := GetBookmark;
    try
      while not Eof do
      begin
        Memo1.Lines.Add(FieldValues[aFieldName]);
        Next;
      end;
    finally
      GotoBookmark(BM);
      FreeBookmark(BM);
      EnableControls;
    end;
  end;
end;
En ese caso estamos trabajando con el TDataSet que alimenta al DBGrid, por lo que debemos guardar la posición del registro actual antes de recorrerlo para luego dejarlo en su posición original.

Saludos. :)


La franja horaria es GMT +2. Ahora son las 05:57:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi