JobServer Artikelinformationssystem

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
rs200
Beiträge: 79
Registriert: Fr Nov 18, 2005 9:38 am
Wohnort: Unna

JobServer Artikelinformationssystem

Beitrag von rs200 »

Hallo,

benutze die DB 2008 und den JobServer 2.5.0.1.

Habe nun den JobServer mehrfach laufen lassen und irgendwie ist im Artikelinformationssystem nur ein Artikel aufgelistet. Mit jedem Durchlauf des JobServers wir der erstellte Datensatz gelöscht und ein neuer produziert. Dies kann ich an dem ID-Feld sehen.

Habe mir auch schon die Eingaben bei den Artikeln angesehen, jedoch noch nicht herausgefunden wieso nur der eine Artikel herangezogen wird und nicht die anderen Produkte.

Ein kleiner Tipp wäre nett.
Danke

Gruß
RS200
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

In der Version war die Prozedur zum Berechnen - sagen wir einmal - nicht so ganz optimiert. Daher ist der Lauf mit einem festen Parameter auf nur einen Artikel eingeschränkt.

Mittlerweile ist das alles überarbeitet worden.

Hier das Skript (VORHER EINE SICHERUNGSKOPIE DER P_BSAINFO_FUELLEN ERSTELLEN!!!). Natürlich generell vor dem Einspielen die ganze Datenbank sichern.

Code: Alles auswählen

ALTER TABLE BSAINFO
ADD BMAND_ID D_IDNULL;


SET TERM ^ ;

CREATE OR ALTER PROCEDURE P_BSAINFO_UMSAETZE(
    BSA_ID INTEGER,
    BMAND_ID INTEGER,
    GJ_DATUM_START DATE,
    GJ_DATUM_ENDE DATE)
RETURNS (
    SUM_GPREIS NUMERIC(15,4),
    SUM_MENGE NUMERIC(15,4),
    MONAT SMALLINT,
    JAHR SMALLINT)
AS
DECLARE VARIABLE BRRC_ID_MAX INTEGER;
DECLARE VARIABLE SJA VARCHAR(1);
DECLARE VARIABLE SNEIN VARCHAR(1);
BEGIN
  /* LETZTER STAND 14.12.2007 14:18:09 HB */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BSAINFO_UMSAETZE');

  EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);

  /* Zusätzlich einschränken, damit alte Datensätze nicht einfließen */
  SELECT MIN(A.ID)
  FROM BRRC A
  WHERE A.RECHDATUM >= :GJ_DATUM_START AND
        A.BMAND_ID = :BMAND_ID AND
        A.RGGEDRUCKT = :sJA
  INTO :BRRC_ID_MAX;

  /* Monatsumsätze summieren */
  FOR SELECT SUM(A.GPREIS),
             SUM(A.MENGE_LAG),
             F_MONTH(B.RECHDATUM),
             F_YEAR(B.RECHDATUM)
  FROM BRRCP A, BRRC B
  WHERE A.BSA_ID_ARTNR = :BSA_ID AND
        A.BRRC_ID_RGNR = B.ID AND
        A.RG_BUCHUNGSART IS NULL AND
        B.RECHDATUM BETWEEN :GJ_DATUM_START AND :GJ_DATUM_ENDE AND
        B.RECHNUNGSART IN ('R','S','G') AND
        B.BMAND_ID = :BMAND_ID AND
        B.RGGEDRUCKT = :sJA AND
        A.BRRC_ID_RGNR > :BRRC_ID_MAX AND
        B.ID >= :BRRC_ID_MAX AND
        B.ID IS NOT NULL
  GROUP BY BSA_ID_ARTNR, 3, 4
  ORDER BY 4, 3
  INTO :SUM_GPREIS,
       :SUM_MENGE,
       :MONAT,
       :JAHR
  DO
    SUSPEND;
END^

SET TERM ; ^

GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BSAINFO_UMSAETZE;

GRANT EXECUTE ON PROCEDURE P_BFIRMA_JANEIN TO PROCEDURE P_BSAINFO_UMSAETZE;

GRANT SELECT ON BRRC TO PROCEDURE P_BSAINFO_UMSAETZE;

GRANT SELECT ON BRRCP TO PROCEDURE P_BSAINFO_UMSAETZE;

GRANT EXECUTE ON PROCEDURE P_BSAINFO_UMSAETZE TO PROCEDURE P_BSAINFO_FUELLEN;
GRANT EXECUTE ON PROCEDURE P_BSAINFO_UMSAETZE TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BSAINFO_UMSAETZE TO SYSDBA;


SET TERM ^ ;

CREATE OR ALTER PROCEDURE P_BSAINFO_FUELLEN(
    GJAHR SMALLINT)
AS
DECLARE VARIABLE BSAINFO_ID INTEGER;
DECLARE VARIABLE BSAINFO_MASKENKEY VARCHAR(40);
DECLARE VARIABLE BSA_ID INTEGER;   
DECLARE VARIABLE BMAND_ID INTEGER;
DECLARE VARIABLE MONAT SMALLINT;
DECLARE VARIABLE JAHR SMALLINT;

