Kundenstamm - Information - Chart

Erprobte Lösungen von Anwendern, die anderen Anwendern helfen, werden hier bereit gestellt

Moderator: SYNERPY

Antworten
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Kundenstamm - Information - Chart

Beitrag von festus01 »

Falls sich jemand wundert das die Grafik mit falschen Werten dargestellt wird.
Es liegt am Aufruf der Procedure P_BKUNDE_DIAG.

Anbei die korrigierte Version:

Code: Alles auswählen

SET TERM ^ ;

CREATE OR ALTER PROCEDURE P_BKUNDE_DIAG (
    BKUNDE_ID INTEGER) 
RETURNS (
    BETRAG NUMERIC(15,2),
    MONAT VARCHAR(2)) 
AS
DECLARE VARIABLE VONDATUM DATE;
DECLARE VARIABLE ENDDATUM DATE;
DECLARE VARIABLE ZAEHLER INTEGER;
BEGIN
  /* LETZTER STAND 06.11.2007 10:07:57 HS */
  /* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
  /* LETZTER STAND: 07.05.2009 09:55:51 BY KDP */
  /* Procedure angepasst */
  /* SynERPy Version ist mit '--' auskommentiert */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BSAINFO_DIAG');

--  JAHR = F_YEAR(CURRENT_DATE);
  ZAEHLER = 1;
  VONDATUM = '01.01.' || (F_YEAR(Current_Date) - 1);
  WHILE (ZAEHLER < 25) DO
  BEGIN
--    IF (ZAEHLER = 1) THEN
--      VONDATUM = '01.12.' || F_YEAR(CURRENT_DATE);
--    ELSE
--      VONDATUM = F_ADDMONTH(VONDATUM, 1 - ZAEHLER);
--    VONDATUM = VONDATUM - F_DAYOFMONTH(VONDATUM) + 1;
--    VONDATUM = '01.01.' || F_YEAR(Current_Date) - 1;
    ENDDATUM = F_DAYSOFMONTH(f_month(:VONDATUM),f_year(:VONDATUM)) || '.' ||
               f_month(:VONDATUM) || '.' || f_year(:VONDATUM);
--    ENDDATUM = F_ADDMONTH(VONDATUM, 1);

    SELECT SUM(B.GESAMT)
    FROM BRRC B
    WHERE B.BKUNDE_ID_LINKKEY = :BKUNDE_ID AND
          B.RECHNUNGSART IN ('R', 'G', 'S') AND
          B.RECHDATUM BETWEEN :VONDATUM AND :ENDDATUM
    INTO :BETRAG;

    IF (BETRAG IS NULL) THEN BETRAG = 0;
    IF (ZAEHLER <= 12) THEN
      MONAT = CAST(F_PADLEFT(ZAEHLER,'0',2) AS VARCHAR(2));
    ELSE                
      MONAT = CAST(F_PADLEFT(ZAEHLER-12,'0',2) AS VARCHAR(2));

    SUSPEND;
    ZAEHLER = :ZAEHLER + 1;
    VONDATUM = f_addmonth(:VONDATUM,1);
  END
  
  ZAEHLER = 1;
END^

SET TERM ; ^

COMMENT ON PROCEDURE P_BKUNDE_DIAG IS
'Gibt Werte für Kundeninformationschart zurück';

DELETE FROM RDB$USER_PRIVILEGES
WHERE (RDB$USER = 'P_BKUNDE_DIAG') AND (RDB$USER_TYPE = 5);

GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BKUNDE_DIAG;

GRANT SELECT ON BRRC TO PROCEDURE P_BKUNDE_DIAG;

GRANT EXECUTE ON PROCEDURE P_BKUNDE_DIAG TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BKUNDE_DIAG TO SYSDBA;
Viel Spaß damit :idea: :idea: :idea:
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
Antworten