Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Mostrar resultado de query en tLabel o tmemo (https://www.clubdelphi.com/foros/showthread.php?t=78375)

@-Soft 13-04-2012 07:33:28

Mostrar resultado de query en tLabel o tmemo
 
Hola

De antemano gracias por cualquier opinión o respuesta a dicha pregunta.

me gustaría saber de que forma podría mostrar el resultado de las filas y columnas devueltas por un query en un tLabel o tMemo. o si existe alguna otra forma ya sea con una variable tipo Array y que luego esta se pueda desplegar en un letrero.


ejemplo.
si el resultado del query a la tabla X devuelve:

CODIGO-NOMBRES-CARGO
---------------------------------
1-JUAN PEREZ-ABOGADO
2-MANUEL CONCEPCION-TECNICO
3-ROSA BARBOSA-SECRETARIA


y que esto se pueda desplegar de esa misma forma en un tLabel o tMemo.


gracias.

ElKurgan 13-04-2012 08:46:15

A este procedimiento le pasas la consulta y un Tstrings, que puede ser un TstringList como "Memo1.Lines"

Código Delphi [-]
procedure MostrarDatos(Consulta: TDataset; Lista: Tstrings);
var
  i: Integer;
  Linea: string;
begin
  Consulta.First;
  While not Consulta.Eof do
  begin
    Linea := '';
     For i := 0 to Consulta.FieldCount - 1 do
      Linea := Linea + ' ' + Consulta.Fields[i];
    Lista.Add(Linea)
    Consulta.Next;
  end;
end;

Espero que te sirva.
Un saludo

@-Soft 14-04-2012 01:19:30

Muchas gracias por tu respuesta, me sirvio de muchooo.

ahora me gustaria que me dijeras si en el
Código Delphi [-]
Consulta.Fields[i];
puedo seleccionar un solo campo, es deicir, de 3 campos que devuelve el query de manera obligatoria, solo quiero mostrar 1 solo campo. si me pudieras aclarar te lo agradeceria mil x mil

ecfisa 14-04-2012 02:18:30

Hola @-Soft.

El amigo ElKurgan te dió un ejemplo genérico dando solución a tu primer pregunta y tácitamente contempla lo que consultas ahora.

Si quisieras mostrar un campo no es necesario el for ya que, valga la redundancia, es uno sólo.

Por ejemplo si quisieras mostrar campo de índice 0 :
Código Delphi [-]
   Memo1.Lines.Add(Consulta.Fields[0].AsString);
O de otro modo, referenciando el nombre del campo que buscas mostrar:
Código Delphi [-]
   Memo1.Lines.Add(Consulta.FieldByName('CAMPO').AsString); // Reemplazá 'CAMPO' por el nombre del campo que deseas mostrar

Con el mismo resultado, usando la función FindField:
Código Delphi [-]
   Memo1.Lines.Add(Consulta.FindField('CAMPO').AsString);
Es decir, tres formas diferentes de mostrar el mismo resultado.

Saludos.

Edito: En realidad serían cuatro si está creado el campo persistente:
Código Delphi [-]
   Memo1.Lines.Add(ConsultaCAMPO.AsString);

@-Soft 14-04-2012 08:10:11

hola y gracias

pues si el ejemplo va de maravilla y lo unico es que quiero mostrar solo el resultado de una sola columna de las 3 que devuelve el quiery. ej.

del resultado del query:

codigo-nombres-cargo
1-ivan lora-analista
2-manuel cocepcion-programador
3-heydy burgos-secretaria

de este resultado solo quiero mostrar el campo NOMBRES y lo demas campos no quiero que salgan en la carga del resultado.

ecfisa 14-04-2012 08:19:11

Cita:

Empezado por @-Soft (Mensaje 430011)
...lo unico es que quiero mostrar solo el resultado de una sola columna de las 3 que devuelve el quiery. ej.

del resultado del query:

codigo-nombres-cargo
1-ivan lora-analista
2-manuel cocepcion-programador
3-heydy burgos-secretaria

de este resultado solo quiero mostrar el campo NOMBRES y lo demas campos no quiero que salgan en la carga del resultado.

Hola @-Soft.

Entonces tomando como base el código de ElKurgan, una forma sería:
Código Delphi [-]
procedure MostrarDatos(Consulta: TDataset; Lista: Tstrings);
begin
  Consulta.First;
  While not Consulta.Eof do
  begin
    Lista.Add(Consulta.FieldByName('NOMBRES').AsString);
    Consulta.Next;
  end;
end;

Ejemplo de llamada:
Código Delphi [-]
  MostrarDatos(Tu_Query, Memo1.Lines);

Saludos.

ElKurgan 14-04-2012 15:05:41

Efectivamente.

Yo no lo habría expuesto mejor

Un saludo

@-Soft 14-04-2012 16:26:20

excelente, gracias a ambos. son muy amables y que de nosotros sin personas como ustedes, los moderadores y este portal. gracias mil


La franja horaria es GMT +2. Ahora son las 14:40:20.

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