Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
Poder: 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
  #2  
Antiguo 04-12-2017
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
¿Estás seguro de que al cerrar o abrir una u otra ventana no estás, también, cerrando o cambiando algo en la base de datos? Lo digo porque muchas veces ponemos algo en un evento "onClose" y luego se nos olvida. También hay que tener en cuenta que hay muchos componentes implicados en una consulta. Un TSQLTransaction puesto donde no es puede cerrarte una conexión o hacerte un roll-back si se destruye antes de tiempo, por ejemplo.

La verdad, no sé qué comentarte, salvo decirte que todos los componentes implicados en el trabajo de la base de datos deberían estar en otro objeto fuera de las ventanas (por ejemplo, en un TData).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 04-12-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
No nada de echo el unico evento que tengo el form principal es el formcreate con esto que no tiene nada que ver

Código Delphi [-]
begin
 DTPfecha.Date := now;
 fmodulo.qnumventa.Active := true;
 fmodulo.Qtotal.Active := true;
  if fmodulo.qnumventa.Fields.FieldByName('id_venta').IsNull
    or (not TryStrToInt(Endeventa.Text, numventa))
      then
        numventa := fmodulo.qnumventa.fields.FieldByName ('id_venta').AsInteger + 1;
        Endeventa.Text := IntToStr(numventa);
  if fmodulo.Qtotal.IsEmpty
    then
        Eventatotal.Text := '0'
  else
  fmodulo.Qtotal.ParamByName('idv').AsInteger := numventa;
  fmodulo.Qtotal.Open;
  fmodulo.Qtotal.Refresh;
  Eventatotal.Text := fmodulo.Qtotal.Fields.FieldByName('Total').AsString;
end;

En ningun momento toco la consulta de la fecha que es la que me esta generando problemas
Ademas cierro las consultas y demas una vez que se "paga" no tengo nada ahi mas que 3 botonos y ningun evento en el segundo form.
Con respecto a las componentes estoy usando zeos con dataset y consulta nada mas que se activan al abrir el primer form y como dije no se cierran hasta que se hace efectivo el pago. No deberia cerrarse nada si no se hace efectivo el pago
__________________
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
  #4  
Antiguo 05-12-2017
Avatar de The Cid James
The Cid James The Cid James is offline
Miembro
NULL
 
Registrado: jun 2013
Posts: 129
Poder: 11
The Cid James Va por buen camino
Al final lo termine haciendo con un checkboxlist dentro del mismo form porque no encontre el error gracias por la ayuda
__________________
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
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Desactivar el botón de cerrar [x] de una ventana dec Trucos 0 30-06-2006 15:00:44
bloquear el boton [X] para cerrar una ventana juanmdq HTML, Javascript y otros 3 20-12-2005 00:17:04
Suprimir el boton de cerrar de los marcos hook Varios 1 03-05-2005 10:57:31
Cómo saber que se pulsa el botón cerrar Berto2003 Varios 3 16-12-2003 11:18:42
Boton cerrar del formulario (X) Un abrazo OOP 2 26-05-2003 17:26:54


La franja horaria es GMT +2. Ahora son las 13:13:52.


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