DECLARE VARIABLE GJ_DATUM_START DATE;
DECLARE VARIABLE GJ_DATUM_ENDE DATE;
DECLARE VARIABLE SUM_GPREIS NUMERIC(15,4);
DECLARE VARIABLE SUM_MENGE NUMERIC(15,4);
DECLARE VARIABLE MyDatum1 DATE;
DECLARE VARIABLE MyDatum2 DATE;

DECLARE VARIABLE MySQL VARCHAR(2000);

DECLARE VARIABLE UMS_JAN NUMERIC(15,2);
DECLARE VARIABLE UMS_FEB NUMERIC(15,2);
DECLARE VARIABLE UMS_MAERZ NUMERIC(15,2);
DECLARE VARIABLE UMS_APRIL NUMERIC(15,2);
DECLARE VARIABLE UMS_MAI NUMERIC(15,2);
DECLARE VARIABLE UMS_JUNI NUMERIC(15,2);
DECLARE VARIABLE UMS_JULI NUMERIC(15,2);
DECLARE VARIABLE UMS_AUG NUMERIC(15,2);
DECLARE VARIABLE UMS_SEPT NUMERIC(15,2);
DECLARE VARIABLE UMS_OKT NUMERIC(15,2);
DECLARE VARIABLE UMS_NOV NUMERIC(15,2);
DECLARE VARIABLE UMS_DEZ NUMERIC(15,2);

DECLARE VARIABLE STCK_JAN NUMERIC(15,2);
DECLARE VARIABLE STCK_FEB NUMERIC(15,2);
DECLARE VARIABLE STCK_MAERZ NUMERIC(15,2);
DECLARE VARIABLE STCK_APRIL NUMERIC(15,2);
DECLARE VARIABLE STCK_MAI NUMERIC(15,2);
DECLARE VARIABLE STCK_JUNI NUMERIC(15,2);
DECLARE VARIABLE STCK_JULI NUMERIC(15,2);
DECLARE VARIABLE STCK_AUG NUMERIC(15,2);
DECLARE VARIABLE STCK_SEPT NUMERIC(15,2);
DECLARE VARIABLE STCK_OKT NUMERIC(15,2);
DECLARE VARIABLE STCK_NOV NUMERIC(15,2);
DECLARE VARIABLE STCK_DEZ NUMERIC(15,2);

DECLARE VARIABLE USED_JAN NUMERIC(15,4);
DECLARE VARIABLE USED_FEB NUMERIC(15,4);
DECLARE VARIABLE USED_MAERZ NUMERIC(15,4);
DECLARE VARIABLE USED_APRIL NUMERIC(15,4);
DECLARE VARIABLE USED_MAI NUMERIC(15,4);
DECLARE VARIABLE USED_JUNI NUMERIC(15,4);
DECLARE VARIABLE USED_JULI NUMERIC(15,4);
DECLARE VARIABLE USED_AUG NUMERIC(15,4);
DECLARE VARIABLE USED_SEPT NUMERIC(15,4);
DECLARE VARIABLE USED_OKT NUMERIC(15,4);
DECLARE VARIABLE USED_NOV NUMERIC(15,4);
DECLARE VARIABLE USED_DEZ NUMERIC(15,4);

DECLARE VARIABLE UMSATZ_JAHR NUMERIC(15,4);
DECLARE VARIABLE STCK_JAHR NUMERIC(15,4);
DECLARE VARIABLE USED_JAHR NUMERIC(15,4);

