Autor Thema: Felder aus anderem Dokument auslesen  (Gelesen 9771 mal)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Felder aus anderem Dokument auslesen
« am: 24.01.12 - 16:19:22 »
Hallo zusammen,

ich möchte gerne eure Ratschläge berücksichtigen und kein Profildokument sondern ein normales anderes Dokument nutzen.

Die Feldinhalte im Profildokument habe ich bisher mit @GetProfileField ausgelesen.
Wie kann ich die Felder in einem "normalen" Dokument auslesen, welches mir als Konfigurationsdokument dient?

Ich habe im neuen Konfigurationsdokument bereits ein Feld "Ansicht" eingebaut, nach dem ich suchen könnte. Sofern dies der richtige Ansatz ist.

Wäre nett, wenn mir jemand auf die Sprünge hilft, nach welchem Begriff ich in der Hilfe suchen könnte bzw. wie die dieses Thema angehen könnte.

Danke für eure Hilfe.
Gruss Markus
« Letzte Änderung: 25.01.12 - 11:00:10 von MarkusL »
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Felder aus anderem Dokument auslesen
« Antwort #1 am: 24.01.12 - 16:24:30 »
Meinst du sowas wie @GetField?
Wie oder was genau willst du suchen?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #2 am: 24.01.12 - 16:28:05 »
Hallo Chris,

Ja - oder sowas meinte ich. @GetField funktioniert doch nur im gleichen Dokument, oder? Zumindest habe ich das so verstanden.
Ich möchte aber in einem neuen Dokument ein Feld automatisch mit einem Wert aus dem "Konfigurationsdokument" befüllen lassen.

Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Mitch

  • Gast
Re: Felder aus anderem Dokument auslesen
« Antwort #3 am: 24.01.12 - 16:29:00 »
@DbLookUp bzw. @DbColumn.

In dem Fall müsstest du eine Ansicht für deine Konfig-Doks haben. Über die genannten Befehle kannst du dann beliebige Items aus den Dokumenten bzw. Spalten aus der Ansicht auslesen.

Gruß,

Mitch

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #4 am: 24.01.12 - 16:29:43 »
So oder so (auch vor dem @GetDocField, was Chris sicherlich meinte) braucht es ein @dbLookup, um das Konfigurationsdokument zu holen und den Wert auszulesen (oder seine UNID aus einer entsprechenden Ansicht, um @GetDocField nutzen zu können).

Bernhard

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #5 am: 24.01.12 - 16:35:27 »
Danke für die Ansätze.
Werde ich testen und dann morgen berichten.

Schönen Feierabend.
Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #6 am: 24.01.12 - 16:45:16 »
Nicht testen, sondern machen. Das von uns beschriebene funktioniert nämlich garantiert.  ;)

Bernhard

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Felder aus anderem Dokument auslesen
« Antwort #7 am: 24.01.12 - 17:24:24 »
Man könnte die UNID des Konfigurationsdokument (welche sich nie ändern sollte, wenn es nur ein Konfiig-Dok gibt) wiederrum in einem Profildokument abspeichern (oder gar hart codieren, wenn man mutig ist  ;D ), dann spart man sich den (etwas langsameren) DBLookup/DBColumn.

Wenn man die UNID hat, dann wie bereits beschrieben mit @GetDocField darauf zugreifen

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #8 am: 24.01.12 - 17:31:34 »
Das halte ich aber für die schlechteste aller Ideen, Roland (vom hardcoden rede ich jetzt gar nicht). Es gibt soviel Gründe, warum sich die UNID ändern könnte (Datenbankreparatur, Speicher- oder Replizierkonflikt, def. Dokument etc.). Dann kommen weitere Konfigurationsdokumente hinzu und das ganze wird ein Flöhehüten ohne Ende.

Um einen hinreichend schnellen Zugriff auf das oder die Konfigurationsdokumente zu erhalten, gibt es probatere Mittel  ;)

Bernhard

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #9 am: 25.01.12 - 10:59:52 »
Tag zusammen,

habe jetzt gemacht, getestet und für meine Bedürfnisse für gut empfunden.

Hier mein Code (der bestimmt von euch verbessert werden kann und wird, aber für meine Bedürfnisse reicht es. Und man wächst mit der Zeit.):

Server            := "";
DB               := "";
Ansicht          := "Konfiguration";
Auswahl         := "Konfiguration";
Feldauswahl           := "team01_wann_1";
Feldfertig         :=@DbLookup("":"ReCache";Server:DB;Ansicht;Auswahl;Feldauswahl;[PartialMatch]);
@If(team01_wann_1="";Feldfertig;team01_wann_1:=team01_wann_1)

Die Begriffe Server, DB, Ansicht, Auswahl und Feldauswahl habe ich vorher definiert, damit es für mich erklärender wird und ich dies ggfls. auch in anderen DBs verwenden kann.
Feldfertig fragt dann halt das entsprechende Feld ab.
Und die letzte Zeile füllt das Feld in der aktuellen Maske. Es soll aber nicht neu befüllt werden, sofern es bereits gefüllt ist.

Ich finde es gut und es funktioniert.

Danke für die Hilfe.
Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Mitch

  • Gast
Re: Felder aus anderem Dokument auslesen
« Antwort #10 am: 25.01.12 - 11:05:35 »
Soweit, sogut.

Aber: Lookups sollte man immer abfangen, also den Fehler-Fall bedenken.

Das könnstest du z.B. tun, indem du die Rückgabe vor der Weiterbearbeitung mit @IsError überprüfst. Alternativ kannst - wenn unkritisch - dem DbLookUp auch ein [FailSilent] mitgeben, dann liefert er im Fehlerfall einfach nichts zurück.

