[GELÖST] Daten von Nachschlagetabelle eintragen

5. Februar 2007 21:10

Habe folgendes Problem:

Habe eine Tabelle "Wareneingang" , in dieser möchte ich Werte von einer "Nachschlagetabelle ziehen können. Im konkreten Fall möchte ich, das wenn eine Artikelnummer eingetragen wird, in meine TAbelle Wareneingang alle relevanten DAten gezogen werden aus der anderen Tabelle "Artikel".

Ich habe natürlich im Onvalidate trigger des Feldes "Artikelnummer" (Tabelle Wareneingang) dden Zugriff über eine lokale Variable hinterlegt, aber die Daten der anderen Felder werden nicht gezogen wenn man eine Artikelnummmer auswählt.

Ich komme einfach nicht weiter.. HILFE!!

Code:
IF rec_Artikel.GET(Artikelnummer) THEN
  ArtBezeichnung := rec_Artikel.ArtBezeichnung;
  Farbe := rec_Artikel.Farbe;


TAbelle Wareneingang:

Field Name
Artikelnummer
ArtBezeichnung
Farbe
Werkstoff

No.,KUNUMMER
Artikelnummer


Tabelle Artikel:

Field Name
Artikelnummer
KUNUMMER
ArtBezeichnung
Farbe
Werkstoff
Lagerort

Keys: No.,Artikelnummer
Zuletzt geändert von tesarolle am 6. Februar 2007 17:19, insgesamt 1-mal geändert.

5. Februar 2007 21:26

Kann es sein, dass du das BEGIN und END; vergessen hast?:
Code:
IF rec_Artikel.GET(Artikelnummer) THEN BEGIN
  ArtBezeichnung := rec_Artikel.ArtBezeichnung;
  Farbe := rec_Artikel.Farbe;
END;

5. Februar 2007 22:25

Hallo Timo,

ich habe das jetzt mal versucht, daran lag es leider nicht.

Ich habe noch was anderes probiert, wenn ich da ein FIND('-') mache holt er mir immer den ersen Datensatz rein, also es würde eigentlich schon funktionieren, ich muss irgendwas übersehen. Woran kann es noch liegen?

In meiner Form "Wareneingang" stelle ich zuerst einen Kunden ein anhand einer Kundennummer, da funktioniert das einwandfrei. Und im zweiten Schritt möchte ich in derselben Tabelle für denselben Datensatz dann eben noch den ARtikel anhand der Artikelnummer ziehen. Verstehe nur nicht warum das bei der Kundennummer einwandfrei funktioniert???
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

5. Februar 2007 22:28

In der Tabelle Wareneingang mache ich oben das ziehen der ADressdaten anhand der Kundennummmer. Das funktioniert wunderbar.

Code:
IF rec_Adressdaten.GET(KUNUMMER) THEN BEGIN
  ANREDE := rec_Adressdaten.ANREDE;
  NAME := rec_Adressdaten.NAME;
  ANSCHR := rec_Adressdaten.ANSCHR;
  ZUSATZ := rec_Adressdaten.ZUSATZ;
  STRASSE := rec_Adressdaten.STRASSE;
  PLZ := rec_Adressdaten.PLZ;
  ORT := rec_Adressdaten.ORT;
  FAX := rec_Adressdaten.FAX;
  Alarm := rec_Adressdaten.Alarm;
  SPRACHE := rec_Adressdaten.SPRACHE;
  KONDITION := rec_Adressdaten.KONDITION;

Eingangsdatum := TODAY;
END;


Und weiter unten halt den Code zum ziehen der Artikeldaten aus der Tabelle Artikel, und das funktioniert nicht, ich check das nicht:


IF rec_Artikel.GET(Artikelnummer) THEN BEGIN
ArtBezeichnung := rec_Artikel.ArtBezeichnung;
Farbe := rec_Artikel.Farbe;
END;

5. Februar 2007 22:50

Machst du auch ein INSERT bzw. MODIFY?
Code:
IF NOT rec.INSERT THEN
  IF NOT MODIFY THEN
    ERROR(...);


Ich vergesse den manchmal auch :-P
Gruß Mikka
Zuletzt geändert von mikka am 5. Februar 2007 22:52, insgesamt 1-mal geändert.

5. Februar 2007 22:51

Ich würde vorschlagen, den Debugger einzuschalten und die Variablen (Artikelnummer, etc.) zu überwachen.

5. Februar 2007 22:57

Evtl. Erweitere deinen Code um eine ELSE Bedinung
Code:
IF rec_Adressdaten.GET(KUNUMMER) THEN BEGIN
  ANREDE := rec_Adressdaten.ANREDE;
  NAME := rec_Adressdaten.NAME;
  ANSCHR := rec_Adressdaten.ANSCHR;
  ZUSATZ := rec_Adressdaten.ZUSATZ;
  STRASSE := rec_Adressdaten.STRASSE;
  PLZ := rec_Adressdaten.PLZ;
  ORT := rec_Adressdaten.ORT;
  FAX := rec_Adressdaten.FAX;
  Alarm := rec_Adressdaten.Alarm;
  SPRACHE := rec_Adressdaten.SPRACHE;
  KONDITION := rec_Adressdaten.KONDITION;

Eingangsdatum := TODAY;
END ELSE BEGIN
  ERROR('Der Kunde %1 wurde nicht gefunden!',KUNUMMER);
END;


Somit hast du die Gewissheit, das der Artikel definitiv im Zugriff ist. (Das gleiche auch beim GET auf den Artikel)
Das kannst du natürlich auch wie Marc es schreibt mit dem Debugger machen.

**Edit by Mikka**
Tesarolle hat geschrieben:Ich habe noch was anderes probiert, wenn ich da ein FIND('-') mache holt er mir immer den ersen Datensatz rein, also es würde eigentlich schon funktionieren, ich muss irgendwas übersehen. Woran kann es noch liegen?

Wenn du mehrere Datensätze anlegen / ändern willst, musst du nach jedem ein INSERT bzw. MODIFY machen.
(Aber so wie ich dich verstanden habe, holst du dir für eine Zeile einen Datensatz, oder?)
Mikka hat geschrieben:Machst du auch ein INSERT bzw. MODIFY?


Gruß Mikka

6. Februar 2007 17:18

Hat jetzt funktioniert,, ich hatte für den Zugriff keinen eindeutigen Schlüssel verwendet und nAvision hat dann gar keinen Satz gezogen!

Vielen Dank trotzdem an Euch!!