Home Forum Nuclos Entwicklung Makros und Regeln Mandant in Datenbankobjekt

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)
  • Autor
    Beiträge
  • #26574
    Dieter Mennig
    Teilnehmer

    Hi zusammen,

    ich habe bei functions in Datenbankobjekten festgestellt, dass die Einschränkung für Mandanten nicht funktioniert.

    Ich habe folgende Funktion, die fehlerfrei funktioniert (informative Darstellung des EK eines Artikels in einer Auftragsposition –> noch keine Einschränkung auf einen Mandanten)

    CREATE OR REPLACE FUNCTION ABCD_CA_AUFPOS_EKARTIKEL(id numeric) 
    RETURNS numeric AS
    $BODY$
    DECLARE
      ekartikel numeric;
    BEGIN
       SELECT T1.dbleknetto INTO ekartikel
       FROM ABCD_ARTIKEL T1
    	 INNER JOIN BF2Y_AUFTRAGSPOSITION T2 ON T1.intid = T2.intid_artikel
      WHERE intid = id;
     
      RETURN ekartikel;
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE
      COST 100;

    Nun habe ich die Einschränkung auf einen Mandanten eingefügt –> (SELECT * FROM BF2Y_ARTIKEL WHERE STRUID_NUCLOSMANDATOR in (‚$mandator‘)) :

    CREATE OR REPLACE FUNCTION ABCD_CA_AUFPOS_EKARTIKEL(id numeric) 
    RETURNS numeric AS
    $BODY$
    DECLARE
      ekartikel numeric;
    BEGIN
       SELECT T1.dbleknetto INTO ekartikel
       FROM (SELECT * FROM ABCD_ARTIKEL WHERE STRUID_NUCLOSMANDATOR in ('$mandator')) T1
    	 INNER JOIN BF2Y_AUFTRAGSPOSITION T2 ON T1.intid = T2.intid_artikel
      WHERE intid = id;
     
      RETURN ekartikel;
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE
      COST 100;

    Die Abfrage wird fehlerfrei abgespeichert, allerdings wird der Wert nicht übertragen. Das zugeordnete Feld in der Auftragsposition bleibt leer. Ein Fehler wird nicht angezeigt.
    Als Test habe ich die Abfrage mal unter Datenquellen–> Berechnetes Attribut angelegt. Hier funktioniert alles, also einschl. der Einschränkung auf den Mandanten wird das Feld in der Auftragsposition korrekt gefüllt.

    Was kann hier die Ursache sein? Vielleicht muss der Select (SELECT * FROM BF2Y_ARTIKEL WHERE STRUID_NUCLOSMANDATOR in (‚$mandator‘)) anders aussehen.

    Kennt das jemand und kann hier unterstützen oder ist das ein Bug.

    Vielen Dank schon mal.

    • Dieses Thema wurde geändert vor 1 Jahr, 8 Monaten von Dieter Mennig.
    • Dieses Thema wurde geändert vor 1 Jahr, 8 Monaten von Dieter Mennig.
    • Dieses Thema wurde geändert vor 1 Jahr, 8 Monaten von Dieter Mennig.
    • Dieses Thema wurde geändert vor 1 Jahr, 8 Monaten von Dieter Mennig.
    #26615
    caf
    Verwalter

    Hallo Softwareprofi,

    Eine Datenquelle, basierend auf einem manuellen SQL wird nicht automatisch auf Mandanten eingeschränkt, da die Ermittlung hierfür zu komplex und fehleranfällig wäre. Wenn man aber einen Datenquellenparameter „mandator“ anlegt, so wird Nuclos den Wert automatisch setzen. Dabei sollte der Wert immer mit einem „IN“ eingebunden werden. Beispiel: „T3.STRUID_NUCLOSMANDATOR in (‚$mandator‘)“

Ansicht von 2 Beiträgen - 1 bis 2 (von insgesamt 2)