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;