PDA

Ver la Versión Completa : Problema Para Guardar


jooooseph
27-09-2012, 17:18:44
BUEN DIA. TENGO UNA PEQUEÑA DIFUCULTAD PARA GUARDAR UNA FECHA. PARA ESTO CUANDO QUIERO QUE SE GUARDE LA FECHA PONGO LA CONDICION DE QUE ESTE CASADO Y SE MARQUE LA OPCION DE QUE SE SABE LA FECHA( CHECKBOX ) EL CODIGO ES EL SIGUIENTE.


PROCEDURE TFORM3.INGRESAR (NOM1,APEL,SEX,ESTA,MAIL,LIDE,DIREC,DIST,BAUT,MIEM: string; FECHA1,FECHA2: TDate; ACTI:BOOLEAN);
VAR CODIGO:INTEGER;
begin
CODIGO:=OBTENER_ULTIMO_CODIGO+1;
IF (ESTA = 'CASADO(A)') AND (ACTI=TRUE)
THEN BEGIN
SQLQUERY1.Close;
SQLQUERY1.SQL.Text:= 'Insert Into MIEMBROS(CODIGO_MIEMBRO,NOMBRE_COMPLETO,NOMBRE,APELLIDOS,FECHA_NACIMIENTO,SEXO,ESTADO_CIVIL,FECHA_BO DA,CORREO,LIDER,DIRECCION,DISTRITO,BAUTIZADO,
TIPO_MIEMBRO) Values(:COD,:FULLNAME,:NOM,:APELL,:FECHA_N,:SEX,:ESTADO_CIV,:FECHA_B,:EMAIL,:LIDER1,:DIREC,:DISTR,:B AUTI,:TIPO1)';
SQLQUERY1.ParamByName('COD').AsInteger:=CODIGO;
SQLQUERY1.ParamByName('FULLNAME').ASSTRING:=NOM1+', '+APEL;
SQLQUERY1.ParamByName('NOM').ASSTRING:=NOM1;
SQLQUERY1.ParamByName('APELL').ASSTRING:=APEL;
SQLQUERY1.ParamByName('FECHA_N').AsDate:=FECHA1;
SQLQUERY1.ParamByName('SEX').ASSTRING:=SEX;
SQLQUERY1.ParamByName('ESTADO_CIV').ASSTRING:=ESTA;
SQLQUERY1.ParamByName('FECHA_B').AsDate:=FECHA2;
SQLQUERY1.ParamByName('EMAIL').ASSTRING:=MAIL;
SQLQUERY1.ParamByName('LIDER1').ASSTRING:=LIDE;
SQLQUERY1.ParamByName('DIREC').ASSTRING:=DIREC;
SQLQUERY1.ParamByName('DISTR').ASSTRING:=DIST;
SQLQUERY1.ParamByName('BAUTI').ASSTRING:=BAUT;
SQLQUERY1.ParamByName('TIPO1').ASSTRING:=MIEM;
SQLQUERY1.ExecSQL;
END ELSE
BEGIN
SQLQUERY1.Close;
SQLQUERY1.SQL.Text:= 'Insert Into MIEMBROS(CODIGO_MIEMBRO,NOMBRE_COMPLETO,NOMBRE,APELLIDOS,FECHA_NACIMIENTO,SEXO,ESTADO_CIVIL,CORREO,L IDER,DIRECCION,DISTRITO,BAUTIZADO,TIPO_MIEMBRO)
Values(:COD,:FULLNAME,:NOM,:APELL,:FECHA_N,:SEX,:ESTADO_CIV,:EMAIL,:LIDER1,:DIREC,:DISTR,:BAUTI,:TIP O1)';
SQLQUERY1.ParamByName('COD').AsInteger:=CODIGO;
SQLQUERY1.ParamByName('FULLNAME').ASSTRING:=NOM1+', '+APEL;
SQLQUERY1.ParamByName('NOM').ASSTRING:=NOM1;
SQLQUERY1.ParamByName('APELL').ASSTRING:=APEL;
SQLQUERY1.ParamByName('FECHA_N').AsDate:=FECHA1;
SQLQUERY1.ParamByName('SEX').ASSTRING:=SEX;
SQLQUERY1.ParamByName('ESTADO_CIV').ASSTRING:=ESTA;
SQLQUERY1.ParamByName('EMAIL').ASSTRING:=MAIL;
SQLQUERY1.ParamByName('LIDER1').ASSTRING:=LIDE;
SQLQUERY1.ParamByName('DIREC').ASSTRING:=DIREC;
SQLQUERY1.ParamByName('DISTR').ASSTRING:=DIST;
SQLQUERY1.ParamByName('BAUTI').ASSTRING:=BAUT;
SQLQUERY1.ParamByName('TIPO1').ASSTRING:=MIEM;
SQLQUERY1.ExecSQL;
END;
end;


y de otro form llamo al procedimiento



procedure TForm4.BitBtn1Click(Sender: TObject);
VAR FECHA1, FECHA2:TDATE; ACTI:BOOLEAN;
begin
try
FECHA1:=DATETIMEPICKER1.Date;
FECHA2:=DATETIMEPICKER2.Date;
ACTI:=CHECKBOX1.Checked;
FORM3.INGRESAR (EDIT2.Text,EDIT3.Text,COMBOBOX1.Text,COMBOBOX2.Text,EDIT4.Text,EDIT5.Text,EDIT6.Text,EDIT7.Text,COM BOBOX3.Text,COMBOBOX4.Text,FECHA1,FECHA2,ACTI);
LIMPIAR_CAMPOS;
SHOWMESSAGE('INFORMACION INGRESADA');
except
on E : Exception DO
SHOWMESSAGE ('ERROR AL INGRESAR LA INFORMACION');
end;
end;


