Buenas gente tengo este botón que llama a un form que me da a elegir el modo de pago
Código Delphi
[-]procedure Tfventa.BVaceptarClick(Sender: TObject);
begin
fmodulo.tVenta.Insert;
fmodulo.qFechahora.Active := true;
fmodulo.qFechahora.Open;
fmodulo.tProductos.Edit;
if idcliente = 0
then
begin
application.MessageBox(pchar('Solo Clientes Registrados pueden pagar con credito'),
pchar('ERROR'), (MB_OK + MB_ICONINFORMATION));
fmodulo.tVenta['id_cliente'] := 1;
fpago.BPcredito.Enabled := false;
Tfpago.Create(self).ShowModal;
end
else
begin
fmodulo.tVenta.Insert;
fmodulo.tVenta['id_cliente'] := idcliente;
tfpago.Create(self).ShowModal;
end;
end;
En el form que llamo solo tengo 3 botones.
1- si el cliente paga en efectivo
2- si el cliente paga con crédito
3- con el botón cerrar
Ahora bien, todo funciona normalmente a menos que cancele la operacion
en el boton cancelar solo tengo esto
Código Delphi
[-]procedure Tfpago.BPcancelarClick(Sender: TObject);
begin
Self.Close;
end;
ahora el problema surge cuando al cerrar el segundo form, quiero volver a abrir el form de modo de pago, me dice que tiene una excepción sql y que los datos not null de la base de datos no pueden ser nulos. pero no estoy cerrando ningún dataset al cerrar el segundo form ni nada parecido, solo cerrando el form por lo cual los datos deberian seguir como estan hasta el momento. Ademas el post a la base de datos lo tengo en el boton de pago en efectivo y credito.
Código Delphi
[-]procedure Tfpago.BPefectivoClick(Sender: TObject);
begin
fmodulo.tVenta['fecha'] := fmodulo.qFechahora['fecha'];
fmodulo.tVenta['hora'] := fmodulo.qFechahora['hora'];
fmodulo.tVenta['total_venta'] := fmodulo.Qtotal.Fields.FieldByName('Total').AsString;
fmodulo.tProductos['Stock'] := fmodulo.tProductos ['Stock'] - fmodulo.tVentadetalle['cantidad'];
if fventa.idcliente = 0
then
begin
fmodulo.tVenta['id_cliente'] := 1;
end
else
begin
fmodulo.tVenta['id_cliente'] := fventa.idcliente;
end;
fmodulo.tVenta.Post;
fmodulo.qventadetalle.Close;
fmodulo.qFechahora.Active := false;
fmodulo.tVenta.Active := false;
fmodulo.qProductos.Active := false;
fmodulo.qventadetalle.Active := false;
fmodulo.tProductos.Active := false;
Close;
fventa.Close;
end;