[Gelöst] Artikeltabelle 27 - Datensatz hinzufügen

14. März 2007 12:59

Hallo wieder liebes Forum,

nachdem mein Update gut funktioniert, möchte ich jetzt neue Artikel hinzufügen können.

Die Daten kommen aus meiner eigenen Tabelle.
Kann ich gleich den kompletten Datensatz in die neue Tabelle schreiben oder muss ich einzeln machen:
O_Artikel.VALIDATE(P_Artikel."Nr.",MT_Artikel.Artikelnr);

Mach ich das so überhaupt richtig?

O_Artikel ist mein Record auf die Artikeltabelle 27
MT_Artikel ist meine eigene Tabelle

Wenn ich so mache, sagt er beim "Basiseinheitencode einen Fehler", obwohl die Artikeltablle code 10 und meine auch code 10 hat und bei den Werten bei beide STK ist.

Danke
Zuletzt geändert von NAV_Lehrling am 19. März 2007 15:31, insgesamt 1-mal geändert.

14. März 2007 13:06

Prinzipiell kannst du keine Fehler machen, wenn du die Felder validierst, da sie bei manueller Erfassung der Artikel auch ausgeführt würden.

Bevor du einen Einheitencode einträgst, musst du die entsprechende Einheit auch in der Tabelle "Artikeleinheit" (5404) eintragen, unter Umständen auch in der Tabelle "Einheit" (204).
Also vor dem Eintragen prüfen, ob die Artikeleinheit existiert und vor dem Eintragen der Artikeleinheit prüfen, ob die Einheit existiert.

14. März 2007 14:48

Danke mal,
habe jetzt den check eingebaut,
in der Tabelle 5404 ist der Datensatz nicht vorhanden,
dann versuche ich den Datensatz auch dort zum Eintragen,
bekomme aber den gleichen Fehler, dass Artikelnr nicht vorhanden ist.

Bei dieser Zeile schreit er:
MYREC_Artikeleinheit.VALIDATE(MYREC_Artikeleinheit."Artikelnr.",MT_Artikel.Artikelnr);

wollte NR, Code, Menge pro Einheit und Menge pro Basiseinheit so eintragen, nur bei der ersten Zeile ist schon aus.

Die Einheit STK gibt es.

Danke

14. März 2007 14:55

Du musst zuerst mal den Datensatz für den Artikel speichern, sobald du die Nummer festgelegt hast, damit du in der Tabelle Artikeleinheit darauf zugreifen kannst. dann kannst du die restlichen Felder füllen und den Datensatz mit Modify aktualisieren

14. März 2007 15:54

Danke, aber leider bin ich jetzt ein bissl verwirrt..:)

Hr. Lässer schrieb:
Bevor du einen Einheitencode einträgst, musst du die entsprechende Einheit auch in der Tabelle "Artikeleinheit" (5404) eintragen....

Also kann ich den Datensatz für den Artikel nicht fertig machen, da ja sonst wieder der Fehler kommt.

In meiner Pushfuntion beim auslösen schaut er ob er die Artikelnr schon hat, wenn ja macht er ein Update des Datensatzes, wenn nicht ich rufe die function create_artikel auf, ich übergebe die Artikelnr.

create_artikel sieht so aus:

Code:
O_Artikel.VALIDATE(O_Artikel."Nr.",MT_Artikel.Artikelnr);
O_Artikel.VALIDATE(O_Artikel."Kreditorennr.",MT_Artikel.Kreditorennr);


usw. er macht alles bis zum Einheitencode, dann der Fehler.

Muss ich was inzwischen machen?

Danke

14. März 2007 16:01

1. Schritt: Artikel soweit möglich füllen uns mit INSERT(TRUE) speichern.
2. Schritt: (Artikel-)Einheiten prüfen und ggfls. anlegen.
3. Schritt: Den Artikel vervollständigen und mit MODIFY(TRUE) speichern.

14. März 2007 16:30

Danke für die Mühe, bin da leider noch lil Lehrling.

Habe das jetzt so versucht,
jetzt habe ich die Fehlermeldung: Lieferanten-Katalog existiert nicht!

Was und wo ist der Lieferanten-Katalog?

Wie kann ich das lösen?

Danke

14. März 2007 16:50