DECLARE VARIABLE SJA VARCHAR(1);
DECLARE VARIABLE SNEIN VARCHAR(1);
BEGIN
  /* LETZTER STAND 14.12.2007 10:59:36 HB */
  /* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BSAINFO_FUELLEN');

  /* Artikelinformationssystem füllen */

  EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);

  EXECUTE PROCEDURE P_BMAND_CHECK RETURNING_VALUES (:BMAND_ID);

  /* Geschäftsjahresdaten bestimmen */
  SELECT A.GJAHRVON, A.GJAHRBIS
  FROM BMAND A
  WHERE A.ID = :BMAND_ID
  INTO :GJ_DATUM_START, :GJ_DATUM_ENDE;

  IF ((GJAHR IS NOT NULL) AND (GJAHR <> 0))THEN
  BEGIN
    GJ_DATUM_START = F_ADDYEAR(GJ_DATUM_START, 0 - (GJAHR - 1));
    GJ_DATUM_ENDE = F_ADDYEAR(GJ_DATUM_ENDE, 0 - (GJAHR - 1));
  END
  ELSE
    GJAHR = 1;

  /* Artikel durchlaufen */
  FOR SELECT A.ID, B.ID
  FROM BSA A
  LEFT OUTER JOIN BSAINFO B ON A.ID = B.BSA_ID
  WHERE A.AKTIV_JN = :sJA
  ORDER BY A.ID ASCENDING
  INTO :BSA_ID, :BSAINFO_ID
  DO                   
  BEGIN
    IF (BSAINFO_ID IS NULL) THEN
    BEGIN
      /* BSAINFO Datensatz anlegen */
      BSAINFO_ID = GEN_ID(GEN_BSAINFO, 1);
      BSAINFO_MASKENKEY = :BMAND_ID || ' ' || :BSA_ID || ' ' || :BSAINFO_ID;
      
      INSERT INTO BSAINFO(
        ID,
        MASKENKEY,
        BMAND_ID,
        BSA_ID)
      VALUES(
        :BSAINFO_ID,
        :BSAINFO_MASKENKEY,
        :BMAND_ID,
        :BSA_ID);
    END
  
    UMS_JAN = 0;
    UMS_FEB = 0;
    UMS_MAERZ = 0;
    UMS_APRIL = 0;
    UMS_MAI = 0;
    UMS_JUNI = 0;
    UMS_JULI = 0;
    UMS_AUG = 0;
    UMS_SEPT = 0;
    UMS_OKT = 0;
    UMS_NOV = 0;
    UMS_DEZ = 0;

    STCK_JAN = 0;
    STCK_FEB = 0;
    STCK_MAERZ = 0;
    STCK_APRIL = 0;
    STCK_MAI = 0;
    STCK_JUNI = 0;
    STCK_JULI = 0;
    STCK_AUG = 0;
    STCK_SEPT = 0;
    STCK_OKT = 0;
    STCK_NOV = 0;
    STCK_DEZ = 0;

    USED_JAN = 0;
    USED_FEB = 0;
    USED_MAERZ = 0;
    USED_APRIL = 0;
    USED_MAI = 0;
    USED_JUNI = 0;
    USED_JULI = 0;
    USED_AUG = 0;
    USED_SEPT = 0;
    USED_OKT = 0;
    USED_NOV = 0;
    USED_DEZ = 0;
    
    /* Alle Umsätze holen und zuordnen */
    FOR SELECT SUM_GPREIS,
               SUM_MENGE,
               MONAT,
               JAHR
    FROM  P_BSAINFO_UMSAETZE (:BSA_ID, :BMAND_ID, :GJ_DATUM_START, :GJ_DATUM_ENDE)
    INTO :SUM_GPREIS,
         :SUM_MENGE,
         :MONAT,
         :JAHR
    DO
    BEGIN
      /* Monatsanfang und -ende bestimmen */
      MyDatum1 = F_ENCODEDATE(JAHR, MONAT, 1);
      MyDatum2 = F_ADDMONTH(MyDatum1, 1);
      MyDatum2 = F_ADDDAY(MyDatum2, -1);

      /* Für jeden Monat die entsprechenden Paramter füllen */
      IF (MONAT = 1) THEN
      BEGIN
        UMS_JAN = SUM_GPREIS;
        STCK_JAN = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND 
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_JAN;
      END 
      ELSE IF (MONAT = 2) THEN
      BEGIN
        UMS_FEB = SUM_GPREIS;
        STCK_FEB = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_FEB;
      END 
      ELSE IF (MONAT = 3) THEN
      BEGIN
        UMS_MAERZ = SUM_GPREIS;
        STCK_MAERZ = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_MAERZ;
      END
      ELSE IF (MONAT = 4) THEN
      BEGIN
        UMS_APRIL = SUM_GPREIS;
        STCK_APRIL = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_APRIL;
      END 
      ELSE IF (MONAT = 5) THEN
      BEGIN
        UMS_MAI = SUM_GPREIS;
        STCK_MAI = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_MAI;
      END
      ELSE IF (MONAT = 6) THEN
      BEGIN
        UMS_JUNI = SUM_GPREIS;
        STCK_JUNI = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID  
        INTO :USED_JUNI;
      END
      ELSE IF (MONAT = 7) THEN
      BEGIN
        UMS_JULI = SUM_GPREIS;
        STCK_JULI = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_JULI;
      END
      ELSE IF (MONAT = 8) THEN
      BEGIN
        UMS_AUG = SUM_GPREIS;
        STCK_AUG = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_AUG;
      END
      ELSE IF (MONAT = 9) THEN
      BEGIN
        UMS_SEPT = SUM_GPREIS;
        STCK_SEPT = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID
        INTO :USED_SEPT;
      END
      ELSE IF (MONAT = 10) THEN
      BEGIN
        UMS_OKT = SUM_GPREIS;
        STCK_OKT = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID
        INTO :USED_OKT;
      END
      ELSE IF (MONAT = 11) THEN
      BEGIN
        UMS_NOV = SUM_GPREIS;
        STCK_NOV = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID  
        INTO :USED_NOV;
      END
      ELSE IF (MONAT = 12) THEN
      BEGIN
        UMS_DEZ = SUM_GPREIS;
        STCK_DEZ = SUM_MENGE;

        SELECT SUM(MENGE)
        FROM BARTLHBUX
        WHERE BSA_ID = :BSA_ID AND
              ERFDATUM BETWEEN :MyDatum1 AND :MyDatum2 AND
              AKTION IN ('FM','LS','L1','BB','AP','VE') AND
              BMAND_ID = :BMAND_ID 
        INTO :USED_DEZ;
      END
    END
    IF (UMS_JAN IS NULL) THEN UMS_JAN = 0.0;
    IF (UMS_FEB IS NULL) THEN UMS_FEB = 0.0;
    IF (UMS_MAERZ IS NULL) THEN UMS_MAERZ = 0.0;
    IF (UMS_APRIL IS NULL) THEN UMS_APRIL = 0.0;
    IF (UMS_MAI IS NULL) THEN UMS_MAI = 0.0;
    IF (UMS_JUNI IS NULL) THEN UMS_JUNI = 0.0;
    IF (UMS_JULI IS NULL) THEN UMS_JULI = 0.0;
    IF (UMS_AUG IS NULL) THEN UMS_AUG = 0.0;
    IF (UMS_SEPT IS NULL) THEN UMS_SEPT = 0.0;
    IF (UMS_OKT IS NULL) THEN UMS_OKT = 0.0;
    IF (UMS_NOV IS NULL) THEN UMS_NOV = 0.0;
    IF (UMS_DEZ IS NULL) THEN UMS_DEZ = 0.0;
  
    IF (STCK_JAN IS NULL) THEN STCK_JAN = 0.0;
    IF (STCK_FEB IS NULL) THEN STCK_FEB = 0.0;
    IF (STCK_MAERZ IS NULL) THEN STCK_MAERZ = 0.0;
    IF (STCK_APRIL IS NULL) THEN STCK_APRIL = 0.0;
    IF (STCK_MAI IS NULL) THEN STCK_MAI = 0.0;
    IF (STCK_JUNI IS NULL) THEN STCK_JUNI = 0.0;
    IF (STCK_JULI IS NULL) THEN STCK_JULI = 0.0;
    IF (STCK_AUG IS NULL) THEN STCK_AUG = 0.0;
    IF (STCK_SEPT IS NULL) THEN STCK_SEPT = 0.0;
    IF (STCK_OKT IS NULL) THEN STCK_OKT = 0.0;
    IF (STCK_NOV IS NULL) THEN STCK_NOV = 0.0;
    IF (STCK_DEZ IS NULL) THEN STCK_DEZ = 0.0;
           
    IF (USED_JAN IS NULL) THEN USED_JAN = 0.0;
    IF (USED_FEB IS NULL) THEN USED_FEB = 0.0;
    IF (USED_MAERZ IS NULL) THEN USED_MAERZ = 0.0;
    IF (USED_APRIL IS NULL) THEN USED_APRIL = 0.0;
    IF (USED_MAI IS NULL) THEN USED_MAI = 0.0;
    IF (USED_JUNI IS NULL) THEN USED_JUNI = 0.0;       
    IF (USED_JULI IS NULL) THEN USED_JULI = 0.0; 
    IF (USED_AUG IS NULL) THEN USED_AUG = 0.0;
    IF (USED_SEPT IS NULL) THEN USED_SEPT = 0.0;  
    IF (USED_OKT IS NULL) THEN USED_OKT = 0.0;    
    IF (USED_NOV IS NULL) THEN USED_NOV = 0.0;
    IF (USED_DEZ IS NULL) THEN USED_DEZ = 0.0;
    
    /* Entscheiden, für welches Geschäftjahr berechnet werden soll */
    IF (GJAHR IN (1, 2)) THEN
    BEGIN
      MySQL = '
      UPDATE BSAINFO
      SET UMS_JAN' || GJAHR || ' = ' || UMS_JAN || ',
          UMS_FEB' || GJAHR || ' = ' || UMS_FEB || ',
          UMS_MAERZ' || GJAHR || ' = ' || UMS_MAERZ || ',
          UMS_APRIL' || GJAHR || ' = ' || UMS_APRIL || ',
          UMS_MAI' || GJAHR || ' = ' || UMS_MAI || ',
          UMS_JUNI' || GJAHR || ' = ' || UMS_JUNI || ',
          UMS_JULI' || GJAHR || ' = ' || UMS_JULI || ',
          UMS_AUG' || GJAHR || ' = ' || UMS_AUG || ',
          UMS_SEPT' || GJAHR || ' = ' || UMS_SEPT || ',
          UMS_OKT' || GJAHR || ' = ' || UMS_OKT || ',
          UMS_NOV' || GJAHR || ' = ' || UMS_NOV || ',
          UMS_DEZ' || GJAHR || ' = ' || UMS_DEZ || ',
  
          STCK_JAN' || GJAHR || ' = ' || STCK_JAN || ',
          STCK_FEB' || GJAHR || ' = ' || STCK_FEB || ',
          STCK_MAERZ' || GJAHR || ' = ' || STCK_MAERZ || ',
          STCK_APRIL' || GJAHR || ' = ' || STCK_APRIL || ',
          STCK_MAI' || GJAHR || ' = ' || STCK_MAI || ',
          STCK_JUNI' || GJAHR || ' = ' || STCK_JUNI || ',
          STCK_JULI' || GJAHR || ' = ' || STCK_JULI || ',
          STCK_AUG' || GJAHR || ' = ' || STCK_AUG || ',
          STCK_SEPT' || GJAHR || ' = ' || STCK_SEPT || ',
          STCK_OKT' || GJAHR || ' = ' || STCK_OKT || ',
          STCK_NOV' || GJAHR || ' = ' || STCK_NOV || ',
          STCK_DEZ' || GJAHR || ' = ' || STCK_DEZ || ',
  
          USED_JAN' || GJAHR || ' = ' || USED_JAN || ',
          USED_FEB' || GJAHR || ' = ' || USED_FEB || ',
          USED_MAERZ' || GJAHR || ' = ' || USED_MAERZ || ',
          USED_APRIL' || GJAHR || ' = ' || USED_APRIL || ',
          USED_MAI' || GJAHR || ' = ' || USED_MAI || ',
          USED_JUNI' || GJAHR || ' = ' || USED_JUNI || ',
          USED_JULI' || GJAHR || ' = ' || USED_JULI || ',
          USED_AUG' || GJAHR || ' = ' || USED_AUG || ',
          USED_SEPT' || GJAHR || ' = ' || USED_SEPT || ',
          USED_OKT' || GJAHR || ' = ' || USED_OKT || ',
          USED_NOV' || GJAHR || ' = ' || USED_NOV || ',
          USED_DEZ' || GJAHR || ' = ' || USED_DEZ || '
      WHERE ID = ' || BSAINFO_ID; 
      EXECUTE STATEMENT MySQL;
    END
    ELSE
    BEGIN
      /* Für drittes und viertes Jahr nur die Monatssummen */
      /* Umsatz summieren */
      UMSATZ_JAHR = UMS_JAN + UMS_FEB + UMS_MAERZ + UMS_APRIL +
                    UMS_MAI + UMS_JUNI + UMS_JULI + UMS_AUG +
                    UMS_SEPT + UMS_OKT + UMS_NOV + UMS_DEZ;
                     
      /* Verkaufte Stück summieren */
      STCK_JAHR = STCK_JAN + STCK_FEB + STCK_MAERZ + STCK_APRIL +
                  STCK_MAI + STCK_JUNI + STCK_JULI + STCK_AUG +
                  STCK_SEPT + STCK_OKT + STCK_NOV + STCK_DEZ;
                 
      /* Verbrauchte Stück summieren */
      USED_JAHR = USED_JAN + USED_FEB + USED_MAERZ + USED_APRIL +
                  USED_MAI + USED_JUNI + USED_JULI + USED_AUG +
                  USED_SEPT + USED_OKT + USED_NOV + USED_DEZ;
                   
      MySQL = '
      UPDATE BSAINFO
      SET UMSATZ_JAHR' || GJAHR || ' = ' || UMSATZ_JAHR || ',
          STCK_JAHR' || GJAHR || ' = ' || STCK_JAHR || ',
          USED_JAHR' || GJAHR || ' = ' || USED_JAHR  || '
      WHERE ID = ' || BSAINFO_ID; 
      EXECUTE STATEMENT MySQL;                          
    END 
  END
