Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2016
jose001 jose001 is offline
Miembro
NULL
 
Registrado: jul 2016
Posts: 13
Poder: 0
jose001 Va por buen camino
ayuda consulta en un edit

hola buenas tardes planteo mi duda tengo un formulario de caja en el cual esta compuesto por un dbgrid y 2 datetimepicker y un edit. esta aplicacion esta echa en delphi 2010 y componentes query de zeos y uso mysql-5 para la base de datos.
En dicho formulario lo que quiero realizar es lo siguiente buscar por fecha seleccionada en los datetimepicker y segun la fecha quiero traer el ultimo total de esa busqueda y guardarlo en un edit. y los demas datos que mostrarlo en el grid
bien con este codigo en el boton buscar

Código Delphi [-]
qCaja.Close;
qCaja.SQL.Clear;
qCaja.SQL.ADD('select * from caja');
qCaja.SQL.ADD('where fecha BETWEEN :Finicio AND :Fhasta');
qCaja.Params[0].AsDate:= Finicio.Date;
qCaja.Params[1].AsDate:= Fhasta.Date;
la busqueda se realiza a la perfección trayendo los datos de la caja segun la fecha y me los muestra en el dbgrid por esta parte esta bien ahora lo que queria es segun esa fecha traerme el ultimo total para ello plantie el siguiente codigo


Código Delphi [-]
qCaja.Close;
qCaja.SQL.Clear;
qCaja.SQL.ADD('select * from caja');
qCaja.SQL.ADD('where fecha BETWEEN :Finicio AND :Fhasta');
qCaja.SQL.ADD('AND idcaja=(select max(idcaja) from caja')); // linea agregada
qCaja.SQL.ADD('AND monto_total = :total')); // linea agregada
Edit1.Text:= qCaja.ParambyName('total').AsInteger; //linea agregada
qCaja.Params[0].AsDate:= Finicio.Date;
qCaja.Params[1].AsDate:= Fhasta.Date;


bien aca pasa lo siguiente me tira un error de que mysql no me reconoce la consulta. Probé usando un nuevo query para esas 3 lineas agregadas y el resultado es el mismo alguna ayuda ?
aclaro que quiero traer el ultimo total segun esa fecha para mostrarlo en primer lugar y luego lo re utilizare en otra operacion mas adelante
desde ya muchas gracias
Responder Con Cita
  #2  
Antiguo 21-11-2016
aposi aposi is offline
Miembro
 
Registrado: dic 2006
Posts: 146
Poder: 18
aposi Va por buen camino
creo que el error esta en que no cierras el parentesis del select.

valida el SQL
Código Delphi [-]
showmessage (qCaja.SQL.text)
Responder Con Cita
  #3  
Antiguo 21-11-2016
jose001 jose001 is offline
Miembro
NULL
 
Registrado: jul 2016
Posts: 13
Poder: 0
jose001 Va por buen camino
Cita:
Empezado por aposi Ver Mensaje
creo que el error esta en que no cierras el parentesis del select.

valida el SQL
Código Delphi [-]
showmessage (qCaja.SQL.text)
disculpa el codigo lo transcrebi a mano alsada por eso el error de escritura verifique el codigo y si tengo bien escrito todo en el delphi pero al ahora de ejecutar el boton me tira error
Responder Con Cita
  #4  
Antiguo 21-11-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Si deseas traer de la tabla la última fila comprendida entre ambas fechas, en MySQL creo que sería:
Código SQL [-]
SELECT *
FROM CAJA
WHERE FECHA BETWEEN :FINICIO AND :FHASTA
ORDER BY FECHA DESC
LIMIT 1

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 21-11-2016
jose001 jose001 is offline
Miembro
NULL
 
Registrado: jul 2016
Posts: 13
Poder: 0
jose001 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Si deseas traer de la tabla la última fila comprendida entre ambas fechas, en MySQL creo que sería:
Código SQL [-]
SELECT *
FROM CAJA
WHERE FECHA BETWEEN :FINICIO AND :FHASTA
ORDER BY FECHA DESC
LIMIT 1

