ISC Fehlernummer:335544652

Fragen und Problemen zur Inbetriebnahme, Konfiguration und Wartung von AvERP und der Datenbank

Moderator: SYNERPY

Antworten
RBS-Admin
Beiträge: 64
Registriert: Di Aug 30, 2005 11:58 am
Wohnort: Philippines

ISC Fehlernummer:335544652

Beitrag von RBS-Admin »

Hallo!

Habe ein dickes Problem, wenn ich einen Auftrag anlege und denn auf LS und RG generiere gehe. Kommt noch die Frage ob ich wirklich Lieferschein und Rechnung generieren will, beantworte ich mit "ja"
und dann bekomme ich folgende Meldung:

Information


Aktuelle Variablenwerte:
B = 'FRMV_BAUF'
bAuftragOK = 1
CodeYes = 'J'
DebugOn = False
iBAUF_ID = 7
sAuftrag = 'J'
Z = 47314116



Error


Execute der IB_StoredProc fehlgeschlagen
StoredProc-Name: StP_Universal
IB-PROCEDURE-Name: P_BAUF_NACH_BRRCP
SQL-Anweisung: EXECUTE PROCEDURE P_BAUF_NACH_BRRCP
?BAUF_ID

Aufruf erfolgte von:
IB-Exception: Meldung von der AVERP-Datenbank
Errcode: 335544652
ErrorMessage: ISC Fehlernummer:335544652

ISC Fehlermeldung:
multiple rows in singleton select

STATEMENT:
TIB_StoredProc: "<TApplication>.frmData.StP_Universal."


SQLMessage:
SQLCODE: -811

Was läuft falsch?

Kann es daran liegen das ich die Fusszeile vergrößert habe? Hat allerdings bis jetzt problemlos funktioniert.

Gruß

Robert
R-B-S Webdesign & Services Inc.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Nein, das liegt an der Prozedur und nicht an der Fußzeile. Wenn es mehrere offene Lieferschein für die Lieferadresse gibt, dann kommt es hier zu einem Fehler.

Code: Alles auswählen

 SET TERM ^ ;

ALTER PROCEDURE P_BAUF_NACH_BRRCP(
    BAUF_ID INTEGER)
