Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ayuda con apertura de Caja (https://www.clubdelphi.com/foros/showthread.php?t=90645)

cristian22 01-08-2016 23:38:59

Ayuda con apertura de Caja
 
Hola buenas tardes estoy trabajando con un formulario que realiza la apertura de caja lo estoy desarrollando usando componentes query de zeos en delphi 2010 y para la base de datos utilizo mysql-5.En cual dicha base de datos tengo 2 tablas una que se llama Caja y la otra apertura las cuales estan conformadas por los siguientes datos

Código SQL [-]
caja:
idcaja
monto_total
estado

Código SQL [-]
apertura
idcaja
monto_inicial
fecha

En el Formulario tengo los siguientes componentes. Un dblookupcombobox1 para seleccionar la caja que deseo abrir. Un Tedit para ingresar el monto de inicial, un tdatetimepicker para registrar la fecha de apertura dicha fecha se toma por medio de un query que contiene una consulta a la base de datos.Y 2 botones uno aceptar y otro cancelar.

Bien a la hora de realizar el post en el boton aceptar no tengo prolema realizo con el siguiente codigo.
Código Delphi [-]
qApertura.Active:=true;
qApertura.Insert;
qFecha.Open;
qApertura['Fecha_Apertura']:=qFecha['fecha'];
qApertura['Hora_Apertura']:= qFecha['hora'];
qApertura['Monto_Inicial']:=StrToInt(self.Edit2.Text);
qFecha.Close;
qApertura.Post;

Hasta aqui no tengo ningun prolema. Resulta que ahora quiero realizar la siguiente comprobación. Quiero verificar si la caja que seleccione en el dblookupCombobox. Tiene el estado en 0 si es así le cambio el valor a 1 y realizo el post. De lo contrario muestro un mensaje que diga que la caja ya fue abierta. Realice el siguiente código. resulta que no me verifica si el estado de la caja que ya seleccione esta en 0 o en 1. Tal vez estoy realizando algo mal si pudieran ayudarme desde ya se los agradezco

Código Delphi [-]
procedure TfApertura.bAceptarClick(Sender: TObject);
begin

qCaja.Open;
qApertura.Active:=true;
while not qCaja.Eof do
    begin
        if qCaja.FieldByName('estado_caja').AsInteger = 0 then
               begin
                qCaja.Edit;
                qApertura.Insert;
                qFecha.Open;
                qApertura['Fecha_Apertura']:=qFecha['fecha'];
                qApertura['Hora_Apertura']:= qFecha['hora'];
                qApertura['Monto_Inicial']:=StrToInt(self.Edit2.Text);
                qFecha.Close;
                qCaja.FieldByName('estado_caja').AsInteger:=1
               end
                else
                showmessage('Caja Abierta');
    end;
        qApertura.Post;
        self.Close;

 end;

Neftali [Germán.Estévez] 02-08-2016 08:18:40

Haces un Edit de qCaja, cambias el valor, pero no haces un Post.
Después de esta línea:

Código Delphi [-]
qCaja.FieldByName('estado_caja').AsInteger:=1

coloca:

Código Delphi [-]
  qCaja.Post;

cristian22 02-08-2016 16:51:28

Gracias Por responder
 
Cita:

Empezado por Neftali (Mensaje 507328)
Haces un Edit de qCaja, cambias el valor, pero no haces un Post.
Después de esta línea:

Código Delphi [-]
qCaja.FieldByName('estado_caja').AsInteger:=1

coloca:

Código Delphi [-]
  qCaja.Post;

tenes razon me faltaba hacer el post. Pero ahora me tira un error. Resulta que tengo 2 cajas una con estado 0 y otra con estado 1 como mensione las seleciono con el dblookupcombobox1, Cuando selecciono la Caja 1 que tiene como "estado 0" apreto el boton aceptar y me dice "SQL Error Column idcaja cannot be null" y si selecciono la caja 2 al hacer lo mismo queda con el mensaje de "estado inactivo" pero se queda tildado y no me deja cerrarlo
gracias por responder

Neftali [Germán.Estévez] 03-08-2016 08:14:33

Cita:

Empezado por cristian22 (Mensaje 507338)
Cuando selecciono la Caja 1 que tiene como "estado 0" apreto el boton aceptar y me dice "SQL Error Column idcaja cannot be null"

¿Ese error no será de la inserción en la otra tabla?
Ejecuta "paso a paso" ese código y a ver cual es la línea real donde falla.

cristian22 03-08-2016 08:43:41

Hola
 
Cita:

Empezado por Neftali (Mensaje 507346)
¿Ese error no será de la inserción en la otra tabla?
Ejecuta "paso a paso" ese código y a ver cual es la línea real donde falla.

Hola ya realize la comprobacion primero me tira un error en el if
Código Delphi [-]
if fModulo.qCaja.FieldByName('estado_caja').AsInteger=0 then

probe sacando el if para ver que pasaba y luego salio error en el insert
Código Delphi [-]
 fModulo.qCaja.Insert;

Neftali [Germán.Estévez] 03-08-2016 08:58:41

¿Y cual es el error en cada una?

Esta línea:
Código Delphi [-]
if fModulo.qCaja.FieldByName('estado_caja').AsInteger=0 then

No puede provocar este error:
"SQL Error Column idcaja cannot be null"

Salvo que tengas código en otro lugar (evento, triggers,...) que no estás poniendo aquí.

cristian22 03-08-2016 16:58:06

Hola
 
Cita:

Empezado por Neftali (Mensaje 507350)
¿Y cual es el error en cada una?

Esta línea:
Código Delphi [-]
if fModulo.qCaja.FieldByName('estado_caja').AsInteger=0 then

No puede provocar este error:
"SQL Error Column idcaja cannot be null"

Salvo que tengas código en otro lugar (evento, triggers,...) que no estás poniendo aquí.

Hola en esta linea el error es el que te nombre que cuando eligo la caja por ejemplo la 2 que tiene estado 1 queda el programa colgado en el else no se por que
Código Delphi [-]
if fModulo.qCaja.FieldByName('estado_caja').AsInteger=0 then

y si en caso que eliga la caja 1 que tiene estado 0 me tira error en el Insert

Casimiro Notevi 03-08-2016 17:53:31

Necesitas leer esto.


La franja horaria es GMT +2. Ahora son las 02:14:33.

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