0

Doppelten Artikel in Bestellung vermeiden

Hallo liebe Forumsmitglieder,

 

ich stehe mal wieder auf dem Schlauch und bräuchte euere Hilfe.

Ich befülle die Tabelle Bestellpositionen über einen Button Code anbei.

Nun würde ich gern vermeiden das ein Artikel doppelt eingegeben werden kann.

Jemand eine Idee? ich habe es mit cnt versucht aber irgendwie komme ich nicht damit zurecht

if Menge and Artikel then
    let visit := this;
    let newPosition := (create Bestellpositionen);
    let positionNr := max(Bestellpositionen.Pos) + 1;
    newPosition.(
        Artikel := visit.Artikel;
        Menge := visit.Menge;
        Besuche := visit;
        Preis := visit.Preis;
        Auswahl := visit.Auswahl;
        'Notiz zum Artikel' := visit.'Notiz zum Artikel'
    );
    Menge := 1;
    Artikel := 0;
    Auswahl := 1;
    Preis := 1;
    'Notiz zum Artikel' := ""
end

6 Antworten

null
    • Maurice
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Ist Artikel die Artikelnummer, also eindeutiges Merkmal? Das benötigst du ja, um abzufragen, ob ein Artikel schon vorhanden ist. Der Ansatz mit cnt ist der richtige. Aus dem Bauch heraus

    mit

    let thisArt:= Artikel;
    if Menge and Artikel and cnt(select Bestellpositionen[Artikel = thisArt])=0 then 

    sollte es klappen.

    Maurice

    • john_eans
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Christian Rott ,

    ich würde zählen, ob es den Artikel schon in der Tabelle Bestellpositionen gibt.

    Der Code wäre je nach Datenmodell ggf. etwas anders zu formulieren, könnte aber wie folgt aussehen:

    if Menge and Artikel then
        let visit := this;
        if cnt((select Bestellpositionen)[Artikel = visit.Artikel]) = 0 then
            let newPosition := (create Bestellpositionen);
            newPosition.(
                Artikel := visit.Artikel;
                Menge := visit.Menge;
                Preis := visit.Preis
            );
            Menge := 1;
            Artikel := 0;
            Preis := 1
        end
    end
    

    Man könnte alternativ auch den Button ausblenden, wenn es den Artikel bereits gibt.

    Und, um mal noch etwas weiter zu denken, man könnte natürlich auch die Mengen addieren. Also wenn es den Artikel in Bestellpositionen schon gibt, dann wird nicht noch ein Datensatz erstellt, sondern beim Bestehenden die Menge aktualisiert. Allerdings wäre dann auch der Preis zu prüfen, ggf. die Notiz zu ergänzen etc.

    Du kannst ja gerne mal ein Screenshot vom Datenmodell schicken.

    VG

    • Heinrich Frey Maschinenbau GmbH
    • Christian_Rott
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Erstmal Danke für eure Unterstützung. Hier mal folgende Bilder. Im Formular ist ein Feld für "Menge" dann "ARTIKELNUMMER DIREKT" dann Button DIREKTÜBERNAHME weil unsere Monteure die meisten Art-Nr kennen. Das funktioniert soweit auch prima. Nun kommt es aber vor das sie einen Artikel suchen über die Tabelle Artikel dort können sie nach Nummer und Namen suchen. Dann soll der Artikel ausgewählt werden und auch übernommen werden. Mit dem oben als erstes aufgeführten Code funktioniert das auch. Ich wollte es aber nun so wie bei der Direktübernahme machen aber da scheitert es bei mir dran.

     

      • Maurice
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Christian Rott Verständnisfrage: Dein Feld "Artikelstamm suchen" verweist auf die Tabelle Artikel, korrekt? Darin sind alle Artikel bisher eingepflegten Artikel gelistet, oder? Und die in deinem Screenshot zu sehende Untertabelle (Ansicht?) mit Namen "Artikel" gehört zu was? Tabelle "Bestellpositionen"? 

      • Heinrich Frey Maschinenbau GmbH
      • Christian_Rott
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Maurice Ja genau so ist es. Sorry hatte ich nicht dazu geschrieben.

    • Heinrich Frey Maschinenbau GmbH
    • Christian_Rott
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Danke euch bin jetzt einen vielleicht nicht ganz richtigen Weg gegangen und habe die Auswahl im Artikel suchen in ein Formelfeld gepackt und nun klappt es auch mit der abfrage Artikel ist vorhanden .