PDA

Ver la Versión Completa : Algo curioso al salir de un edit... me lo graba


JoanKa
18-01-2007, 23:56:34
Hola todos una pregunta que ya estoy varios dias en estoy me tiene cabezonazo

Haber tengo 2 formularios :

1. FRM_Busqueda_Clientes
2. FRM_Mantenimiento_Clientes

Les explico como va... es respecto a realizar una factura para que tengan una idea

En Frm_Busqueda_Clientes tengo todos los clientes en un grid y tengo tres botones:
A. Nuevo Cliente
B. Seleccionar Cliente
C. Salir

Estando en el Frm_Busqueda_Clientes presiono el Boton Nuevo Cliente el cual en el evento click tengo :

procedure TFRM_Busqueda_Clientes.BTN_Nuevo_ClienteClick(Sender: TObject);
begin
FRM_Busqueda_Clientes.Close;
// Variable declarada Global
var_alta_factura_cliente:='Nuevo_Cliente_Factura';
FRM_Mantenimiento_Clientes.Show;
end;

Y como ven me muestra el Formulario de Clientes : FRM_Mantenimiento_Clientes

Hasta aca todo bien....
Ahora en este formulario(FRM_Mantenimiento_Clientes) hay varios edit asociados a los campos de la Tabla Clientes.

Codigo |------------|

Fecha Alta |------------|

Nif |------------|

Nombre Empresa |------------|

......Otros Edits
Entoces en el evento onActivate del Formulario de Clientes tengo esto:

procedure TFRM_Mantenimiento_Clientes.FormActivate(Sender: TObject);
var
x:string;
begin
TBL_CLIENTES.Active:=True;
if TBL_CLIENTES.Bof then
begin
PGC_Clientes.ActivePage:=TBS_Lista;
ACC_Primero.Enabled := False;
ACC_Anterior.Enabled :=False;
end;

x:=FRM_Busqueda_Clientes.var_alta_factura_cliente;
if x='Nuevo_Cliente_Factura' then
begin
PGC_Clientes.ActivePage:=TBS_Datos;
PAN_Datos.Enabled:=True;
TBL_CLIENTES.Active:=True;
TBL_CLIENTES.Insert;
EDT_Alta.Text:=FormatDateTime('dd/mm/yyyy',now);
QRY_CLIENTES.Active:=True;
QRY_CLIENTES.SQL.Text:='SELECT MAX(CLI_CODIGO) FROM T_CLIENTES';
QRY_CLIENTES.Open;
TXT_CODIGO.Text:= IntToStr(QRY_CLIENTES.Fields[0].AsInteger+1);
EDT_Codigo.Text:='CLI_'+ IntToStr(QRY_CLIENTES.Fields[0].AsInteger+1);
EDT_Nif.SetFocus;
end;
end;

Entonces veran que me genera el codigo con el query, me asigna la fecha bien, Y EL CURSOR SE PONE EN EL NIF, ENTONCES ESCRIBO CUALQUIER NIF Y CUANDO QUIERO SALIR DEL NIF PARA IR A OTRO EDIT ME LO GRABA Y ME GENERA OTRO CODIGO(SI ANTERIORMENTE ERA POR EJMPLO 15200 AHORA ES 15201), LA MISMA FECHA Y EL CURSOR OTRA VEZ SE PONE EN EL CAMPO DEL NIF Y PONGO CUALUQIER NIF Y AHORA ME VOY A OTRO CAMPO Y SI ME DEJA INGRESAR EL NOMBRE DE LA EMPRESA POR EJEMPLO...... Y AHORA SOLO CUANDO PRESIONE EN UN BOTON GRABAR SI ME REGISTRA TODO LOS DATOS INGRESADOS..

¿pOR QUE CUANDO ME VOY DEL FORMULARIO DE BUSQUEDA DEL CLIENTE AL FORMULARIO DE DATOS DEL CLIENTE ME SUCEDE ESTO?

Como puedo controlar esto ya que llevo varios dias ??

Gracias y saludos

ContraVeneno
19-01-2007, 02:00:54
no se exactamente que esta pasando... lo que si te puedo decir, es que es muy mala idea que estes guardando datos en el evento OnActivate de un formulario, ya que este se activará cada vez que este formulario aparezca en la pantalla. es decir, muestras el formulario y se ejectua el código; por alguna razón cambias de venta y luego regresas otra vez al formulario y se vuelve a ejecutar el código. Tal vez sea esto lo que te esta pasando.

Lepe
19-01-2007, 12:32:55
no se exactamente que esta pasando...

Para no saberlo exactamente lo has explicado muy bien ;) :D.

Saludos

JoanKa
19-01-2007, 23:48:52
no se exactamente que esta pasando... lo que si te puedo decir, es que es muy mala idea que estes guardando datos en el evento OnActivate de un formulario, ya que este se activará cada vez que este formulario aparezca en la pantalla. es decir, muestras el formulario y se ejectua el código; por alguna razón cambias de venta y luego regresas otra vez al formulario y se vuelve a ejecutar el código. Tal vez sea esto lo que te esta pasando.

Entonces que me se sugieres para que no me sucede este problema.

Gracias y SaLudos

ContraVeneno
19-01-2007, 23:54:12
Entonces que me se sugieres para que no me sucede este problema.

Gracias y SaLudos

Pense que era bastante obvio :rolleyes:. Cambia de evento.

JoanKa
20-01-2007, 00:16:28
Pense que era bastante obvio :rolleyes:. Cambia de evento.

He cambiado de evento y nada , lo he puesto en el evento Form Show del Mantenimiento de clientes como lo muestro a continuacion:

procedure TFRM_Mantenimiento_Clientes.FormShow(Sender: TObject);
var
x:string;
begin
x:=FRM_Busqueda_Clientes.var_alta_factura_cliente;
if x='Nuevo_Cliente_Factura' then
begin
PGC_Clientes.ActivePage:=TBS_Datos;
PAN_Datos.Enabled:=True;
TBL_CLIENTES.Active:=True;
TBL_CLIENTES.Insert;
EDT_Alta.Text:=FormatDateTime('dd/mm/yyyy',now);
QRY_CLIENTES.Active:=True;
QRY_CLIENTES.SQL.Text:='SELECT MAX(CLI_CODIGO) FROM T_CLIENTES';
QRY_CLIENTES.Open;
TXT_CODIGO.Text:= IntToStr(QRY_CLIENTES.Fields[0].AsInteger+1);
EDT_Codigo.Text:='CLI_'+ IntToStr(QRY_CLIENTES.Fields[0].AsInteger+1);
EDT_Nif.SetFocus;
end;
end;

Pero no me hace nada, me podrias decir por favor en que evento lo puedo poner..

gracias

ContraVeneno
20-01-2007, 00:26:42
Lo que yo haría sería poner un botón "Aceptar" y un botón "Cancelar" para que el usuario confirmara o cancelara la acción que estas queriendo realizar. Y el guardar lo haría en el evento click del botón "Aceptar".

Fuera de eso no puedo opinar más ya que no conozco tu sistema ni su funcionamiento lógico.