Ver Mensaje Individual
  #1  
Antiguo 04-12-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Reputación: 11
The Cid James Va por buen camino
Problemas al cerrar con boton

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;
__________________
We are told to remember the idea, not the man, because a man can fail. He can be caught, he can be killed and forgotten, but 400 years later, an idea can still change the world.
Responder Con Cita