Ich habe folgenden Code
ParamByName('IBIRTHDAYINTERVAL').AsInteger := dmMain.ibqryOptionen.FieldByName('TAGEGEBURTSTAGSB RIEF').AsInteger;
ParamByName('ICHRISTMASINTERVAL').AsInteger := dmMain.ibqryOptionen.FieldByName('TAGEWEIHNACHTSBR IEF').AsInteger;
ParamByName('INEWYEARINTERVAL').AsInteger := dmMain.ibqryOptionen.FieldByName('TAGENEUJAHRSBRIE F').AsInteger;;
Execute;
if (sprcPatientenGeburtstage.FieldByName('IBIRTHDAYCO UNT').AsInteger > 0) then
begin
dazu folgende StoreProc
BEGIN
MaxDate = CAST('TODAY' AS DATE) + :ibirthdayinterval;
NowDate = CAST('TODAY' AS DATE);
NowYear = EXTRACT(YEAR FROM CAST('TODAY' AS DATE));
SELECT COUNT(PATIENTNR)
FROM TBL_PATIENT
WHERE
(GEBURTSTAGSBRIEF = 'J') AND
ADDMONTH(GEBURTSDATUM, ((:NowYear - EXTRACT(YEAR FROM GEBURTSDATUM))*12))
BETWEEN (:NowDate) AND (:MaxDate)
INTO :iBIRTHDAYCOUNT;
MaxDate = CAST('24.12.' || CAST(NowYear AS VARCHAR(4)) AS DATE);
IF (MaxDate - NowDate <= iCHRISTMASINTERVAL) THEN
BEGIN
SELECT COUNT(PATIENTNR)
FROM tbl_patient
WHERE
(WEIHNACHTSBRIEF = 'J')
INTO :iCHRISTMASCOUNT;
END
ELSE
iCHRISTMASCOUNT = 0;
MaxDate = CAST('31.12.' || CAST(NowYear AS VARCHAR(4)) AS DATE);
IF (MaxDate - NowDate <= iNEWYEARINTERVAL) THEN
BEGIN
SELECT COUNT(PATIENTNR)
FROM tbl_patient
WHERE
(NEUJAHRSBRIEF = 'J')
INTO :iNEWYEARCOUNT;
END
ELSE
iNEWYEARCOUNT = 0;
suspend;
END
Der Übergabeparameter von 'INEWYEARINTERVAL' ist 3.
als Rückgabewert in 'IBIRTHDAYCOUNT' müsste 9 sein ist aber nur 3.
Die StoreProc in IBExpert liefert den richtigen Wert. Warum Delphi nicht? Habe ich was vergessen?
Wer weiß schnelle Hilfe.
Walter
ParamByName('IBIRTHDAYINTERVAL').AsInteger := dmMain.ibqryOptionen.FieldByName('TAGEGEBURTSTAGSB RIEF').AsInteger;
ParamByName('ICHRISTMASINTERVAL').AsInteger := dmMain.ibqryOptionen.FieldByName('TAGEWEIHNACHTSBR IEF').AsInteger;
ParamByName('INEWYEARINTERVAL').AsInteger := dmMain.ibqryOptionen.FieldByName('TAGENEUJAHRSBRIE F').AsInteger;;
Execute;
if (sprcPatientenGeburtstage.FieldByName('IBIRTHDAYCO UNT').AsInteger > 0) then
begin
dazu folgende StoreProc
BEGIN
MaxDate = CAST('TODAY' AS DATE) + :ibirthdayinterval;
NowDate = CAST('TODAY' AS DATE);
NowYear = EXTRACT(YEAR FROM CAST('TODAY' AS DATE));
SELECT COUNT(PATIENTNR)
FROM TBL_PATIENT
WHERE
(GEBURTSTAGSBRIEF = 'J') AND
ADDMONTH(GEBURTSDATUM, ((:NowYear - EXTRACT(YEAR FROM GEBURTSDATUM))*12))
BETWEEN (:NowDate) AND (:MaxDate)
INTO :iBIRTHDAYCOUNT;
MaxDate = CAST('24.12.' || CAST(NowYear AS VARCHAR(4)) AS DATE);
IF (MaxDate - NowDate <= iCHRISTMASINTERVAL) THEN
BEGIN
SELECT COUNT(PATIENTNR)
FROM tbl_patient
WHERE
(WEIHNACHTSBRIEF = 'J')
INTO :iCHRISTMASCOUNT;
END
ELSE
iCHRISTMASCOUNT = 0;
MaxDate = CAST('31.12.' || CAST(NowYear AS VARCHAR(4)) AS DATE);
IF (MaxDate - NowDate <= iNEWYEARINTERVAL) THEN
BEGIN
SELECT COUNT(PATIENTNR)
FROM tbl_patient
WHERE
(NEUJAHRSBRIEF = 'J')
INTO :iNEWYEARCOUNT;
END
ELSE
iNEWYEARCOUNT = 0;
suspend;
END
Der Übergabeparameter von 'INEWYEARINTERVAL' ist 3.
als Rückgabewert in 'IBIRTHDAYCOUNT' müsste 9 sein ist aber nur 3.
Die StoreProc in IBExpert liefert den richtigen Wert. Warum Delphi nicht? Habe ich was vergessen?
Wer weiß schnelle Hilfe.
Walter
Comment