Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Visualizar datos de una consulta SQL (https://www.clubdelphi.com/foros/showthread.php?t=13442)

dsa132132 19-08-2004 00:09:26

Visualizar datos de una consulta SQL
 
Hola gente, este es mi problema;

Tengo una query del tipo "select count (parametro) from tabla", cómo puedo visualizar el número resultante de la consulta en un edit de un formulario?

Si lo hago de la forma;
edit1.text := DataModule.Query.Fieldvalues[' xxxx ']; No se qué parámetro pasar.

Se puede visualizar en un edit? En la ayuda de delphi he leído algo sobre hacerlo en un QRDBTEXT pero no se cómo hacerlo.

Alguien puede ayudarme?

Muchas gracias.

Paoti 19-08-2004 02:23:31

Cita:

Empezado por dsa132132
Hola gente, este es mi problema;

Tengo una query del tipo "select count (parametro) from tabla", (esta consulta es irrelevante, dime que pondrias en paramero, un campo? con poner * o el nombre de un campo es suficiente ) cómo puedo visualizar el número resultante de la consulta en un edit de un formulario?

Si lo hago de la forma;
edit1.text := DataModule.Query.Fieldvalues[' xxxx ']; No se qué parámetro pasar. (no se trata e parametro.... el valor que te va devolver como resultado la consulta es un tipo integer, estas indicandole que te devuelva el numero de filas o registros de tu tabla )

Se puede visualizar en un edit? En la ayuda de delphi he leído algo sobre hacerlo en un QRDBTEXT pero no se cómo hacerlo.

Alguien puede ayudarme?

Muchas gracias.


lo que puedes hacer es:

"select count (parametro) as TotalReg from tabla"

con esto le la columna que te decuelva se llamara "TotalReg"


y en tu codigo, escribir esto


Código:

edit1.text := DataModule.Query.fieldbyname('totalReg').asstring;

y te debe de funcionar


bajate el manual de la cara oculta de delphi 4, te va a ayudar mucho

http://marteens.com/CaraOculta.htm





nos vemos camarada

jachguate 19-08-2004 07:00:35

También podes hacer simplemente:

edit1.text := Query.Fields[0].AsString;

Hasta luego.

;)

dsa132132 19-08-2004 15:40:29

Muchas gracias a ambos!!

Las dos soluciones me dan errores (o problemas con el 'totalreg' o con el Fields[0]) ,xo sera debido a que no tuve en cuenta que la query tiene tambien un select, con lo que quedaria;

select count (num_decimo) as totalReg from reserva
where num_sorteo=:num_sorteo2

Me explico; deseo contar todos los décimos de lotería de la tabla "reserva" dado un numero de sorteo. La idea es introducir el numero de sorteo en el edit1 y que al darle a un botón salga en el edit2 el número que busco.

Entonces, ya que he de leer de algún modo el num_sorteo, cómo quedaría el códogo del botón? Qué debo poner antes de la línea: edit2.Text := DMPrimitiva.Qinsertarjueves.fieldbyname('totalReg').AsString;? (por poner un ejemplo de vuestras soluciones)

He probado con;
Datamodule.Query.parambyname('num_sorteo').value:= edit1.text;
Datamodule.Query.parambyname('num_sorteo2').value:= edit1.text;
pero no me funciona.


Muchas Gracias!!




Luis F. Orjuela 19-08-2004 16:40:11

Lo que debes hacer es lo siguiente:

utilizar un componente TQuery, y en el evento Onclick de tu botón colocar lo siguiente:

with Query1 do
begin
SLQ.Close;
SQL.Clear;
SQL.Add('select count (num_decimo) as totalReg from reserva');
SQL.Add('where num_sorteo=:num_sorteo2');
ParambyName('num_sorteo2').AsInteger:=StrtoInt(Edit1.Text); //La funcion StrtoInt( ) depende del tipo de dato que sea tu parametro..
Open;
Edit2.Text:=IntoStr(Query1['totalReg']);
end;

roman 19-08-2004 16:40:51

Quizá se me escape algo pero debería funcionar como lo tienes (con el segundo ParamByName). ¿Qué error te marca?

// Saludos

dsa132132 19-08-2004 19:32:52

Ahora, utilizando tanto;

begin
Close;
SQL.Clear;
SQL.Add('select count (num_decimo) as totalReg from reserva');
SQL.Add('where num_sorteo=:num_sorteo2');
DMPrimitiva.Query1.ParambyName('num_sorteo2').AsInteger:=StrToInt(Edit10.Text); //La funcion StrtoInt( ) depende del tipo de dato que sea tu parametro..
Open;
Edit2.Text:=InttoStr(DMPrimitiva.Query1['totalReg']);
end;

como;

DMPrimitiva.Qinsertarjueves.parambyname('num_sorteo').value:= edit10.text;
DMPrimitiva.Qinsertarjueves.parambyname('num_sorteo2').value:= edit10.text;
edit2.Text := DMPrimitiva.Qinsertarjueves.fieldbyname('totalReg').AsString;

con Qinsertarjueves ('select count (num_decimo) as totalReg from reserva
where num_sorteo=:num_sorteo2')

el edit2 siempre da como resultado cero (cuando éste resultado no es el correcto porque tengo varios registros en la base de datos que contar).
No se donde está el error, seguiré buscando.

Muchas gracias a todos por vuestro interés!!

Luis F. Orjuela 20-08-2004 14:28:07

Muestranos la estructura de la tabla "reserva", es decir, el nombre de sus campos y el tipo de cada uno , pues parece ser que tienes mal construida la instrucción SELECT que le pasas al Query......... :confused:

dsa132132 23-08-2004 01:07:51

La estructura de la tabla RESERVA es la siguiente;

ABONADO ; Texto
NUMERO_SORTEO ; Numerico
NUMERO_DECIMO ; Numerico
NUM_SEGURIDAD_DECIMO ; Numerico
TIPO_SORTEO ; Texto

Como Clave Primaria tengo los 4 primeros campos.

Muchas Gracias!!

Lepe 23-08-2004 09:23:37

Cita:

Empezado por dsa132132
Ahora, utilizando tanto;
Código Delphi [-]
 
begin
Close;
SQL.Clear;
SQL.Add('select count (num_decimo) as totalReg from reserva');
SQL.Add('where num_sorteo=:num_sorteo2');
DMPrimitiva.Query1.ParambyName('num_sorteo2').AsInteger:=StrToInt(Edit10.Text);
 //La funcion StrtoInt( ) depende del tipo de dato que sea tu parametro..
Open;
Edit2.Text:=DMPrimitiva.Query1['totalReg'].asString;
end;
 
como;
 
DMPrimitiva.Qinsertarjueves.parambyname('num_sorteo').value:= edit10.text;
DMPrimitiva.Qinsertarjueves.parambyname('num_sorteo2').value:= edit10.text;
edit2.Text := DMPrimitiva.Qinsertarjueves.fieldbyname('totalReg').AsString;
 
con Qinsertarjueves ('select count (num_decimo) as totalReg from reserva
where num_sorteo=:num_sorteo2')

el edit2 siempre da como resultado cero
(cuando éste resultado no es el correcto porque tengo varios registros
en la base de datos que contar).
No se donde está el error, seguiré buscando.

Luis ha dado en el clavo, usas num_decimo cuando debias decir numero_decimo

dsa132132 23-08-2004 12:39:16

Lo siento xo cometí un error cuando envié mi mensaje anoche,la estructura de la tabla RESERVA es esta;

ABONADO ; Texto
NUM_SORTEO ; Numerico
NUM_DECIMO ; Numerico
NUM_SEG_DECIMO ; Numerico
TIPO_SORTEO ; Texto

Disculpad.

Muchas gracias a todos por vuestro interes!!

dsa132132 24-08-2004 17:53:46

Hola a todos de nuevo!!

Al escribir;

DMPrimitiva.Qinsertarjueves.parambyname('num_sorteo').value:= edit10.text;
DMPrimitiva.Qinsertarjueves.parambyname('num_sorteo2').value:= edit10.text;
edit2.Text := DMPrimitiva.Qinsertarjueves.fieldbyname('totalReg').AsString;

con Qinsertarjueves ('select count (num_decimo) as totalReg from reserva
where num_sorteo=:num_sorteo2')

Me da un error pq dice que no encuentra el parámetro num_sorteo2. Si se lo añado a Qinsertarjueves (junto con num_sorteo) me da un error y no puedo ejecutar la aplicación.

Alguna idea?

Muchas Gracias a todos!!

roman 24-08-2004 18:08:29

¿¡Qué es esto!?

Para empezar, una instrucción como

Qinsertarjueves ('select count (num_decimo) as totalReg from reserva
where num_sorteo=:num_sorteo2')

ni siquiera va a compilar. Si no pones el código tal y como lo estás usando difícilemente te podremos ayudar.

Además primero dices que te da un error con esa instrucción de que no encuentra el parámetro y luego dices que "si se le añado a...". Pues ¿no era que ya lo tenías?

Escribe con claridad cómo asignas la consulta SQL, cómo asignas los parámetros y en qué orden lo estás haciendo y ya veremos.

// Saludos

marto 24-08-2004 18:34:44

Wop!

O mucho me estoy atontando o aquí todo el problema radica en que estás intentado acceder como parámetro a lo que, en realidad, es un campo. Prueba con esto:
Código Delphi [-]
with DMPrimitiva.Qinsertarjueves do
begin
  Sql.Clear;
  Sql.Add('select count (*) from reserva');
  Sql.Add('where num_sorteo=:num_sorteo2');
  ParamByName('num_sorteo2').AsInteger := StrToInt(Edit1.text);
  Open;
  Edit2.Text := Fields[0].AsInteger;
  Close;
end;

dsa132132 25-08-2004 12:06:34

Muchas gracias Marto!!

Un apunte, en la línea;

Edit2.Text := Fields[0].AsInteger; he tenido que poner
Edit2.Text := Fields[0].AsString; por incompatibilidad de tipos.

Por fin cerraremos este hilo de una vez por todas,jaja!!

Muchas Gracias a todos por vuestro gran interés, Saludos!!


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

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