Hier scheint es sich um ein gleichartiges Problem zu handeln.
Es gibt also ein Feld, welches eine TableRelation zu einer anderen Tabelle hat. In diesem Fall heißt die Tabelle "Lieferanten-Katalog" (und ist nicht Bestandteil des Navision-Standards).
Diese Problematik kann bei jedem Feld auftreten, welches eine TableRelation besitzt.

14. März 2007 18:31

Oops, war jetzt wohl mein Fehler
Beitrag von vorher überschrieben

14. März 2007 19:01

NAV_Lehrling hat geschrieben:Dann hab ich das Problem, dass ich die Schritte nicht einhalten kann:
1. Schritt: Artikel soweit möglich füllen uns mit INSERT(TRUE) speichern.
2. Schritt: (Artikel-)Einheiten prüfen und ggfls. anlegen.
3. Schritt: Den Artikel vervollständigen und mit MODIFY(TRUE) speichern.

Da beim INSERT Befehl den Lieferanten-Katalog benötigt wird.
Dieser geht auf die Tabelle 99 (Artikellieferant), wo aber Artikelnr und Kreditorennr eine TableRelation auf die Tabelle Artikel bzw Kreditor ist.

Also mit INSERT(TRUE) komme ich nicht weiter und ohne auch nicht..

Das kann nicht sein, beim Insert in die Artikeltabelle muss kein Artikellieferant vorhanden sein.
Wenn du allerdings in Deiner Tabelle auch Daten für die Tabelle Artikellieferant hast, kannst du diese natürlich erst nach dem insert des Artikeldatensatzes füllen.
Du kannst doch auch manuell neue Artikel anlegen, dann muss das auch mit dem Programm gehen.
Vielleicht noch als Hinweis: Sobald du bei manuellem Anlegen eines Artikels das Feld Nr. verläßt wird der Artikel gespeichert!
das heißt für dich, nach dem Eintragen der Nummer machst du ein Insert(true) füllst dann alle abhängigen Tabellen und die weiteren Felder aus und zum schluss machst du noch ein Modify(true).

14. März 2007 19:09

Hm, komisch ist:
ich mache
Code:
O_Artikel.VALIDATE(O_Artikel."Nr.",MT_Artikel.Artikelnr);
O_Artikel.VALIDATE(O_Artikel."Kreditorennr.",MT_Artikel.Kreditorennr);


DANN
Code:
O_Artikel.INSERT(TRUE);


Wenn ich jetzt mit Debugger durchgehe habe ich das Problem beim Insert beim:
Code:
        locArtikellieferant.RESET;
        locArtikellieferant.SETRANGE("Artikelnr.","Nr.");
        locArtikellieferant.SETRANGE("Kreditorennr.","Kreditorennr.");
        IF NOT locArtikellieferant.FIND('-') THEN
          ERROR('Artikel/Lieferanten-Katalog existiert nicht! \' +
                'Artikel: "%1" \' +
                'Lieferant: "%2"',"Nr.","Kreditorennr.");



Bin ratlos...:(
:?: :?:

14. März 2007 19:16

steht dein Code im OnInsert-Trigger der Tabelle 27?
das ist dann aber nicht Standard und du dürftest auch manuell keine neuen Artikel anlegen können!
Sinnvoller wäre statt eines Errorbefehls hier das Füllen der Tabelle mit den nötigen Daten.

14. März 2007 19:51

Ja, er steht beim OnInsert-Trigger der Tabelle 27.

Nur ich kann Manuell anlegen.
Da schreit er nicht.

Habe auch schon versucht nur die Artikelnr:
O_Artikel.VALIDATE(O_Artikel."Nr.",MT_Artikel.Artikelnr);
Danach das O_Artikel.INSERT(TRUE);

kommt aber imm Fehler wie im Pic zu sehen ist.
hm... :?: :?:
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

14. März 2007 21:33

Gib uns doch mal bitte den kompletten Code des OnInsert()-Triggers der Tabelle 27.
Der von dir angegebene Code ist eindeutig eine Individual-Programmierung.
So wie wir es jetzt sehen können, wäre es unmöglich, einen einzigen Artikel anzulegen, daher bitte einmal den kompletten Code.
Hinweis: Packe den Code unbedingt in [code]-Blöcke, damit er hier richtig dargestellt wird.

19. März 2007 15:30

Danke, habe ich mithife des Einmalartikels gelöst.