AS
DECLARE VARIABLE SJA VARCHAR(1);
DECLARE VARIABLE SNEIN VARCHAR(1);
DECLARE VARIABLE BKUNDE_ID_KUNR INTEGER;
DECLARE VARIABLE BADR_ID_LIEFADRNR INTEGER;
DECLARE VARIABLE BADR_ID_READRNR INTEGER;
DECLARE VARIABLE BRLS_ID INTEGER;
DECLARE VARIABLE BRRC_ID INTEGER;
DECLARE VARIABLE BAUFPO_ID INTEGER;
DECLARE VARIABLE COUNTER INTEGER;
DECLARE VARIABLE BWAER_ID INTEGER;
BEGIN
  /* LETZTER STAND 12.09.2005 09:00:15 HB */
  /* PROTOKOLLIEREN, DASS AKTION HIER DURCHGELAUFEN IST */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BAUF_NACH_BRRCP');


  /* Aus Auftrag einen Lieferschein und eine Rechnung erzeugen */

  EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);
  BKUNDE_ID_KUNR = NULL;
  BADR_ID_LIEFADRNR = NULL;
  BADR_ID_READRNR = NULL;

  /* Hier muss getestet werden, ob der Auftrag überhaupt Positionen hat,
     die geliefert werden können.
     Wenn nicht, dann werden auch keine Lieferschein- und
     Rechnungsköpfe angelegt
  COUNTER = 0;
  FOR SELECT E.ID
  FROM BAUFPO E
  LEFT OUTER JOIN BARTLH F ON E.BARTLH_ID_LAGERNR = F.ID
  WHERE E.BAUF_ID_LINKKEY = :BAUF_ID
  INTO :BAUFPO_ID
  DO
    COUNTER = COUNTER + 1;

  IF (COUNTER < 1) THEN EXIT;*/

  /* Informationen zum Auftrag holen */
  SELECT BKUNDE_ID_KUNR,
         BADR_ID_LIEFADRNR,
         BADR_ID_READRNR,
         BWAER_ID
  FROM BAUF
  WHERE ID = :BAUF_ID
  INTO :BKUNDE_ID_KUNR,
       :BADR_ID_LIEFADRNR,
       :BADR_ID_READRNR,
       :BWAER_ID;

  /* Lieferschein anlegen */
  BRLS_ID = NULL;

  /* Positionen werden immer zum ältesten Lieferschein anlegen */
  SELECT MIN(ID)
  FROM BRLS
  WHERE BKUNDE_ID_LINKKEY = :BKUNDE_ID_KUNR AND
        BADR_ID_LADRCODE = :BADR_ID_LIEFADRNR AND
        LSGEDRUCKT = :SNEIN
  INTO :BRLS_ID;

  IF (BRLS_ID IS NULL) THEN
  BEGIN
    BRLS_ID = GEN_ID(GEN_BRLS, 1);
    INSERT INTO BRLS(
      ID,
      MASKENKEY,
      ANSPRECHP,
      BADR_ID_LADRCODE,
      LIEFDATUM,
      BKUNDE_ID_LINKKEY,
      BABT_ID_LSABTNR,
      LSGEDRUCKT,
      UZEICH,
      BLIEBE_ID_VERSBED1K,
      BLIEBE_ID_VERSBED2K,
      BVERSAND_ID_1,
      BVERSAND_ID_2,
      BMAND_ID)
      SELECT
        :BRLS_ID,
        NULL,
        A.ANSPRECHP,
        A.BADR_ID_LIEFADRNR,
        A.KLTERMIN,
        A.BKUNDE_ID_KUNR,
        A.BABT_ID_ABTNR,
        :SNEIN,
        A.UZEICH,
        A.BLIEBE_ID_VERSBED1K,
        A.BLIEBE_ID_VERSBED2K,
        A.BVERSAND_ID_1,
        A.BVERSAND_ID_2,
        A.BMAND_ID
        FROM BAUF A
        WHERE A.ID = :BAUF_ID;
  END

  /* Rechnungen anlegen */
  BRRC_ID = NULL;
  SELECT ID
  FROM BRRC
  WHERE BKUNDE_ID_LINKKEY = :BKUNDE_ID_KUNR AND
        BADR_ID_RADRCODE = :BADR_ID_READRNR AND
        RGGEDRUCKT = :SNEIN AND
        RECHNUNGSART = 'R' AND
        BWAER_ID = :BWAER_ID
  INTO :BRRC_ID;

  IF (BRRC_ID IS NULL) THEN
  BEGIN
    BRRC_ID = GEN_ID(GEN_BRRC, 1);
    INSERT INTO BRRC(
      ID,
      MASKENKEY,
      ANSPRECHP,
      GESAMT,
      GUTSCHR,
      GUTSCHRART,
      KURSDF,
      BKUNDE_ID_LINKKEY,
      MWST,
      BMWST_ID_MWSTKZ,
      MWSTSATZ,
      NETTO,
      BADR_ID_RADRCODE,
      RECHDATUM,
      BABT_ID_RGABTNR,
      RGGEDRUCKT,
      UZEICH,
      VERBUCHT,
      VERRECHNET,
      BWAER_ID_WAEHRUNGK,
      BZAHBE_ID_ZAHLBED1K,
      BZAHBE_ID_ZAHLBED2K,
      BZAHBE_ID_ZAHLBED3K,
      BZAHBE_ID_ZAHLBED4K,
      BRRCNK_SUMME,
      RECHNUNGSART,
      ABSCHLAGPROZENT,
      BMAND_ID,
      GESAMT_FW,
      MWST_FW,
      NETTO_FW,
      BRRCNK_SUMME_FW,
      BWAER_ID,
      KURS_FW,
      ZAHLART)
      SELECT
        :BRRC_ID,
        NULL,
        B.ANSPRECHP,
        0.0,
        :SNEIN,
        NULL,
        B.KURSDF,
        B.BKUNDE_ID_KUNR,
        0,
        C.BMWST_ID_MWSTKENNZ,
        D.PROZENT,
        0.0,
        B.BADR_ID_READRNR,
        CURRENT_DATE,
        B.BABT_ID_ABTNR,
        :SNEIN,
        B.UZEICH,
        :SNEIN,
        :SNEIN,
        B.BWAER_ID_WAEHRUNGK,
        B.BZAHBE_ID_ZAHLBED1K,
        B.BZAHBE_ID_ZAHLBED2K,
        B.BZAHBE_ID_ZAHLBED3K,
        B.BZAHBE_ID_ZAHLBED4K,
        0.0,
        'R',
        0,
        B.BMAND_ID,
        0,
        0,
        0,
        0,
        B.BWAER_ID,
        B.KURS_FW,
        B.ZAHLART
        FROM BAUF B
        LEFT OUTER JOIN BFIRMA C ON C.ID = 1
        LEFT OUTER JOIN BMWST D ON C.BMWST_ID_MWSTKENNZ = D.ID
        WHERE B.ID = :BAUF_ID;
  END

  /* Positionen in Lieferschein und Rechnung eintragen */
  FOR SELECT E.ID
  FROM BAUFPO E
  LEFT OUTER JOIN BARTLH F ON E.BARTLH_ID_LAGERNR = F.ID
  WHERE E.BAUF_ID_LINKKEY = :BAUF_ID
  INTO :BAUFPO_ID
  DO
    UPDATE BRRCP
    SET BRRC_ID_RGNR = :BRRC_ID,
        BRLS_ID_LSNR = :BRLS_ID
    WHERE BRRC_ID_RGNR IS NULL AND
          BRLS_ID_LSNR IS NULL AND
          BAUFPO_ID_AUFNRPOS = :BAUFPO_ID AND
          BKUNDE_ID = BKUNDE_ID;

  /* Nebenkosten neu berechnen */
  EXECUTE PROCEDURE P_BRRCNK_AUTO(:BRRC_ID, 1)
  RETURNING_VALUES (:Counter);

  /* Rechnungskopf neu berechnen */
  EXECUTE PROCEDURE P_BRRC_NEUBERECHNUNG (:BRRC_ID);
