none
Trigger RRS feed

  • Allgemeine Diskussion

  • Hallo Forum,

     ich kämpfe mich gerade ein bißchen mit der MS SQL Datenbank unseres ERP Anbieters herum. Vorab: Ich programmiere nur aus Hobby, würde aber gern zur Lösung unseres Problems beitragen.

     Folgende Sachlage: In unserem ERP bleiben ungewollt Vorgänge im Status "Offen" und verfäschen Auswertungen.

    Beispiel: Es wird ein Angebot für einen Interessenten geschrieben (Angebot 1), doch der Interessent hat Änderungswünsche. Nun muss das Angebot 1 zu Angebot 2 kopiert werden, dort finden die Anpassungen statt. Leider bleibt das Quellangebot im Status "offen". Es gibt nun zwei offene Angebote, obwohl das erste eigentlich nicht mehr gültig ist. Es müsste also einen anderen Status (abgelehnt) erhalten. Uns macht das bei der Ressourcenplanung unheimlich Schwierigkeiten.(unser ERP Anbieter will uns da wohlnicht helfen)

     Nun mal mein gedanklicher Ansatz: Wenn ich einen Trigger hätte, der beim einfügen eines Datensatzes nachsieht ob es für die betroffen Projektnummer ein Altes Angebot gibt und dies im Status ändert, wäre mir ohne teure ERP Änderungen geholfen.

     

    Die Tabelle hat dazu nur ein paar relevante Felder

     

    Nummer - eindeutiger Datensatzschlüssel

    Projekt - Textfeld mit unserer Projektbezeichnung

    Vorgangsart - Textfeld (hier Relevant ANGEBOT)

    Status -Integer, zu verändernder Wert.

     

    Wir nun ein neues Angebot angelegt müsste es doch über einen Trigger möglich sein die "Alt-Angebote" upzudaten, oder. Mein Ansatz:

     

    -- Höchste Nummer eines Angebots aus dem bearbeiteten Projekt holen

    select max(nummer) from Projektzweige
    where projekt ='10824'
    And Vorgangsart ='Angebot'

     

    die "irgendwie" merken

     

    ---alle anderen Angebote im Status ändern

    Update Projektzweige
    Set Status = 1
    where projekt ='10824'
    And Vorgangsart ='Angebot'
    and Nummer not in (select max(nummer) from Projektzweige
    where projekt ='10824'
    And Vorgangsart ='Angebot')

    Wie bekommt man das in einen Trigger? Und ums insteressant zu machen: Es gibt schon einen insert Trigger auf der Tabelle. kann einfach ein weiterer eingefügt werden? Mein vorrangigstes gedankliches Problem ist es das Projekt zu greifen...

     

    Jeder Tipp ist willkommen...

    Freitag, 21. März 2014 15:56

Alle Antworten

  • Mein Tipp wäre, die Finger von einem Trigger zu lassen, der das Potential hat, zu weiteren Fehlern zu führen, mit denen die Software nicht rechnet. (Das liegt in der "Natur" von Triggern.)

    Bevor man irgendetwa s macht, sollte man ganz genau seine Garantie- und Support-Bedingungen prüfen.

    Eine solche kann man mit solchen Aktionen nämlich ganz schnell verlieren.

    Sodann sollte man sich mal gemeisam an den Tisch setzen, das Problem klar umreißen und möglicherweise einfach mal in finanzielle Werte umrechnen.


    Andreas Wolter (Blog | Twitter)
    MCM - Microsoft Certified Master SQL Server 2008
    MCSM - Microsoft Certified Solutions Master Data Platform, SQL Server 2012
    www.andreas-wolter.com | www.SarpedonQualityLab.com

    Freitag, 21. März 2014 18:20
  • Da muss ich Andreas leider recht geben. Man sollte nur die Mittel verwenden, die der Anbieter auch vorgesehen hat.

    Ein möglicher Weg wäre allerdings die Generierung eines Reports, der z. b. wöchentlich als Abo verteilt wird und wo im Nachgang dann Sachbearbeiter (über die Anwendung) diese Aufträge abschließen.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Montag, 24. März 2014 07:28
  • Hallo PM Heiko

    Sehr gefährlich was Du da machen willst. Viele Köche verderben bekanntlicherweise den Brei. Du wirst Damit nur in Probleme laufen.

    Ich denke, der Lieferant hat auch den Trigger geliefert, der bereits läuft. Und das System wir andernorts auch so eingesetzt. Oder ist es eine Kundenspezifische Lösung, also nur für Euch? Ich könnte mir in diesem Fall nicht erklären, wieso der Lieferant Euch nicht helfen will, es wird wohl einen Grund geben, evtl. betrachtet er das als zu gefährlich und ein Fork der Anwendung ist auch nicht immer wünschenswert, weil vielleicht andere Kunden eben das nicht so haben wollen.

    Kommt hinzu, dass bei jedem Update der Schemas die Gefahr besteht, dass die Anpassung, die Ihr selber vornehmt wieder verloren geht.

    Ich würde eher die Schnittstelle zur Ressourcen Planung überdenken und dort je Projekt nur für das neuste Angebot Ressourcen allozieren. Das tut dann dem bestehenden System nicht weh.

    Gruss

    Henry

    Montag, 24. März 2014 09:03