END^

SET TERM ; ^

DESCRIBE PROCEDURE P_BSAINFO_FUELLEN
'Prozedur zum füllen der BSAINFO';

GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT EXECUTE ON PROCEDURE P_BFIRMA_JANEIN TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT EXECUTE ON PROCEDURE P_BMAND_CHECK TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT SELECT ON BMAND TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT SELECT ON BSA TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT SELECT,INSERT ON BSAINFO TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT EXECUTE ON PROCEDURE P_BSAINFO_UMSAETZE TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT SELECT ON BARTLHBUX TO PROCEDURE P_BSAINFO_FUELLEN;

GRANT EXECUTE ON PROCEDURE P_BSAINFO_FUELLEN TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BSAINFO_FUELLEN TO SYSDBA;
rs200
Beiträge: 79
Registriert: Fr Nov 18, 2005 9:38 am
Wohnort: Unna

JobServer Artikelinformationssystem

Beitrag von rs200 »

Hallo,

vielen Dank für die Hilfe und die Erklärung.
Leider kenne ich mich mit den Scripten nicht so aus. Habe es so verstanden, dass ich den Script-Text markiere, kopiere und in Averp->"SQL-Befehle ausführen" wieder einfüge. Nach dem Ausführen erhalte ich eine Meldung "Unbestimmter Fehler".
Habe ich das so richtig gemacht oder
haben sich in das Script falsche Zeichen eingeschlichen? zBsp.: ^

Gruß
RS200
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Würde ich nicht in AvERP machen, sondern mit IBExpert, SkriptExecutive. Der ist auch schon in der kostenlosen Version enthalten.
rs200
Beiträge: 79
Registriert: Fr Nov 18, 2005 9:38 am
Wohnort: Unna

JobServer Artikelinformationssystem

Beitrag von rs200 »

Hallo admin,

vielen Dank für die Info. Habe nun das Skript im Bereich SkriptExecutive eingefügt und auf das grüne Dreieck geklickt. Danach wurde alles mit einer OK-Meldung bestätigt und der Durchlaufzeit.

Nachdem ich den JobServer gestartet habe und über Sofortaktion "P_BSAINFO_FUELLEN" auswählte, wurde dies mit der Meldung:

Code: Alles auswählen

22.01.2008 07:44:38 Execute der IB_StoredProc fehlgeschlagen IB-PROCEDURE-Name: P_BSAINFO_FUELLEN
quittiert.

Muss ich nun eine andere Aktion nehmen?

Gruß
RS200
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Das Geschäftsjahr muss noch als Eingabeparamter übergeben werden.

Beispiel für Parameterübergabe:

"","BDATUM=:DATE","EDATUM=:DATE+10"
rs200
Beiträge: 79
Registriert: Fr Nov 18, 2005 9:38 am
Wohnort: Unna