END
^

SET TERM ; ^

GRANT INSERT ON A_WASMACHTIB TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT EXECUTE ON PROCEDURE P_BFIRMA_JANEIN TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT ON BAUF TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT,INSERT ON BRLS TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT,INSERT ON BRRC TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT ON BFIRMA TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT ON BMWST TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT ON BAUFPO TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT ON BARTLH TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT SELECT,UPDATE ON BRRCP TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT EXECUTE ON PROCEDURE P_BRRCNK_AUTO TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT EXECUTE ON PROCEDURE P_BRRC_NEUBERECHNUNG TO PROCEDURE P_BAUF_NACH_BRRCP;

GRANT EXECUTE ON PROCEDURE P_BAUF_NACH_BRRCP TO PROCEDURE P_TEST_AUFTRAG_LS_RG;
GRANT EXECUTE ON PROCEDURE P_BAUF_NACH_BRRCP TO "PUBLIC";
GRANT EXECUTE ON PROCEDURE P_BAUF_NACH_BRRCP TO SYSDBA;
Gast

Beitrag von Gast »

Also wäre der Fehler weg wenn ich die RG und LS nach dem druck und der Frage "ist der Druck OK?" mit "Ja" beantworte. Dann müsste die Sache doch ok sein.

Also ist es dann so, dass ich pro Kunde immer nur einen offenen Auftrag/Anfrage LS haben darf?

Gruß

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

Beitrag von admin »

Nein, man darf mehrere offene Lieferscheine und/oder Rechnungen haben. Die Prozedur wusste das nur nicht und hat sich eben beschwert.

Einfach das Skript in der Sonstiges -> Skripte-Maske ausführen und das Problem ist behoben.
sthiesen
Beiträge: 13
Registriert: Di Jan 08, 2008 10:06 am

Beitrag von sthiesen »

Ich bekomme die gie gleiche Fehlermeldung:

ISC :335544652
multiple rows in singleton select

Aber als PopUp, wenn ich Rechungen mit mehreren Positionen drucken will.
Die Rechnungen und Lieferscheine werden erzeugt. Lieferscheine werde gedruckt, aber die Rechungen kann ich nicht mehr drucken.

Wenn ich das Script einspiele, kann ich keine Lieferscheine und Rechnungen mehr erzeugen. (Fehlermeldung habe ich jetzt nicht, da ich du Prozedur zurück gespielt habe).

Welche Möglichkeiten gibt es, an denen es liegen könnte?

Gruß.
Antworten