[Gelöst] Artikelnummer in zwei versch. Tabellen finden

25. Oktober 2007 16:28

Ich glaube ich bin Heute zu doof dazu :cry:

Ich habe einen Dataport der eine Textdatei in eine Tabelle schreibt. Unteranderem die Artikelnummer. Jetzt möchte ich, während der Dataport noch läuft (also im "OnAfterImportRecord"-Trigger), gern diese Artikelnummer nehmen diese in der Artikeltabelle(Item) raussuchen und von diesem Artikel mir dann das Feld Mehrwertsteuer auslesen. Aber irgendwie bekomm ich das nicht hin.
Ich habs mit SETRANGE versucht.. aber entweder ich bin zu blöd oder ich mach irgendwas falsch.

Mein Code sieht so aus:

Code:
IF "Artikelnr." = '' THEN
   MESSAGE('Keine Artikelnummer in Tabelle Auftragsimportzeilen!')
ELSE
MESSAGE("Artikelnr."); //Kontrolle ob richtige Artikelnummer
AuftrImpZeilen.SETRANGE("Artikelnr.",Artikel."No.");
MESSAGE(Artikel."No.");


AuftrImpZeilen(Record) = Tabelle Auftragsimportzeilen
Der Dataport bzw. das Item verweist aber auch auf diese Tabelle. Ist das vielleicht mein Fehler? Denk ich zu einfach oder zu kompliziert?
Würde mich freuen wenn mir da jemand helfen könnte.
Zuletzt geändert von Heike Bennerscheid am 26. Oktober 2007 09:28, insgesamt 1-mal geändert.

25. Oktober 2007 17:49

Wenn du einen Feldwert aus der Artikeltabelle auslesen möchest, sollte ein GET mit der eingelesenen Artikelnr. erfolgen
Code:
IF Artikel.GET("Artikelnr.") THEN...


GET in diesem Fall , weil das hier der Primärschlüssel ist. Wenn auf andere Felder einer Tabelle gefiltert wird, ist SETRANGE oder SETFILTER notwendig.

Deine SETRANGE Anweisung würde in den AuftrImpZeilen auf die Artikel."No." filtern, verwendet also die falsche Tabelle bzw. ist von den Parametern verdreht. Außerdem muss danach noch ein FINDFIRST oder FIND('-') folgen , um den Datensatz zu lesen.

25. Oktober 2007 18:19

Also lasse ich das SETRANGE ganz weg und benutze nur das GET? Aber wie weiß er dann das er nur die eine Artikelnummer suchen soll?

25. Oktober 2007 18:57

GET kann immer nur maximal einen Datensatz finden, weil der Primärschlüssel ( der kann ggf. in anderen Tabellen auch aus mehreren Feldern bestehen) den Datensatz eindeutig idenfiziert. Sollte es wirklich mehr als einen mit diesem Wert geben, dann ist die Datenbank defekt. :wink:

Außerdem ignoriert GET alle gesetzten Filter. Wenn ein GET mit den richtigen Parametern nichts findet, dann existiert auch kein Datensatz mit diesem/n Primärschlüsselwert(en).

25. Oktober 2007 21:25

Ah OK. So langsam versteh ich immer besser wozu GET gut ist *doof grins*

Aber nochmal ne Frage zum Verständnis. Also bei deinem Code. Wenn man den "ausschreiben" würde. Würde das dann so heißen?

Wenn in der Tabelle Artikel(Item) ein Feld exestiert das gleich Artikelnummer aus der Tabelle Auftragsimportzeilen ist dann...

Weil du hast ja in den Klammern geschrieben "Artikelnr." und das ist ja das Feld aus der Tabelle Auftragsimportzeilen. Das Feld aus Artikel wäre ja "No.". Hab ich das richtig verstanden? :oops:

25. Oktober 2007 21:32

Heike Bennerscheid hat geschrieben:Wenn in der Tabelle Artikel(Item) ein Feld exestiert das gleich Artikelnummer aus der Tabelle Auftragsimportzeilen ist dann...

Wenn man GANZ pingelig ist, dann ist es FAST richtig ;-)

Ich würde es so formulieren: Wenn es in der Tabelle Artikel einen Datensatz mit Artikelnr = Artikelnr. aus ... gibt, dann ...

26. Oktober 2007 09:28

Danke. Genau das was ich brauchte (stand wohl Gestern echt total aufm Schlauch). Und dabei sogar noch viel gelernt.