Gruß,

Mitch

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #11 am: 25.01.12 - 11:16:10 »
Hallo Mitch,

danke für den Hinweis. Habe ich mit [FailSilent] umgesetzt.

Gruß
Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #12 am: 25.01.12 - 11:17:12 »
Sehe ich das richtig, dass die Formel in der Berechnungsformel des Feldes "team01_wann_01" steht? Falls ja:

Diese Zeile
@If(team01_wann_1="";Feldfertig;team01_wann_1:=team01_wann_1)

könntest Du auch so schreiben
@If(team01_wann_1="";Feldfertig;team01_wann_1)
-> wenn Feld = leer, dann neuer Wert, sonst alter Wert

Dieser Hinweis gilt generell für solche Formeln. Um die Anwendung performanter zu machen, solltest Du die Reihenfolge umstellen.

Du ermittelst im Moment den Wert mittels @DBLookup, den Du eintragen willst
Dann erst prüfst Du, ob der Wert überhaupt eingetragen werden soll

Da ein @DBLookup Zeit kostet, würde ich das umstellen

@If(team01_wann_1!="";@Return (team01_wann_1); "");
Server            := "";
DB               := "";
Ansicht          := "Konfiguration";
Auswahl         := "Konfiguration";
Feldauswahl           := "team01_wann_1";
team01_wann_1         :=@DbLookup("":"ReCache";Server:DB;Ansicht;Auswahl;Feldauswahl;[PartialMatch]);

Ist das Feld bereits gefüllt, gibst Du den Feldwert zurück und beendest die Funktion, nur wenn es leer ist, berechnest Du es. Da Dein Feld berechnet ist, wird es bei jedem F9 und jedem Speichern neu gerechnet. Da solltest Du auf unnötige Berechnungen verzichten.

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #13 am: 25.01.12 - 11:41:32 »
Hallo Peter,

danke für den Tipp.
Leider funktiniert das nicht, da das Feld aufgrund deiner Formel geleert wird. Und dann auch beim nächsten Öffnen nicht mehr gefüllt wird.
???

Gruss Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #14 am: 25.01.12 - 11:52:31 »
Wo steht die Formel?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #15 am: 25.01.12 - 11:54:07 »
Hast Du das Ausrufezeichen gesehen?

@If(team01_wann_1!="";@Return (team01_wann_1); "");

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #16 am: 25.01.12 - 12:05:11 »
Hallo Peter,

die Formel steht in einem berechnetem Feld (von denen es viele gibt). Daher ist deine Idee gut.
Das Ausrufezeichen habe ich gesehen. Ich habe deine Formel mit copy & paste eingefügt.

Meines Erachtens kommt das leere Feld nach der Berechnung durch das
@If(team01_wann_1!="";@Return (team01_wann_1); "");
in deiner Formeld.
Müsste hier nicht ebenfalls team01_wann_1 stehen?
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #17 am: 25.01.12 - 12:17:32 »
Steht die Formel in dem berechneten Feld team_01_wann_1?

@If(team01_wann_1!="";@Return (team01_wann_1); "");

Die Formel bedeutet folgendes:

Wenn team01_wann_1 nicht leer ist, gib den Inhalt von team01_wann_1 zurück und beende die Formel
sonst mache nichts

Danach wird die Formel fortgesetzt, falls nicht durch @Return abgebrochen wurde.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #18 am: 25.01.12 - 12:38:58 »
Hab den Fehler gefunden (kommt davon, wenn man das so nebenbei macht). In der letzten Zeile streiche  team01_wann_1, das ist völliger Quatsch. team01_wann_1 ist auf diese Weise eine temporäre Variable, die nur in der Formel gültig ist. In der Formel des gleichen Feldes muss es nicht expliziet zugewiesen werden, steht solch eine Formel in einem anderen Feld, müsste es heißen FIELD team01_wann_1 := ...

Sorry

@If(team01_wann_1!="";@Return (team01_wann_1); "");
Server            := "";
DB               := "";
Ansicht          := "Konfiguration";
Auswahl         := "Konfiguration";
Feldauswahl           := "team01_wann_1";
team01_wann_1         :=@DbLookup("":"ReCache";Server:DB;Ansicht;Auswahl;Feldauswahl;[PartialMatch]);


EDIT: natürlich musst Du auch noch Dein FailSilent mitnehmen (oder irgendeine andere Fehlerbehandlung)

Offline MarkusL

  • Aktives Mitglied
  • ***
  • Beiträge: 124
  • Geschlecht: Männlich
Re: Felder aus anderem Dokument auslesen
« Antwort #19 am: 25.01.12 - 12:42:05 »
Hallo Peter,

die Formel steht in dem berechneten Feld.
Ich habe das jetzt so gelöst:

Server         := "";
DB            := "";
Ansicht         := "Konfiguration";
Auswahl         := "Konfiguration";
Feldauswahl      := "team01_wann_1";
@If(team01_wann_1="";@DbLookup("":"ReCache";Server:DB;Ansicht;Auswahl;Feldauswahl;[FailSilent]);team01_wann_1)

Somit wird nach meinem Verständnis der @DBLookup nur ausgeführt, wenn das Feld team01_wann_1 leer ist.
Die Variablen der ersten Zeilen könnte ich entfernen und direkt das @DBLookup nehmen, aber ich nehme sie für die Übersichtlichkeit in Kauf.

Gruss
Markus
Version Lotus Notes / Domino: 8.5.3
Server: 1 Cluster, 1 weiterer Server
Anzahl Benutzer: ca. 230

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz