Seite 1 von 1

Probleme mit Lookup?

Verfasst: 28. April 2006 08:43
von Roland
Hallo zusammen,

ich habe folgende Konstellation:

ich lese in eine Tabelle Informationen von CAD Zeichnungen ein.
Zu jedem Datensatz habe ich eine Projektnummer. Um der Zeichnung den Debitor zuzuordnen habe ich ein FlowFild mit einem Lookup erstellt, das in die Auftragstabelle(36) schaut und die Debitor Nr holt. Jetzt steht diese Info aber nicht immer in (36) sonder kann auch schon archiviert (5107) sein oder in der Projekttabelle (167) stehen. Soweit ist das auch kein Problem - habe für jede Tabelle ein Feld, also 3 Lookupfelder angelegt.

Jetzt möchte ich in der Debitorenkarte Anzeigen, welche Zeichnungen es für diesen Debitor gibt. Für alle drei Sparten ist das kein Problem das funktioniert auch. Wie kann ich diese 3 Sparten zusammen fassen?

Ich habe mir folgendes überlegt, ich habe ein neues Feld angelegt in das ich die DebiNr aus einem der 3 Lookupfelder kopieren will.

Das ist für einen Crack sicherlich nicht ganz so elegant gelöst, für mich als Rookie erstmal ausreichen.

folgenden Code (verschiedene Versionen) habe ich im OnInsert Trigger der Tabelle erstellt - der leider nicht funktioniert:

Code:

IF "Debitor Verkauf"='+' THEN
 Debitor:="Debitor Verkauf";

IF "Debitor Verkauf"<>'' THEN
 Debitor:="Debitor Verkauf";

IF "Debitor Verkauf"<>'-' THEN;
 Debitor:="Debitor Verkauf";



Kann es daran liegen, dass das Quellfeld ein Lookup ist??

Vielleicht bin ich ja ein Teil des Problems :-D

Besten Dank schon mal

Gruss Roland

Verfasst: 28. April 2006 09:39
von mespelage
wäre es nicht einfacher in der Tabelle (CAD Zeichnungen) ein Feld "Debitor" einzufügen, und dieses Feld schon bei der Einlesung entsprechend zu füllen? Dann sollte eine Verlinkung problemlos möglich sein.

Bei deiner Version müsste vorher auf jeden Falle ein CALCFIELDS(FlowField_1,FlowField_2,FlowField_3) erfolgen

Verfasst: 28. April 2006 11:37
von Roland
Hallo mespelage,


zur Info: ich lese die CAD Daten über Excel in die CAD tabelle ein. Dort kenn ich den Debitor noch nicht das will ich über die Lookups herhausfinden. Diese Infos können aber in den drei unterschiedlichen Tabellen stehen, weil dem CAD egal ist ob das eine Verkaufsauftragsnummer oder Projektauftragsnummer ist.


wäre es nicht einfacher in der Tabelle (CAD Zeichnungen) ein Feld "Debitor" einzufügen, und dieses Feld schon bei der Einlesung entsprechend zu füllen? Dann sollte eine Verlinkung problemlos möglich sein.

Die 3 Lookup Felder und das 4.te Debitor stehen in der CAD Tabelle .

Das ganze sieht so aus:

ZNGNR | PROJEKTNR | DebVK | DebVKarch | DebProj | DEBITOR
xabcx | 12345 | leer | leer | deb123 | deb123
yefgy | 67890 | leer | deb456 leer | deb456
zhijz | 4567 | deb876 | leer | leer | deb876


die 3 Lookups (DebVK|DebVKarch|DebProj) bringen mir die DebitorNr. Ich möchte jetzt, dass das Feld DEBITOR automatisch mit der jeweiligen DebNr vom Lookupfeld gefüllt wird, wenn der Datensatz in die CAD Tabelle geschrieben wird.
Dann habe ich die DebitorNr nur ein einem Feld stehen egal aus welcher Tabelle sie stammt.

Bei deiner Version müsste vorher auf jeden Falle ein CALCFIELDS(FlowField_1,FlowField_2,FlowField_3) erfolgen


Wo müsste das dann stehen? Die Felder sind doch schon kalkuliert, die DebNr steht ja drin.

Verfasst: 28. April 2006 12:11
von mespelage
Versteh ich das richtig:
beim Einlesen aus EXCEL erhälts du unter anderm die PROJEKTNR die entweder eine Auftragsnummer eine Auftragsarchivnummer oder eine Projektnummer im Attain ist.

Wenn dem so ist, dann folgendes:

Code:
If SalesHeader.GET(1,PROJEKTNR ) Then
   DEBITOR := SalesHeader."Sell-to Customer No.";

"Sales Header Archive".SETRANGE("No.",PROJEKTNR);
"Sales Header Archive".SETRANGE("Document Type",1);
If "Sales Header Archive".FIND('-' ) Then
   DEBITOR := "Sales Header Archive"."Sell-to Customer No.";

If Job.GET(PROJEKTNR ) Then
   DEBITOR := Job."Bill-to Customer No.";


[Editiert von Marc Teuber: Code-Tag hinzugefügt.]

Verfasst: 28. April 2006 12:52
von Roland
Hallo mespelage,

Versteh ich das richtig:
beim Einlesen aus EXCEL erhälts du unter anderm die PROJEKTNR die entweder eine Auftragsnummer eine Auftragsarchivnummer oder eine Projektnummer im Attain ist.


korrekt bis auf Attain :wink: -> 4.00 ohne SP1


ich habe den Code im OnInsert() Trigger eingefügt. Die Variablen SalesHeader, "Sales Header Archive" und Job als Rec eingetragen, die Tabelle gelöscht und die Daten neu eingelesen. - Leider ohne Erfolg. :-(

Hab ich was vergessen??

Dann habe ich noch eine Frage zum Verständnis:

Code:
IF job.GET("PROJEKT NR" ) THEN
Debitor := job."Sell-to Customer No.";


Hier wird doch nachgeschaut, ob es in der Job Tabelle einen Satz gibt mit der "PROJEKT NR" aus der CAD Tabelle, mit welchem Feld in der Job wird dann verglichen? Geht das dann nach dem Key in der Job tabelle?

Verfasst: 28. April 2006 13:30
von mespelage
Die Tabelle JOB hat doch den Primärkey "No." oder?
Also sucht er einen Job mit der entsprechenden Nummer.

Verfasst: 28. April 2006 13:53
von Roland
Ja hat sie, hab ich mir ja fast gedacht,
aber wie bereits oben beschrieben funktioniert es leider nicht.
zum Test habe ich den Code in einen Report eingefügt im OnAfterGetRec dort funktioniert's
komisch

und warum in der Tabelle nicht?

Verfasst: 28. April 2006 14:01
von mespelage
wie liest du denn die Daten ein?
mit einem Dataport ?

Verfasst: 28. April 2006 14:24
von Roland
nein, mit einem Report
in diesen habe ich gerade den Code eingefügt und funktioniert auch so.
Zuerst einlesen, dann die DebiNr eintragen.
Geht auch so!! Kann ich mit leben.

Vielen vielen DANK auch mal für Deine Hilfe!!

Gruss Roland

Verfasst: 29. April 2006 01:12
von Michael Schumacher
wenn Du die Daten mit einem Report einliest, und dort CAD.insert ausführst, musst du als parameter auch TRUE angeben, da der onInsert-Trigger sonst nicht ausgeführt wird.
könnte das evtl die Ursache bei Dir gewesen sein?