Saludos
Hola estem mira el tema es que no quiero traer la ultima fila. Mas bien quiero mostrar todos los datos en el grid entre esa fecha y de todos esos datos seleccionar solo el campo total de la ultima fila y este mostrarlo en el edit por eso intente usarlo con un max(id) no se si queda clara mi duda
Responder Con Cita
  #6  
Antiguo 22-11-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jose001.
Cita:
Empezado por jose001 Ver Mensaje
Hola estem mira el tema es que no quiero traer la ultima fila. Mas bien quiero mostrar todos los datos en el grid entre esa fecha y de todos esos datos seleccionar solo el campo total de la ultima fila y este mostrarlo en el edit por eso intente usarlo con un max(id) no se si queda clara mi duda
Yo me refería a lanzar una consulta adicional para obtener el valor de la columna TOTAL.

A ver si con un ejemplo me explico mejor...
Código Delphi [-]
...
// Función que devuelve el ultimo "TOTAL" comprendido entre dos fechas
function TtuForm.GetLastTotal( const d1, d2: TDate ): Currency;
begin
  qyTmp.Close;  
  qyTmp.SQL.Clear;
  qyTmp.SQL.Add( 'SELECT TOTAL FROM CAJA' );
  qyTmp.SQL.Add( 'WHERE FECHA BETWEEN :DESDE AND :HASTA' );
  qyTmp.SQL.Add( 'ORDER BY IDCAJA DESC LIMIT 1' );
  qyTmp.ParamByName( 'DESDE' ).AsDate := d1;
  qyTmp.ParamByName( 'HASTA' ).AsDate := d2;
  qyTmp.Open;
  Result := qyTmp.FieldByName( 'TOTAL' ).AsCurrency;
  qyTmp.Close;
end;

//...
// Lo que se muestra en el DBGrid:
begin
  qCaja.Close;
  qCaja.SQL.Clear;
  qCaja.SQL.Add( 'SELECT * FROM CAJA' );
  qCaja.SQL.Add( 'WHERE FECHA BETWEEN :DESDE AND :HASTA' );
  qCaja.SQL.Add( 'ORDER BY IDCAJA' );
  qCaja.ParamByName( 'DESDE' ).AsDate := Finicio.Date; 
  qCaja.ParamByName( 'HASTA' ).AsDate := Fhasta.Date;
  qCaja.Open;

  // Mostrar en el Edit el último "TOTAL" de la selección
  Edit1.Text := CurrToStr( GetLastTotal( Finicio.Date, Fhasta.Date ) );
end;

...
Claro está que en este caso existe la convención de usar el campo IDCAJA como órden.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 22-11-2016
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por jose001 Ver Mensaje
Código Delphi [-]
qCaja.Close;
qCaja.SQL.Clear;
qCaja.SQL.ADD('select * from caja');
qCaja.SQL.ADD('where fecha BETWEEN :Finicio AND :Fhasta');
qCaja.SQL.ADD('AND idcaja=(select max(idcaja) from caja')); // linea agregada
qCaja.SQL.ADD('AND monto_total = :total')); // linea agregada
Edit1.Text:= qCaja.ParambyName('total').AsInteger; //linea agregada
qCaja.Params[0].AsDate:= Finicio.Date;
qCaja.Params[1].AsDate:= Fhasta.Date;


bien aca pasa lo siguiente me tira un error de que mysql no me reconoce la consulta.
Hola jose001,

Es posible que el error sea de programación, fijate en la línea de "Edit1"
Código Delphi [-]
Edit1.Text:= qCaja.ParambyName('total').AsInteger; //linea agregada
Cambiala por:
Código Delphi [-]
Edit1.Text:= qCaja.ParambyName('total').AsString;

Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta 1 Edit a 2 Columnas de una Tabla Lenny Varios 5 15-07-2013 09:35:28
asignar resultado de consulta a un edit!! ezequiel913 Varios 6 11-06-2011 15:18:47
Consulta por dos edit diferente agustin173 Varios 6 11-06-2010 13:09:11
resultado de consulta sql a edit o dbedit?? ale_metall Conexión con bases de datos 1 17-05-2008 21:24:03
ver una consulta en un edit huwabe78 SQL 4 28-11-2006 17:50:31


La franja horaria es GMT +2. Ahora son las 22:46:40.


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
Copyright 1996-2007 Club Delphi