para esto tengo 2 datetimepicker el primero que es el de la fecha_nacimiento y el segundo que es de la fehca_matrimonio.

maeyanes
27-09-2012, 17:33:24
Hola...

¿Y el error es?


Saludos...

Casimiro Notevi
27-09-2012, 17:56:02
Y no está permitido GRITAR, no olvides nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).

jooooseph
27-09-2012, 18:21:21
Hola...

¿Y el error es?


Saludos...

El problema es que si la condicion de ACTI=false, deberia de saltarse a la segunda condicion del if y no guardar la fecha2, pero no salta la condicion y guarda lo que esta dentro de la primera condicion tomando la fecha por defecto del datetimepicker2.date.

la condicion del active viene a partir de que si esta o no chekeado el checkbox1.
No se en que parte esta mal, porque al parecer el ACTI lo esta tomando como verdadero....

maeyanes
27-09-2012, 18:36:15
Hola...

¿Ya probaste tu código paso a paso usando la tecla F7 y Break points? Esto para que verifiques que los valores de los parámetros son los esperados. Esto por que no veo gran problema con tu código, así que podría ser que no estás pasando bien los valores a los parámetros.

Otra cosa, en una sentencia IF usando variables de tipo Boolean, no es necesario hacer la comparación ACTI = True o ACTI = False... con que hagas algo como:


if Acti then // Checas si es True

if not Acti then // Checas si es False


es más que suficiente.


Saludos...

jooooseph
27-09-2012, 18:48:17
Hola...

¿Ya probaste tu código paso a paso usando la tecla F7 y Break points? Esto para que verifiques que los valores de los parámetros son los esperados. Esto por que no veo gran problema con tu código, así que podría ser que no estás pasando bien los valores a los parámetros.

Otra cosa, en una sentencia IF usando variables de tipo Boolean, no es necesario hacer la comparación ACTI = True o ACTI = False... con que hagas algo como:

Código Delphi [-] (http://www.clubdelphi.com/foros/#)if Acti then // Checas si es True if not Acti then // Checas si es False


es más que suficiente.


Saludos...


De antemano gracias por la ayuda... el problema no era que se estaba guardando sino que el un problema de habilitar o no el datetimepicker, la informacion se habia estado guardando correnctamente. Gracias por el tiempo.

cloayza
28-09-2012, 15:22:39
Hilando un poco fino, te sugiero lo siguiente:


PROCEDURE TFORM3.INGRESAR (NOM1,APEL,SEX,ESTA,MAIL,LIDE,DIREC,DIST,BAUT,MIEM: string; FECHA1,FECHA2: TDate; ACTI:BOOLEAN);
VAR CODIGO:INTEGER;
begin
CODIGO:=OBTENER_ULTIMO_CODIGO+1;

SQLQUERY1.Close;
IF (ESTA = 'CASADO(A)') AND (ACTI=TRUE) THEN
BEGIN
SQLQUERY1.SQL.Text:= 'Insert Into MIEMBROS(CODIGO_MIEMBRO,NOMBRE_COMPLETO,NOMBRE,APELLIDOS,FECHA_NACIMIENTO,SEXO,ESTADO_CIVIL,FECHA_BO DA,CORREO,LIDER,DIRECCION,DISTRITO,BAUTIZADO,
TIPO_MIEMBRO) Values(:COD,:FULLNAME,:NOM,:APELL,:FECHA_N,:SEX,:ESTADO_CIV,:FECHA_B,:EMAIL,:LIDER1,IREC,ISTR,:B AUTI,:TIPO1)';

SQLQUERY1.ParamByName('FECHA_B').AsDate:=FECHA2;
END
ELSE
BEGIN
SQLQUERY1.SQL.Text:= 'Insert Into MIEMBROS(CODIGO_MIEMBRO,NOMBRE_COMPLETO,NOMBRE,APELLIDOS,FECHA_NACIMIENTO,SEXO,ESTADO_CIVIL,CORREO,L IDER,DIRECCION,DISTRITO,BAUTIZADO,TIPO_MIEMBRO)
Values(:COD,:FULLNAME,:NOM,:APELL,:FECHA_N,:SEX,:ESTADO_CIV,:EMAIL,:LIDER1,IREC,ISTR,:BAUTI,:TIPO1)' ;
END;
SQLQUERY1.ParamByName('COD').AsInteger:=CODIGO;
SQLQUERY1.ParamByName('FULLNAME').ASSTRING:=NOM1+', '+APEL;
SQLQUERY1.ParamByName('NOM').ASSTRING:=NOM1;
SQLQUERY1.ParamByName('APELL').ASSTRING:=APEL;
SQLQUERY1.ParamByName('FECHA_N').AsDate:=FECHA1;
SQLQUERY1.ParamByName('SEX').ASSTRING:=SEX;
SQLQUERY1.ParamByName('ESTADO_CIV').ASSTRING:=ESTA;
SQLQUERY1.ParamByName('EMAIL').ASSTRING:=MAIL;
SQLQUERY1.ParamByName('LIDER1').ASSTRING:=LIDE;
SQLQUERY1.ParamByName('DIREC').ASSTRING:=DIREC;
SQLQUERY1.ParamByName('DISTR').ASSTRING:=DIST;
SQLQUERY1.ParamByName('BAUTI').ASSTRING:=BAUT;
SQLQUERY1.ParamByName('TIPO1').ASSTRING:=MIEM;
SQLQUERY1.ExecSQL;
end;


Saludos cordiales

tysonlee
05-10-2012, 12:20:29
si usas Zeos y WAMP nada mas le indicas en la propiedad Hostname: LocalHost