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;
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
