[Gelöst] Lookup auf 2 Tabellen

19. Januar 2007 18:31

Hallo,

ich habe eine neue Tabelle in Navision angelegt, in der wir unsere Reklamationen verwalten möchten. Somit soll über ein Lookup die Auftragsnummer des Verkaufsauftrags ausgewählt werden können.

Hier habe ich das Problem, dass die Verkaufsaufträge nach dem liefern und fakturieren (buchen) von der Tabelle Verkaufskopf in die Tabelle Archivierter Verkaufskopf verschoben werden. Somit benötige ich einen Lookup auf diese beiden Tabellen.

Hat hierzu jemand eine Lösung?

Danke für Eure Hilfe.

Gruss

Rainer
Zuletzt geändert von rgebhart am 24. Januar 2007 18:12, insgesamt 2-mal geändert.

19. Januar 2007 19:08

Guck dir doch an, wie das in Tabelle 37 im Feld "No." gelöst ist:
Abhängig vom Feld "Type" wird über die Feldeigenschaft "TableRelation" je nach Type ein anderer Lookup ausgeführt.

Damit das bei dir funktioniert, brauchst du in deiner Tabelle auf jeden Fall ein Feld, das dir sagt, wann es sich um einen Auftrag und wann um einen archivierten Auftrag handelt. Dieses Feld kannst du dann als Bedingung in die TableRelation einbauen.

19. Januar 2007 19:33

Hallo rgebhart,
warum gehst Du nicht über die Tabelle gebuchte Lieferungen, da steht in jedem Fall die Auftragsnummer drin und eine Reklamation wird wohl kaum vor der Lieferung möglich sein.

22. Januar 2007 11:08

Hallo rgebhart,

wenn ich recht Verstehe, möchtest du über Deine neue Tabelle entweder die ungebuchten Aufträge bzw. die gebuchten Aufträge einsehen können per lookup?!
Natalies Lösung funktioniert nur, solage in der entsprechenden Tabelle Daten sind. Wenn der Auftrag komplett gebucht wurde sind allerdings die Daten aus dem Verkaufskopf / Zeilen weg und in den Verkaufslieferkopf / Zeilen. (Es währe zwar denkbar, das deine neue Tabelle eine ähnliche Funktion wie die Tabelle 37 Feld No. bekommt, allerdings müsstest du das neue Feld je nach Status setzten können.)

Ich habe dieses Problem gelöst, in dem ich auf dem OnLookup Trigger "Auftragsnummer" der neuen Tabelle folgendes Programmiert habe:

Code:
IF lr_Verkaufslieferkopf.GET(Belegart,Auftrnr) THEN BEGIN
      IF FORM.RUNMODAL(50044,lr_Verkaufskopf) = ACTION::LookupOK THEN;    // Die Auftragsmaske Zeigen
    END ELSE BEGIN
      lr_Verkaufslieferkopf.SETCURRENTKEY(Auftragsnummer);
      lr_Verkaufslieferkopf.SETRANGE(lr_Verkaufslieferkopf.Auftragsnummer,AuftragsNr);
      IF lr_Verkaufslieferkopf.FIND('-') THEN BEGIN
        IF FORM.RUNMODAL(130,lr_Verkaufslieferkopf) = ACTION::LookupOK THEN;    // Falls nicht gefunden den Gebuchten Auftrag Zeigen
      END;
    END;

Auf diesen Weg, ist man unabhängig von der Standart-Lookup-Form!
Ist es das was du gesucht hast?
Gruß Mikka

22. Januar 2007 12:40

Mikka, ich denke nicht, denn wenn eine Reklamation kommt, hat er nur den Kunden und den Artikel und muss daraus dann den Auftrag auswählen
in diesem Fall würde ich in der Tablerelation des Feldes mit der Auftragsnummer folgendes eintragen:

Code:
"Sales Shipment Line"."Order No." WHERE (Sell-to Customer No.=FIELD(Kundennr),Type=CONST(Item),No.=FIELD(ArtNr.))


Dann filtert er die Lieferzeilen nach Kunde und Artikelnummer und bei OK liefert der Lookup die Auftragsnummer zurück.

22. Januar 2007 15:11

Hmm,

jetzt wo du es so "sagst".
Ich habe es mit unserem Retourenmangement verglichen. (Hier sind die Zeilen bereits gefüllt, je nachdem ob der Auftrag bereits gebucht wurde "Switcht" der Lookup zwischen den Ungebuchten und Gebuchten)

Bei den Reklamationen muss in der Tat die Zeile gefüllt werden, somit ist Deine bzw. Natalies Vorschlag der richtige.
Gruß Mikka

Problem gelöste

24. Januar 2007 17:31

Hallo,

ich danke allen für die tolle Unterstützung. Insbesondere der Tipp von Natalie hat mir sehr geholfen - ich konnte tatsächlich mit einer IF-Funktion bezogen auf ein anderes Feld in meiner Tabelle das Lookup so steuern, dass es einmal auf den Verkaufskopf und ein anderes Mal auf den Archivierten Verkaufskopf geht.

Danke und viele Grüsse

Rainer