Lookup tabelle object (cc)

17. Februar 2011 11:31

Hallo,
ich versuche gerade einen Lookup für die TabellenID zu erstellen.
Als Grundlage hab ich mir den OnLookup Trigger vom Feld TableID der Tabelle 352, Default Dimension genommen und entsprechend angepasst:

Code:
ObjectLoc.SETRANGE(Type, ObjectLoc.Type::Table);
IF FORM.RUNMODAL(358,ObjectLoc) = ACTION::LookupOK THEN BEGIN
  "Table ID" := ObjectL.ID;
  VALIDATE("Table ID");
END;


Wenn ich dies aufrufe, macht er auch die Form auf und ich kann was auswählen. Wenn ich aber Enter/Ok drücke wird der Wert trotzdem nicht eingetragen?! Der OnValidate-Trigger des Feldes "Table ID" ist leer.

Hat wer schonmal diesen Effekt gehabt und kennt dazu eine Lösung?

Danke
Gruß
Jan

Re: Lookup tabelle object (cc)

17. Februar 2011 11:41

Hallo Jan,

wenn dein hier geposteter Programmcode per Copy&Paste aus deiner Anpassung entnommen wurde, dann ist die Lösung ganz einfach:
Du verwendest eine andere Object-Variable ;-)
Übergeben wird "ObjectLoc", abgefragt wird jedoch "ObjectL".ID

Re: Lookup tabelle object (cc)

17. Februar 2011 12:24

Ich korrigier das nochmal:

Code:
ObjectLoc.SETRANGE(Type, ObjectLoc.Type::Table);
IF FORM.RUNMODAL(358,ObjectLoc) = ACTION::LookupOK THEN BEGIN
  "Table ID" := ObjectLoc.ID;
  VALIDATE("Table ID");
END;


So ist der Code richtig, wie er nicht funktioniert. Wäre zu einfach, wenn das der Fehler gewesen wäre ,-)

Im entsprechendem Feld ist die TableRelation gesetzt auf Object.ID WHERE (Type=CONST(Table))

Re: Lookup tabelle object (cc)

17. Februar 2011 12:44

Versuch doch mal den Validate rauszunehmen und stattdessen einen Modify zu verwenden.

Re: Lookup tabelle object (cc)

17. Februar 2011 12:48

Von vorne:
Im Idealfall sähe es so aus:
  • Tabellenfeld mit TableRelation (wie von dir beschrieben).
  • Auf dem Formfeld noch die LookupFormID = 358 setzen.
  • Keine weitere Programmierung im OnLookup-Trigger, weder auf der Tabelle noch auf der Form.

Re: Lookup tabelle object (cc)

17. Februar 2011 14:00

Wo trägst Du auf der Tabelle Object das Property LookupFromID ein?

Den normalen Weg kenn ich.

Re: Lookup tabelle object (cc)

17. Februar 2011 14:17

JanGD hat geschrieben:Wo trägst Du auf der Tabelle Object das Property LookupFromID ein?.


Natalie hat geschrieben:Auf dem Formfeld noch die LookupFormID = 358 setzen.

Ich hatte das schon extra dick geschrieben :roll:
Im Übrigen meine ich nicht die Object-Form selbst sondern die Form, auf der du den Lookup ausführen möchtest.

Re: Lookup tabelle object (cc)

17. Februar 2011 16:59

Auf Forms bin ich gar nicht gegangen. Einfach Table -> Run. Wenn der Lookup im Standard funktioniert, sollte das gleiche auch bei mir funktionieren.
Ich habe dann die Tabelle "Change Log (Table)" genommen und das Feld dort nachgebaut bei mir. Funktionierte nicht. Mit C/P von der Tabelle in meine und es funktionierte o.O
Leider klappt das ganze nun für Field No. nicht. Da hilft mir das Field C/P auch irgendwie nicht.

Re: Lookup tabelle object (cc)

17. Februar 2011 18:41

JanGD hat geschrieben:Auf Forms bin ich gar nicht gegangen. Einfach Table -> Run. .

Das Wichtigste also zum Schluss ;-)

Wenn der Lookup im Standard funktioniert, sollte das gleiche auch bei mir funktionieren

Der Lookup funktioniert im Standard, weil es eine Form und eine gefüllte LookupFormID gibt ;-)