Delphi - Nadie sabe trabajar con ´´query´´ ? Por Dios..

 
Vista:
sin imagen de perfil

Nadie sabe trabajar con ´´query´´ ? Por Dios..

Publicado por Eddy (8 intervenciones) el 14/08/2002 15:39:06
(Tengo esto)

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
desde : TDate;
hasta : TDate;
begin
DataModule2.query1.Open;
desde := DateTimePicker1.DateTime;
hasta := DateTimePicker2.DateTime;
while not DataModule2.query1.Eof do begin
{DataModule2.Query1.SQL.Clear;}
DataModule2.query1.sql.add('SELECT * FROM Detallesfacturas where Detallesfacturas.ENTRADA >= desde AND Detallesfacturas.SALIDA <= hasta');
QuickReport3.preview;
end;
end;

(El resultado es el siguiente)

value assigned to 'hasta' never used
value assigned to 'desde' never used

(Ademas de que el reporte sale sin dada).

(El 'query1' tiene esto)

SELECT Detallesfacturas.CHOFER, Detallesfacturas.ENTRADA, Detallesfacturas.SALIDA, Tarjeta1.FURGON_NO
FROM DETALLESFACTURAS Detallesfacturas, TARJETA1 Tarjeta1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE: MADRE MIA!!!

Publicado por Peter Investment (3 intervenciones) el 14/08/2002 16:02:40
Hola Eddy.
Lo primero es decirte que no te desesperes que todo llega... la ayuda tambien.
Lo segundo, es abroncarte un poco por lo que has escrito (por tu codigo)
Y lo tercero, es ayudarte a solucionarlo:
""value assigned to 'hasta' never used"" y ""value assigned to 'desde' never used"" no0 es un fallo del programa sino un hint que te muestra el compilador pq efectivamente no los usas.
"""while not DataModule2.query1.Eof do begin"" Esto no tiene ningun sentido. te recorres los registros de una query a la cual borrar su sql ¿?
""(El 'query1' tiene esto) SELECT Detallesfacturas.CHOFER, Detallesfacturas.ENTRADA"" Eso no es posible porque cuando estes en ejecucion el query1 va a tener esto:
DataModule2.query1.sql.add('SELECT * FROM Detallesfacturas where Detallesfacturas.ENTRADA >= desde AND Detallesfacturas.SALIDA <= hasta');
Como tras asignarle esto a tu query no le haces un open, es logico quye no te muestre nada.
Por tanto:
1.- Explicame que quieres hacer.
2.- No desesperes, veras como lo solucionamos.
Saludos,
Peter IOnvestment

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE: MADRE MIA!!!

Publicado por Peter Investment (8 intervenciones) el 14/08/2002 16:34:36
La idea es, imprimir un reporte con los campos espicificados que se encuentran en dos tablas diferentes. Utilizando dos (DateTimePicker)
para asignarle el rango de fecha, que es objetivo del reporte, donde la
variable (desde) tomara el inicio y (hasta) tomara el final del rango.

Y estos se imprimiran luego de asignar la fecha y precionar un SpeedButton. Si hay una idea mejor, mil agradecimientos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: MADRE MIA!!!

Publicado por Peter Investment (3 intervenciones) el 14/08/2002 16:44:24
Bueno. Vamos por partes.
Veo que tienes un Modulo de datos y un report:
1.- ¿Tienes el report asociado? Su propiedad Dataset esta enganchada a algo?? He de suponer que esta enganchado a DataModule2.query1
Si es asi yo haria lo siguiente en el boton que muestra el report:

DataModule1.query1.sql.add('SELECT * FROM Detallesfacturas where ENTRADA >=:desde AND SALIDA <= :hasta');
datamodule2.query1.paramByName('desde').asDateTime:= desde;
datamodule2.query1.paramByName('hasta').asDateTime:= hasta;
Datamodule2.query1.open;
QuickReport3.prewiev;
Saludos,
Peter Investment
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE: MADRE MIA!!!

Publicado por Eddy (8 intervenciones) el 14/08/2002 17:12:44
1.Tengo un modulo de dato y un report -----correcto.
2.La propiedad dataset esta enganchada a (DataModule2.Query1). Ok

Corrida con F9 genera lo siguiente:
project project.exe raised exception class EDBEngineError message 'General SQL error.
Toquen unknow - Line 4, char - 1
SELECT '. Process stopped.

Corrida con F7 se detiene aquí..
Datamodule2.query1.open;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Nadie sabe trabajar con ´´query´´ ? Por Dios..

Publicado por BigLuis (463 intervenciones) el 14/08/2002 16:17:30
A la vista de tu mensaje parece ser que el que no sabe trabajar con querys ni con bucles eres tú.Falla por todos los lados: 1º) Si el query está activo no le puedes asignar en runtime nada al sql. 2º) El bucle "while not DataModule2.query1.Eof " no se sabe en que registro empieza y además ¿que quieres que a cada iteraccion del bucle asigne a Query1.Sql la sentencia que pones? No entiendo nada. 3º) Has utilizado parámetros ("Detallesfacturas.ENTRADA >= desde ") y estos ni se declaran como tu lo has hecho ni se asignan de esa forma y por ultimo 4º)En el ultimo parrafo mezclas DetallesFacturas con Tarjeta1 sin ninguna relacion (where,inner,join etc) y asi no se que te puede salir.
En fin dale un repaso al SQL
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Si lo supiera!

Publicado por Para BigLuis (8 intervenciones) el 14/08/2002 16:25:14
De saberlo lo hubiese llegado hasta ese punto, ni mucho menos
estubiera preguntando cosa que para el que sabe son sencillas.

Yo pedi ayuda no critica, Ok.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Si lo supiera!

Publicado por BigLuis (463 intervenciones) el 14/08/2002 16:31:33
Yo probablemente se menos que tú, pero de una cosa estoy seguro y es que lo poco que se lo he aprendido recibiendo críticas.De todas formas si te has ofendido te pido disculpas y si te puedo ayudar en algo hazmelo saber.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Respuesta a lo del Query

Publicado por Kary (6 intervenciones) el 15/08/2002 01:39:46
(Si tu tienes esto)

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
desde : TDate;
hasta : TDate;
begin
DataModule2.query1.Open;
desde := DateTimePicker1.DateTime;
hasta := DateTimePicker2.DateTime;
while not DataModule2.query1.Eof do begin
{DataModule2.Query1.SQL.Clear;}
DataModule2.query1.sql.add('SELECT * FROM Detallesfacturas where Detallesfacturas.ENTRADA >= desde AND Detallesfacturas.SALIDA <= hasta');
QuickReport3.preview;
end;
end;

(y tu query esta asi)

SELECT Detallesfacturas.CHOFER, Detallesfacturas.ENTRADA, Detallesfacturas.SALIDA, Tarjeta1.FURGON_NO
FROM DETALLESFACTURAS Detallesfacturas, TARJETA1 Tarjeta1

--------------------------------------------------------

YO LO HARIA DE LA SIGUIENTE FORMA:

(sin parametros de ninguna clase!!)

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
desde,hasta :string; //para concatenar
begin
desde := quotedstr(FormatDateTime('dd/mm/yyyy', DateTimePicker1.Date)); // el resultado seria: '14/08/2002' con todo y comillas(el quotedstr te agrega las comillas).

hasta := quotedstr(FormatDateTime('dd/mm/yyyy', DateTimePicker2.Date));

DataModule2.Query1.SQL.Clear; //Limpiar el Query1.sql

// despues se "arma" la sentencia SQL:

DataModule2.query1.sql.add('SELECT Detallesfacturas.CHOFER, Detallesfacturas.ENTRADA, Detallesfacturas.SALIDA FROM DETALLESFACTURAS Detallesfacturas where Detallesfacturas.ENTRADA >='+ desde+' AND Detallesfactur
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Respuesta a lo del Query parte 2

Publicado por Kary (6 intervenciones) el 15/08/2002 19:47:46
Creo que no llego el mensaje completo, asi es que ahi te va de nuevo el procedimiento, espero que esto te sirva de algo...

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
desde,hasta :string; //para concatenar
begin
desde := quotedstr(FormatDateTime('dd/mm/yyyy', DateTimePicker1.Date));

// el resultado seria: '14/08/2002' con todo y comillas(el quotedstr te agrega las comillas).

hasta := quotedstr(FormatDateTime('dd/mm/yyyy', DateTimePicker2.Date));

DataModule2.Query1.SQL.Clear; //Limpiar el Query1.sql

// despues se "arma" la sentencia SQL:
DataModule2.query1.sql.add('SELECT Detallesfacturas.CHOFER, Detallesfacturas.ENTRADA, Detallesfacturas.SALIDA FROM DETALLESFACTURAS where Detallesfacturas.ENTRADA >='+ desde+' AND Detallesfacturas.SALIDA <='+ hasta);

//ejecutas el query y el reporte:
DataModule2.query1.Open;
QuickReport3.preview;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Respuesta a lo del Query parte 2

Publicado por Eddy (8 intervenciones) el 15/08/2002 23:04:30
Muy efectivo..

Hasta ahora muy bien, cuando lo corro con la fecha que tiene el DateTimePicker1 por defecto, todo muy bien, pero cuando la cambio por ejemplo 01/12/2001 al 31/12/2001 da el este error:

project project.exe raised.....Invalid modify request.
conversion error from string ´´31/12/2001´´. process stopped.
----------------------------------------------
Otra cosa el DateTimePicker1 tiene la fecha por defecto de cuando lo cree, hay alguna propiedad que le permita tomar la del sistema?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Respuesta a lo del Query parte 2

Publicado por Kary (6 intervenciones) el 16/08/2002 01:43:51
Checate la configuración regional de tu computadora (si es Windows), seguramente la tienes con el formato de fecha corta "al reves"...

por ejemplo yo lo uso como 'dd/mm/aaaa' (dia/mes/año), y asi es como te di el ejemplo, al convertir...( FormatDateTime('dd/mm/yyyy'........ )

y a lo mejor tu lo tienes 'mm/dd/aaaa' (mes/dia/año), por eso al convertir, marca error, por no existir una fecha con mes 31... checatelo!...

-------------------------------
si no quieres cambiar la configuracion regional, nada mas cambia en la parte del programa en donde usas la funcion de FormatDateTime la cadena de 'dd/mm/yyyy' por 'mm/dd/yyyy'...

--------------------------------
y en cuanto al Datetimepicker, se le asigna la fecha como sigue:

Datetimepicker1.Date:=date;

Ojala te funcione, Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar