Autor Thema: In einem Editable Field als DefaultValue ein Wert mittels @DbLookup  (Gelesen 3048 mal)

Offline dabjoern

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
Hallo Leute,

ich habe eine Dialogliste. Die holt per @DbColumn den Namen eines Unternehmens ran
Code
@DbColumn("":"NoCache";"";"($CompanyList)";1)

Anschließend habe ich ein editierbares Textfeld "pOfficeStreetAddress". Im Default Value steht:
Code
lookup_str := @Text(CompanyName_1_1);
lookup := @DbLookup( "":"NoCache" ; "" ; "($CompanyList)" ; lookup_str ; "OfficeStreetAddress");
@If(@IsError(lookup);"";lookup)

In Input Enabled steht:
Code
BranchOffice="1"

Mein Problem ist, dass kein Default Value eingetragen wird. Testweise habe ich das Default Value in Owner geändert (das ist ein Feld auf der Maske) und da wurde was eingetragen. Warum geht meine Lookup Version nicht? Liegt es am NoCache? Wie kann ich es lösen? Danke für jede Antwort.

Grüße
Björn

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Wenn Du ein neues Dokument erstellst, wird sofort das @dbLookup im Default Deines Feldes ausgeführt. Zu diesem Zeitpunkt ist aber noch gar keine Firma ausgewählt ...

Bernhard

Glombi

  • Gast
lookup_str := @Text(CompanyName_1_1);
Ist  CompanyName_1_1 (toller Feldname ;-) ) wirklich KEIN Textfeld? falls doch, ändern in
lookup_str := CompanyName_1_1;


lookup := @DbLookup( "":"NoCache" ; "" ; "($CompanyList)" ; lookup_str ; "OfficeStreetAddress");


Zur Fehlersuche
  @If(@IsError(lookup);"";lookup)
ändern in
   @If(@IsError(lookup);@text(lookup);lookup)

Andreas


Offline dabjoern

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
Hi,

ich habe mal den Code geändert in:
Code
lookup_str := CompanyName_1_1;
@If(lookup_str!="";lookup := @DbLookup( "":"NoCache" ; "" ; "($CompanyList)" ; lookup_str ; "OfficeStreetAddress");lookup:="");
lookup

Das Feld Company_Name_1_1 ist eine Dialogliste, die aber nur Text enthält. Da kann ich dann wohl auf @Text verzeichten? Also ich hab es mal rausgenommen. Der Feldname ist tatsächlich komisch, aber ich habe mehrere Felder und später läuft ein Skript drüber und da brauch ich die Zählvariable...

Dennoch geht die Sache noch nicht. Ich habe mal eben auf Computed umgestellt und da funktioniert es. Wieso nicht im Editable Modus?

Grüße
Björn
« Letzte Änderung: 10.02.06 - 10:47:05 von dabjoern »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Hast Du mein Posting nicht gelesen?

Glombi

  • Gast
Warum muss das Feld editierbar sein?

Offline dabjoern

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
@koehlerbv: Für das Feld Company_Name_1_1 habe ich "Refresh fields on keyword change" aktiviert. Da müsste doch dann der Lookup neu ausgeführt werden oder?
Grüße
Björn

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Der Lookup wird nur einmalig bei Erstellen eines neuen Dokuments ausgeführt, wenn er im Default steht. Später nie wieder.

Bernhard

Offline dabjoern

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
@Glombi: Weil ich, sobald man im Feld BranchOffice ein Häkchen setzt, die Adresse des Textfeldes pOfficeStreetAddress editieren kann. Ich denke, nur wenn pOfficeStreetAddress editierbar ist, steht mir Input Enabled zur Verfügung. Dort steht
Code
BranchOffice="1"

Idee ist diese: ich habe ein Personendokument. Über die Dialogliste (Company_Name_1_1) ordne ich der Person eine Unternehmung zu. Per Lookup werden die Adressdaten ausgefüllt. Arbeitet die Person in einer Zweigniederlassung, kann sie das Feld BranchOffice anklicken und eine abweichende Adresse angeben.

Grüße
Björn

Offline dabjoern

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
@koehlerbv: Wie könnte dann eine saubere Lösung aussehen, dass das trotzdem klappt? Ich könnte neue Felder anlegen, die erst sichtbar werden, wenn BranchOffice=1. Doch dann müsste ich weitere Felder ändern und meine Ansichten anpassen. Das wäre ein haufen Arbeit.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Hi,

Eventuell koennten die Events "Queryrecalc" oder "Postrecalc" eine Alternative sein.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
@Björn: Pack den Lookup in die Validation und prüfe vor dem Lookup, ob das Feld noch leer ist. Ein Problem bekommst Du dann natürlich, wenn später die Company-Zugehörigkeit geändert werden soll.
Ich würde allerdings die Firmenauswahl in einen Hotspot setzen und die Programmatik dorthinein verlagern. Am Editable bräuchte damit ja nichts geändert werden.

Bernhard

Glombi

  • Gast
Ich würde die Formel

@If(BranchOffice="1";@Return(FELDNAME);"");
lookup_str := CompanyName_1_1;
@If(lookup_str!="";lookup := @DbLookup( "":"NoCache" ; "" ; "($CompanyList)" ; lookup_str ; "OfficeStreetAddress");lookup:="");
lookup

in die Eingabeumsetzungformel schreiben und in dem Dialogfeld die Option "Felder bei Schlüsselwortänderung aktualisieren" aktivieren,

In @Return(FELDNAME) muss Du den richtigen Namen des Feldes schreiben.

Andreas

Offline dabjoern

  • Junior Mitglied
  • **
  • Beiträge: 95
  • Geschlecht: Männlich
Ich danke euch allen!

Ich habe es jetzt wie Andreas vorgeschlagen hat, umgesetzt (das war der geringste Aufwand). Der Code sieht jetzt bpsw. so aus:

Code
@If(BranchOffice="1"; @Return(pOfficeStreetAddress) ; "");
lookup_str := CompanyName_1_1;
@If(lookup_str!="";lookup := @DbLookup( "":"NoCache" ; "" ; "($CompanyList)" ; lookup_str ; "OfficeStreetAddress");lookup:="");
lookup

Super! Klappt wunderbar.

Grüße
Björn

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz