Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema Para Guardar (https://www.clubdelphi.com/foros/showthread.php?t=80955)

jooooseph 27-09-2012 17:18:44

Problema Para Guardar
 
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.

Código Delphi [-]
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

Código Delphi [-]

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 Noteví 27-09-2012 17:56:02

Y no está permitido GRITAR, no olvides nuestra guía de estilo.

jooooseph 27-09-2012 18:21:21

Cita:

Empezado por maeyanes (Mensaje 445593)
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:

Código Delphi [-]
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

Cita:

Empezado por maeyanes (Mensaje 445602)
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 [-]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:

Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 18:45:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi