Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   problema de actualización (https://www.clubdelphi.com/foros/showthread.php?t=19198)

ibuser 08-03-2005 00:43:58

problema de actualización
 
hola, primero que nada tengo un problema programando en delphi 7 con ibx, estoy desarrollando una aplicacion de reservaciones para una aerolinea, y tengo la siguiente funcion: donde inserto las resevaciones, utilizo un ibdataset
Código Delphi [-]
 with reservas do
 begin
 selectsql.add('insert INTO RESERVAS(ID_RES,RUTA,FEC_VUELO,TRAMO1,TRAMO2,TRAMO3,RRUTA,RFEC_VUELO,RTRAMO1,RTRAMO2,RTRAMO3,CLAVE,A  CTI,ACTR,OBSERVA,hlimite,id_vueloi,id_vuelor,MES,ANO,MESR,ANOR,TKT)');
 selectsql.add('VALUES(:ID_RES,:RUTA,:FV,:TRAMO1,:TRAMO2,:TRAMO3,:RRUTA,:RFV,:RTRAMO1,:RTRAMO2,:RTRAM  O3,:CLAVE,:ACTI,:ACTR,:OBSERVA,:hlimite,:id_vueloi,:id_vuelor,:MES,:ANO,:MESR,:ANOR,:TKT)');
            PARAMBYNAME('ID_RES').ASINTEGER:=C;
            PARAMBYNAME('RUTA').ASSTRING:=form1.COMBOBOX1.TEXT;
            PARAMBYNAME('TRAMO1').ASSTRING:=form1.TRAMO1.Caption;
            PARAMBYNAME('TRAMO2').ASSTRING:=form1.TRAMO2.Caption;
            PARAMBYNAME('TRAMO3').ASSTRING:=form1.TRAMO3.Caption;
            PARAMBYNAME('FV').ASSTRING:=DATETOSTR(FORM1.DateTimePicker1.DATE);
            PARAMBYNAME('RRUTA').ASSTRING:=FORM1.COMBOBOX2.TEXT;
            PARAMBYNAME('RFV').ASSTRING:=DATETOSTR(FORM1.DateTimePicker2.DATE);
            PARAMBYNAME('RTRAMO1').ASSTRING:=form1.TRAMO4.Caption;
            PARAMBYNAME('RTRAMO2').ASSTRING:=form1.TRAMO5.Caption;
            PARAMBYNAME('RTRAMO3').ASSTRING:=form1.TRAMO6.Caption;
            PARAMBYNAME('CLAVE').ASSTRING:=label7.caption;
            PARAMBYNAME('ACTI').ASSTRING:='S';
            PARAMBYNAME('ACTR').ASSTRING:='S';
            PARAMBYNAME('OBSERVA').ASSTRING:=EDIT10.TEXT;
            PARAMBYNAME('hlimite').ASstring:=datetimetostr(hlim);
            PARAMBYNAME('id_vueloi').ASstring:=form1.nruta.caption;
            PARAMBYNAME('id_vuelor').ASstring:=form1.rnruta.caption;
            PARAMBYNAME('MES').ASstring:=form1.MES.caption;
            PARAMBYNAME('ANO').ASstring:=form1.ANO.caption;
            PARAMBYNAME('MESR').ASstring:=form1.MESR.caption;
            PARAMBYNAME('ANOR').ASstring:=form1.ANOR.caption;
            PARAMBYNAME('TKT').ASstring:='';
            ibt.commitretainning;
 end;
realmente aqui el problema no esta en la insercion supongo yo porque al checar disponibilidad utilizo el siguiente stored procedure:
Código SQL [-]
 CREATE PROCEDURE DISP (
     FV VARCHAR (8),
     TM1 VARCHAR (12),
     TM2 VARCHAR (12),
     TM3 VARCHAR (12),
     RFV VARCHAR (8),
     RTM1 VARCHAR (12),
     RTM2 VARCHAR (12),
     RTM3 VARCHAR (12))
 RETURNS (
     IDA INTEGER,
     REG INTEGER)
 AS
 declare variable T1 INTEGER;
   
 BEGIN
 if (TM1='-') then
    IDA=19;
 ELSE if (TM2='-') then
    begin
    SELECT COUNT(*) FROM RESERVAS
    WHERE
    ((FEC_VUELO=:FV)AND
    ((TRAMO1=:TM1)or(TRAMO2=:TM1)OR
    (TRAMO3=:TM1)))OR
    ((RFEC_VUELO=:FV)AND
    ((RTRAMO1=:TM1)or(RTRAMO2=:TM1)OR
    (RTRAMO3=:TM1)))INTO IDA;
    end
    else if (TM3='-') then
    begin
    SELECT COUNT(*) FROM RESERVAS
    WHERE
    ((FEC_VUELO=:FV)AND
    ((TRAMO1=:TM1)or(TRAMO2=:TM1)OR
    (TRAMO3=:TM1)OR(TRAMO1=:TM2)OR
    (TRAMO2=:TM2)OR(TRAMO3=:TM2)))OR
    ((RFEC_VUELO=:FV)AND
    ((RTRAMO1=:TM1)or(RTRAMO2=:TM1)OR
    (RTRAMO3=:TM1)OR(RTRAMO1=:TM2)OR
    (RTRAMO2=:TM2)OR(RTRAMO3=:TM2)
    ))INTO IDA;
    end
    ELSE
    BEGIN
    SELECT COUNT(*) FROM RESERVAS
    WHERE
    ((FEC_VUELO=:FV)AND
    ((TRAMO1=:TM1)or(TRAMO2=:TM1)OR
    (TRAMO3=:TM1)OR(TRAMO1=:TM2)OR
    (TRAMO2=:TM2)OR(TRAMO3=:TM2)OR
    (TRAMO1=:TM3)OR(TRAMO2=:TM3)OR
    (TRAMO3=:TM3)))OR
    ((RFEC_VUELO=:FV)AND
    ((RTRAMO1=:TM1)or(RTRAMO2=:TM1)OR
    (RTRAMO3=:TM1)OR(RTRAMO1=:TM2)OR
    (RTRAMO2=:TM2)OR(RTRAMO3=:TM2)OR
    (RTRAMO1=:TM3)OR(RTRAMO2=:TM3)OR
    (RTRAMO3=:TM3)))INTO IDA;
    END
    if (RTM1='-') then
       BEGIN
         reg=19;
       END
    ELSE
    if (RTM2='-') then
    BEGIN
    SELECT COUNT(*) FROM RESERVAS
    WHERE
    ((FEC_VUELO=:RFV)AND
    ((TRAMO1=:RTM1)or(TRAMO2=:RTM1)OR
    (TRAMO3=:RTM1)))OR
    ((RFEC_VUELO=:RFV)AND
    ((RTRAMO1=:RTM1)or(RTRAMO2=:RTM1)OR
    (RTRAMO3=:RTM1)))INTO REG;
    END
    ELSE if (RTM3='-') then
    BEGIN
    SELECT COUNT(*) FROM RESERVAS
    WHERE
    ((FEC_VUELO=:RFV)AND
    ((TRAMO1=:RTM1)or(TRAMO2=:RTM1)OR
    (TRAMO3=:RTM1)OR(TRAMO1=:RTM2)OR
    (TRAMO2=:RTM2)OR(TRAMO3=:RTM2)))OR
    ((RFEC_VUELO=:RFV)AND
    ((RTRAMO1=:RTM1)or(RTRAMO2=:RTM1)OR
    (RTRAMO3=:RTM1)OR(RTRAMO1=:RTM2)OR
    (RTRAMO2=:RTM2)OR(RTRAMO3=:RTM2)
    ))INTO REG;
    END
    ELSE
    BEGIN
    SELECT COUNT(*) FROM RESERVAS
    WHERE
    ((FEC_VUELO=:RFV)AND
    ((TRAMO1=:RTM1)or(TRAMO2=:RTM1)OR
    (TRAMO3=:RTM1)OR(TRAMO1=:RTM2)OR
    (TRAMO2=:RTM2)OR(TRAMO3=:RTM2)OR
    (TRAMO1=:RTM3)OR(TRAMO2=:RTM3)OR
    (TRAMO3=:RTM3)))OR
    ((RFEC_VUELO=:RFV)AND
    ((RTRAMO1=:RTM1)or(RTRAMO2=:RTM1)OR
    (RTRAMO3=:RTM1)OR(RTRAMO1=:RTM2)OR
    (RTRAMO2=:RTM2)OR(RTRAMO3=:RTM2)OR
    (RTRAMO1=:RTM3)OR(RTRAMO2=:RTM3)OR
    (RTRAMO3=:RTM3)))INTO REG;
    END
 IDA=19-IDA;
 REG=19-REG;
   /* Procedure body */
   SUSPEND;
 END

y el problema radica en que cuando hago las inserciones no me agrega las inserciones que hice hasta que cierro la aplicacion y la vuelvo a abrir, como observacion debo decir que al checar disponibilidad hago un commitretainning antes para que se actualice la tabla pero aun asi no me aparecen.
espero haberme explicado bien. Gracias :)

ibuser 08-03-2005 00:47:28

me disculpo por descuido omiti las etiquetas sql.:(


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

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