Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Adquirir el campo del registro actual (https://www.clubdelphi.com/foros/showthread.php?t=23741)

nuri 27-07-2005 10:45:05

Adquirir el campo del registro actual
 
Hola a todos:
Deseo adquirir el valor de un campo en el registro actual del Query, lo he inentado haciendo esto:
Código Delphi [-]
Query1.SQL.Text:='Select * From COCHES WHERE MATRICULA=:mat';
Query1.ParamByName('mat').AsString:=FormImprime.Query1.FieldByName('MATRICULA').AsString;
Query1.Active:=true;
Siendo COCHES la tabla y matricula un campo de la tabla.

Pero no me devuelve nada, ¿tengo k realizar alguna operación para que me tome el campo?.
Gracias a quien pueda ayudarme
Atentamente.;)
Nuri

hector.roma 27-07-2005 12:44:12

A mi algo me parece raro
 
yo en mi caso no trabajo asi con las querys... así que no voy a ser de gran ayuda, pero me llama la atención:

Código:

Query1.SQL.Text:='Select * From COCHES WHERE MATRICULA=:mat';
Query1.ParamByName('mat').AsString:=FormImprime.Query1.FieldByName('MATRICULA').AsString;  // ??? seguro ???
Query1.Active:=true;

Que antes de activar la query ya intentes recuperar un valor de la misma. Es decir, no deberías para asignarle el parámetro "mat", pasarle algo que no estuviera en la Query (o por lo menos no en esa).

Pero repito, no manejo así las querys entonces no se...

nuri 27-07-2005 13:26:12

Okis tienes razón, así no puedo conseguir el campo.Lo haré mediante un cuadr de diálogo en el que el usuario elija el registro que desea imprimir.
Gracias por tu respuesta.
Atentamente
Nuri;)

vtdeleon 27-07-2005 13:29:20

Saludos

Muestra la sentencia que tienes en el Query del FormImprime.

Prueba con un showmessage() antes de asignarle algun valor, para ver si este contiene algo o muestrolo con un dbgrid.

Si los dos query1 son diferente(supongo) , no veo porque no sale nada, al menos que la condicion no devuelva ningun valor en el query del formImprime

marcoszorrilla 27-07-2005 14:50:46

Veo en tu SQL, que tendrás que explicar más para decirnos que es exactamente lo que pretendes, que quieres filtrar un registro de una consulta aún no abierta por medio de un párametro......?

Si quieres recuperar el valor equivalente a la fila que pulsas.....
Simplemente abre la consulta sin más

Select * from MiTabla

Al pulsar, puede ser el evento de la rejilla OnCellClick ......
Código Delphi [-]
 MiVariableApropiada:=Query1.Fields[1].AsString;

Nota: La colección de campos va desde 0 hasta x-1

Un Saludo.

nuri 27-07-2005 15:45:33

Okis, eso es lo que quiero hacer, filtrar un registro de una tabla.
Lo que quiero hacer es imprimir el registro al que está apuntando la tabla sólo ése registro.
La variable que me indicas la quiero utilizar para realizar la consulta que me filtraría el registro.
He puesto mi código así:
Código Delphi [-]
 FormImprime.Query1.SQL.Text:='SELECT * FROM COCHES WHERE MATRICULA=:mat';
   FormImprime.Query1.ParamByName('mat').AsString:=FormImprime.Query1.Fields[0].AsString;
   FormImprime.Query1.Active:=True;
   FormImprime.QuickRep1.Preview;
Pero no me devuelve nada.
Gracias de todas formas a todos
Atentamente
Nuri

maeyanes 27-07-2005 16:16:54

No te devuelve nada por que el valor que le estás pasando al parámetro :mat es del mismo query, el cual no has ejecutado.
Código Delphi [-]
FormImprime.Query1.SQL.Text:='SELECT * FROM COCHES WHERE MATRICULA=:mat';
FormImprime.Query1.ParamByName('mat').AsString:=
  FormImprime.Query1.Fields[0].AsString; // Aquí está el problema
FormImprime.Query1.Active:=True;
FormImprime.QuickRep1.Preview;
Lo raro es que no te de ningún error de que el query no está abierto.

Tienes que buscar otra forma de obtener el valor del parámetro, que podría ser mediante un edit donde escribas la matrícula a buscar y al dar click en un botón hacer algo como:
Código Delphi [-]
procedure Form1.Button1OnClick(Sender: TObject);
begin
  // Tu código anterior
  FormImprime.Query1.ParamByName('mat').AsString := Edit1.Text;
  // Tu código anterior
end;
Esto es solo un ejemplo de como podrías hacerlo, ya te corresponde a tí adecuarlo a lo que realmente estés realizando.

Saludos...

nuri 27-07-2005 16:42:51

Okis, gracias.
ya voy a por ello.
Muchas gracias a todos.
Atentamente;)
Nuri

hector.roma 27-07-2005 16:46:58

Otra idea con una segunda query...
 
Supongo que con estas líneas...
Cita:

FormImprime.Query1.Active:=True;
FormImprime.QuickRep1.Preview;
lo que consigues es previsulizar el contenido actual de Query1, que por lo que veo pretendes que solo tenga aquellos registros donde la matrícula sea igual a la que sacas de la query...

Si esto es así, y quieres mantener el estilo... a lo mejor tendrías que hacer una Query2 donde insertar el SQL que te interesa, y en principio ya podrías recoger el valor actualmente "seleccionado" en la Query1 (siempre y cuando ya estuviera abierta).

Es otra idea...


La franja horaria es GMT +2. Ahora son las 01:24:21.

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