JobServer Artikelinformationssystem

Beitrag von rs200 »

Hallo,

leider muss ich hierzu noch mal Fragen, weil es bisher noch nicht läuft.

Das Einspielen/Ausführen des Skriptes hat Fehlerfrei funktioniert.
Ich sehe nun in IBExpert das eine Variable GJAHR als Input benötigt wird. Der Wertebereich soll SMALLINT sein.

In der Maske BJOB habe ich die Prozedur P_BSAINFO_FUELLEN angegeben.
Als Parameter hab ich probiert: "GJAHR=2008", "GJAHR=08", "GJAHR=1", "GJAHR=8" u.Ä.

Leider erscheint im Jobserver immer

Code: Alles auswählen

Execute der IB_StoredProc fehlgeschlagen IB-PROCEDURE-Name: P_BSAINFO_FUELLEN
Bräuchte hier noch mal etwas Hilfe.

Danke im Voraus
RS200
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Das

Code: Alles auswählen

"GJAHR=08"
funktioniert bei uns. Bitte die " mit eingeben.

Sonst einfach die Prozedur direkt im IBExpert starten. Vielleich kommt es zu einem Fehler, der nichts mit den Parametern zu tun hat.
rs200
Beiträge: 79
Registriert: Fr Nov 18, 2005 9:38 am
Wohnort: Unna

JobServer Artikelinformationssystem

Beitrag von rs200 »

Hallo,

vielen Dank für die Info. Habe in IBExpert die Prozedur "P_BSAINFO_FUELLEN" gesucht und per doppelklick geöffnet. Per F9 (Execute procedure) den Durchlauf gestartet. Es öffnete sich ein Fenster, in dem der Wert für GJAHR eingetragen werden musste und nach dem Bestätigen kommt folgende Fehlermeldung:

Code: Alles auswählen

Column does not belong to referenced table.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
UMSATZ_JAHR8.
At line 3, column 11.
Vielen Dank für die Unterstützung
Gruß
RS200
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

Hallo,

also so wie das Script gebaut ist kann das nicht funzen :!:

Übergebe ich als Geschäftsjahr "08" hat die Variable GJAHR den Wert 8.

Somit ergibt

Code: Alles auswählen

      MySQL = '
      UPDATE BSAINFO
      SET UMSATZ_JAHR' || GJAHR || ' = ' || UMSATZ_JAHR || ',
          STCK_JAHR' || GJAHR || ' = ' || STCK_JAHR || ',
          USED_JAHR' || GJAHR || ' = ' || USED_JAHR  || '
      WHERE ID = ' || BSAINFO_ID;
      EXECUTE STATEMENT MySQL;   
unter anderem
...
'UMSATZ_JAHR' || GJAHR den String "UMSATZ_JAHR8"

und das Feld UMSATZ_JAHR8 gibt es in BSAINFO nicht.

Das nächste ist, das es das Feld USED_AUG auch nicht gibt wie es hier benutzt wird:

Code: Alles auswählen

      MySQL = '
      UPDATE BSAINFO
      SET UMS_JAN' || GJAHR || ' = ' || UMS_JAN || ',
          UMS_FEB' || GJAHR || ' = ' || UMS_FEB || ',
          UMS_MAERZ' || GJAHR || ' = ' || UMS_MAERZ || ',
          UMS_APRIL' || GJAHR || ' = ' || UMS_APRIL || ',
          UMS_MAI' || GJAHR || ' = ' || UMS_MAI || ',
          UMS_JUNI' || GJAHR || ' = ' || UMS_JUNI || ',
          UMS_JULI' || GJAHR || ' = ' || UMS_JULI || ',
          UMS_AUG' || GJAHR || ' = ' || UMS_AUG || ',
          UMS_SEPT' || GJAHR || ' = ' || UMS_SEPT || ',
          UMS_OKT' || GJAHR || ' = ' || UMS_OKT || ',
          UMS_NOV' || GJAHR || ' = ' || UMS_NOV || ',
          UMS_DEZ' || GJAHR || ' = ' || UMS_DEZ || ',
 
          STCK_JAN' || GJAHR || ' = ' || STCK_JAN || ',
          STCK_FEB' || GJAHR || ' = ' || STCK_FEB || ',
          STCK_MAERZ' || GJAHR || ' = ' || STCK_MAERZ || ',
          STCK_APRIL' || GJAHR || ' = ' || STCK_APRIL || ',
          STCK_MAI' || GJAHR || ' = ' || STCK_MAI || ',
          STCK_JUNI' || GJAHR || ' = ' || STCK_JUNI || ',
          STCK_JULI' || GJAHR || ' = ' || STCK_JULI || ',
          STCK_AUG' || GJAHR || ' = ' || STCK_AUG || ',
          STCK_SEPT' || GJAHR || ' = ' || STCK_SEPT || ',
          STCK_OKT' || GJAHR || ' = ' || STCK_OKT || ',
          STCK_NOV' || GJAHR || ' = ' || STCK_NOV || ',
          STCK_DEZ' || GJAHR || ' = ' || STCK_DEZ || ',
 
          USED_JAN' || GJAHR || ' = ' || USED_JAN || ',
          USED_FEB' || GJAHR || ' = ' || USED_FEB || ',
          USED_MAERZ' || GJAHR || ' = ' || USED_MAERZ || ',
          USED_APRIL' || GJAHR || ' = ' || USED_APRIL || ',
          USED_MAI' || GJAHR || ' = ' || USED_MAI || ',
          USED_JUNI' || GJAHR || ' = ' || USED_JUNI || ',
          USED_JULI' || GJAHR || ' = ' || USED_JULI || ',
          USED_AUG' || GJAHR || ' = ' || USED_AUG || ',
          USED_SEPT' || GJAHR || ' = ' || USED_SEPT || ',
          USED_OKT' || GJAHR || ' = ' || USED_OKT || ',
          USED_NOV' || GJAHR || ' = ' || USED_NOV || ',
          USED_DEZ' || GJAHR || ' = ' || USED_DEZ || '
      WHERE ID = ' || BSAINFO_ID;
      EXECUTE STATEMENT MySQL; 
Also irgendwie ist das ganze Script, das hier gepostet wurde, gelinde gesagt "SCHROTT".

Gibt es vielleicht schon was neueres :?:
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Das Feld August wurde in Aug umbenannt. Muss für den derzeitigen Release in der Prozedur dann angepasst werden. Das passiert eben, wenn man außerplanmäßige Updates ins Forum schreibt...

Stimmt, der Parameter muss 1, 2, 3 oder 4 lauten, je nachdem für welches Geschäftsjahr berechnet werden soll, also dieses (= 1) oder letztes (=2) oder vorletztes bzw. vorvorletztes (= 3 bzw. 4).
unter anderem
...
'UMSATZ_JAHR' || GJAHR den String "UMSATZ_JAHR8"

und das Feld UMSATZ_JAHR8 gibt es in BSAINFO nicht.
Dazu würde es nicht kommen, wenn man die Zeile darüber anschaut.

Außerdem läuft der JobServer einwandfrei mit den Eingaben durch, so dass es am Skript nicht liegen kann.
festus01
Beiträge: 515
Registriert: Di Okt 19, 2004 5:45 am
Wohnort: Diepholz

Beitrag von festus01 »

Guten Morgen,

komisch jetzt läuft das Script :o

@rs200

Sie müssen also folgendes tun:

In der Procedure P_BSAINFO_FUELLEN diesen Abschnitt suchen:

Code: Alles auswählen

    IF (GJAHR IN (1, 2)) THEN
    BEGIN
      MySQL = '
      UPDATE BSAINFO
      SET UMS_JAN' || GJAHR || ' = ' || UMS_JAN || ',
          UMS_FEB' || GJAHR || ' = ' || UMS_FEB || ',
          UMS_MAERZ' || GJAHR || ' = ' || UMS_MAERZ || ',
          UMS_APRIL' || GJAHR || ' = ' || UMS_APRIL || ',
          UMS_MAI' || GJAHR || ' = ' || UMS_MAI || ',
          UMS_JUNI' || GJAHR || ' = ' || UMS_JUNI || ',
          UMS_JULI' || GJAHR || ' = ' || UMS_JULI || ',
          UMS_AUG' || GJAHR || ' = ' || UMS_AUG || ',
          UMS_SEPT' || GJAHR || ' = ' || UMS_SEPT || ',
          UMS_OKT' || GJAHR || ' = ' || UMS_OKT || ',
          UMS_NOV' || GJAHR || ' = ' || UMS_NOV || ',
          UMS_DEZ' || GJAHR || ' = ' || UMS_DEZ || ',
 
          STCK_JAN' || GJAHR || ' = ' || STCK_JAN || ',
          STCK_FEB' || GJAHR || ' = ' || STCK_FEB || ',
          STCK_MAERZ' || GJAHR || ' = ' || STCK_MAERZ || ',
          STCK_APRIL' || GJAHR || ' = ' || STCK_APRIL || ',
          STCK_MAI' || GJAHR || ' = ' || STCK_MAI || ',
          STCK_JUNI' || GJAHR || ' = ' || STCK_JUNI || ',
          STCK_JULI' || GJAHR || ' = ' || STCK_JULI || ',
          STCK_AUG' || GJAHR || ' = ' || STCK_AUG || ',
          STCK_SEPT' || GJAHR || ' = ' || STCK_SEPT || ',
          STCK_OKT' || GJAHR || ' = ' || STCK_OKT || ',
          STCK_NOV' || GJAHR || ' = ' || STCK_NOV || ',
          STCK_DEZ' || GJAHR || ' = ' || STCK_DEZ || ',
 
          USED_JAN' || GJAHR || ' = ' || USED_JAN || ',
          USED_FEB' || GJAHR || ' = ' || USED_FEB || ',
          USED_MAERZ' || GJAHR || ' = ' || USED_MAERZ || ',
          USED_APRIL' || GJAHR || ' = ' || USED_APRIL || ',
          USED_MAI' || GJAHR || ' = ' || USED_MAI || ',
          USED_JUNI' || GJAHR || ' = ' || USED_JUNI || ',
          USED_JULI' || GJAHR || ' = ' || USED_JULI || ',
          USED_AUG' || GJAHR || ' = ' || USED_AUG || ',
          USED_SEPT' || GJAHR || ' = ' || USED_SEPT || ',
          USED_OKT' || GJAHR || ' = ' || USED_OKT || ',
          USED_NOV' || GJAHR || ' = ' || USED_NOV || ',
          USED_DEZ' || GJAHR || ' = ' || USED_DEZ || '
      WHERE ID = ' || BSAINFO_ID;
und die Zeile:

Code: Alles auswählen

USED_AUG' || GJAHR || ' = ' || USED_AUG || ',
gegen diese:

Code: Alles auswählen

USED_AUGUST' || GJAHR || ' = ' || USED_AUG || ',
austauschen.

Dann kann das Script, wie Admin geschrieben hat, mit dem Parameter 1,2,3 oder 4 aufgerufen werden.

Danach kann man sich an den Zahlen und Diagrammen in der Maske FRMV_BSAINFO ergötzen :wink:
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
rs200
Beiträge: 79
Registriert: Fr Nov 18, 2005 9:38 am
Wohnort: Unna

JobServer Artikelinformationssystem

Beitrag von rs200 »

Guten Morgen,

vielen Dank für die Infos. Bin immer wieder erstaunt, mit welcher scheinbaren Leichtigkeit die Skripte von unterschiedlichen Usern durchschaut werden. Für mich sind dies auf den ersten Blick immer ein Haufen Buchstaben.':shock:'

Nach der Änderung in "AUGUST" läuft es auch bei mir durch.

----------------------------------------------------------------------------------------

eine Sache hab ich in diesem Zusammenhang noch:
im Formular BJOB bekomme ich einen Fehler bei folgender Aktion:
Neuen Datensatz anlegen -> Pflichfelder ausfüllen -> "Auswahl-Button" von "Interbase-Prozedur" aktivieren -> entsprechende Prozedur suchen,markieren und per Symbol übernehmen -> ggf. "Programm-Parameter" eintragen -> Datensastz speichern/übernehem.

Fehler: "Datensatz enthält eine ungültige Feldeingabe"

Trage ich die Prozedur per hand ein (nicht über Auswahl-Button), dann kann ich den Datensatz speichern.

Sollte ich hierfür besser ein neues Posting anlegen? Wenn ja - wo? in Averp 2008 oder allgemein unter Fehler?

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

Beitrag von festus01 »

Hallo rs200,

das kann ich so nicht nachvollziehen.

Ich habe gerade eben mal einen entsprechenden Datensatz angelegt (s. Screenshot)

Bild

Sind wirklich alle Pflichtfelder ausgefüllt :?: :?: :?:
MfG

KDP

----------------------------------------------------------
Durch den Computer spart der Mensch so viel Zeit,
dass er diese am Computer verbringen kann.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Funktioniert bei uns.

Der Fehler kommt, wenn sowohl Externprogramm als auch die Prozedur ausgefüllt ist, bzw. wenn die Zeiteinheit leer oder nicht 1,2 oder 3 ist.
Antworten