Autor Thema: Problem mit @getDocField  (Gelesen 5105 mal)

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Problem mit @getDocField
« am: 12.04.05 - 14:50:04 »
Hallo,

folgendes habe ich vor:

In einer Datenbank habe ich 3 Dokumente erstellt, die jeweils ein Feld Protokoll enthalten.
Wenn ein neues Dokument erstellt wird soll in dem neuen Dok. ein anderes Feld mit dem Inhalt aus dem Feld Protokoll des schon bestehenden Dokuments befüllt werden. Über Schlüsselwortliste kan ausgewählt werden aus welchem der 3 bestehenden Dokumente.

So, jetzt mein Versuch (Bin totaler Anfänger und beherrsche nur Formelsprache...)

Wert des Feldes in der Maske des neuen Dokumentes:

montag := @GetDocField( 9A80986359B5F6B5C1256FE100268DB8 ; "Protokoll");
diedo := @GetDocField( 9A80986351235487C1256FE100268DB8 ; "Protokoll");
freitag := @GetDocField( AD75686359B5F6B5C1256FE100268DB8 ; "Protokoll");

@if ( typ = "Montag"; Montag; typ = "Dienstag-Donnerstag"; diedo; typ = "Freitag"; Freitag; "" )

Das rote sind die UNID des entsprechenden Dokuments, die jetzt allerdings nur erfunden sind.  schon nach der ersten Zeile meldet Notes Fehler. Hab die UNID auch schon in "" gesetzt, aber trotzdem Fehlermeldungen bekommen.

Kann mir jemand helfen?

Driri

  • Gast
Re: Problem mit @getDocField
« Antwort #1 am: 12.04.05 - 15:02:53 »
Sind die drei Dokumente eine Art Profil oder Konfiguration ?

Dann würde ich das folgendermaßen aufbauen :

- eigene Maske für Konfig, eigene View für Konfigdokumente
- Konfigview sortiert nach Name des Konfigdokuments, 2. Spalte für Protokoll

- zweite Maske für die eigentlichen Dokumente
- Feld "Typ" als Dialogliste, Formel für Auswahl :

@DBColumn("":"NoCache"; Server; Datenbank; Konfigview; 1)

Das ergibt dann die Titel der Konfigdokumente zur Auswahl. Option "Felder bei Schlüsselwortänderung aktualisieren" aktivieren.

- Feld "Protokoll" berechnet, Formel :

@If(Typ=""; ""; @DBLookup("":"NoCache"; Server; Datenbank; Konfigview; Typ; 2))


Du mußt dann die Konfigdokumente einmal anlegen. Wenn nun ein neues Datendokument mit der 2. Maske erzeugt wird und der Benutzer den Typ auswählt, wird über den gewählten Typ das zugehörige Protokoll ausgelesen und in das Feld in der Maske geschrieben.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Problem mit @getDocField
« Antwort #2 am: 12.04.05 - 15:11:23 »
Natürlich, man kann mit einem anderen Ansatz dahinter, wie Ingo das vorschlägt.

Beim Formulieren von Fragen aber bitte auch darauf achten, dass auch die Wesentlichen Infos mitgegeben werden. "Es gibt nur Fehlermeldungen ...."


Welche?
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Driri

  • Gast
Re: Problem mit @getDocField
« Antwort #3 am: 12.04.05 - 15:20:08 »
Das ist keine Selection Forumla, sondern eine Formel für den Vorgabewert im Feld.

Edit : Mein Kommentar bezog sich auf Posting, was wohl mittlerweile rausgelöscht wurde.  ???
« Letzte Änderung: 12.04.05 - 15:47:18 von Driri »

Offline shiraz

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 648
  • Geschlecht: Männlich
Re: Problem mit @getDocField
« Antwort #4 am: 12.04.05 - 15:33:55 »
Hallo Kiezkicker,



Original Notes-Hilfe


Example
Given the unique ID of a document, returns the contents of a specific field on that document. The document must reside in the current database.
Syntax
@GetDocField( documentUNID ; fieldName )
Parameters
documentUNID
Text. The unique ID of a document. @DocumentUniqueID specifies the unique id of the current document.
.....
Usage
This function does not work in column or selection formulas.

versuche villeicht mit
@GetDocField( "9A80986359B5F6B5C1256FE100268DB8" ; "Protokoll");
.....
.....

Gruß
Christian
« Letzte Änderung: 12.04.05 - 15:49:16 von shiraz »
Gruß
Christian

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Problem mit @getDocField
« Antwort #5 am: 12.04.05 - 15:46:54 »
Nochmal, welche Fehlermeldung(en) bekommst Du?
« Letzte Änderung: 12.04.05 - 15:51:41 von Semeaphoros »
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: Problem mit @getDocField
« Antwort #6 am: 12.04.05 - 15:50:50 »
Sind die drei Dokumente eine Art Profil oder Konfiguration ?

Ja, sollen Konfigurationsdokumente sein

- eigene Maske für Konfig, eigene View für Konfigdokumente
- Konfigview sortiert nach Name des Konfigdokuments, 2. Spalte für Protokoll

- zweite Maske für die eigentlichen Dokumente

Maske & View für Konfig hatte ich schon eine eigene, die 2. Spalte fehlte allerdings noch


- Feld "Typ" als Dialogliste, Formel für Auswahl :

@DBColumn("":"NoCache"; Server; Datenbank; Konfigview; 1)

Das ergibt dann die Titel der Konfigdokumente zur Auswahl. Option "Felder bei Schlüsselwortänderung aktualisieren" aktivieren.

- Feld "Protokoll" berechnet, Formel :

@If(Typ=""; ""; @DBLookup("":"NoCache"; Server; Datenbank; Konfigview; Typ; 2))


Du mußt dann die Konfigdokumente einmal anlegen. Wenn nun ein neues Datendokument mit der 2. Maske erzeugt wird und der Benutzer den Typ auswählt, wird über den gewählten Typ das zugehörige Protokoll ausgelesen und in das Feld in der Maske geschrieben.

Hat leider nicht funktioniert, oder ich hab mich irgendwo vertan. Bekomme folgende Fehlermeldung beim Aufruf der Schlüsselliste: "Falscher Datentyp für Operator oder @Funktion: Zahl erwartet"


Zitat von: shiraz
@GetDocField( "9A80986359B5F6B5C1256FE100268DB8" ; "Protokoll");

Das hatte ich auch schon probiert, hat aber nich geklappt. Wurde im Formelfenster abgewiesen (Kein Haupt- oder Auswahlausdruck in Formel:").

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Problem mit @getDocField
« Antwort #7 am: 12.04.05 - 15:57:51 »
Beim DBLookup muss zwischen Server und Datenbank ein Doppelpunkt stehen und nicht ein Semikolon.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Driri

  • Gast
Re: Problem mit @getDocField
« Antwort #8 am: 12.04.05 - 15:59:50 »
Stimmt, Tippfehler. Beim DBColumn übrigens genauso.

Driri

  • Gast
Re: Problem mit @getDocField
« Antwort #9 am: 12.04.05 - 16:01:13 »
Noch ne Anmerkung zu dem Spiel mit der DocumentUniqueID.

Ich halte das eh für riskant. Was ist denn, wenn ein Konfigdokument mal gelöscht wurde (aus Versehen, kennt man ja  ;)) und dann neu angelegt werden muß ?
Dann hat man plötzlich eine neue ID und die Formel läuft ins Leere.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Problem mit @getDocField
« Antwort #10 am: 12.04.05 - 16:03:17 »
Reicht schon nur ein Replikationskonflikt und man behält das Konfliktdocument und nicht das Original..... und da denkt in so einem Moment niemand dran, dass es Nebenwirkungen hat
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Problem mit @getDocField
« Antwort #11 am: 12.04.05 - 16:04:35 »
Bei der Meldung "Kein Haupt- oder Auswahlausdruck in Formel" reicht es, wenn du ein ;"" hinten anhängst.

Wegen deinem Falschen Datentyp.... Wie rufst du denn die Schlüsselliste auf?

-daniel

PS:
Christian.... Es ist hier nicht üblich ein Posting, auf das bereits geantwortet ist, zu löschen. Die Antworten hängen dann einfach in der Luft.
Wenn dir ein Fehler unterlaufen ist, kannst du dein Posting ja editieren und den Fehler durchstreichen.
†090620141300

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: Problem mit @getDocField
« Antwort #12 am: 12.04.05 - 16:05:23 »
Das mit der UNID stimmt wohl, aber diese Methode kannte ich ja nicht (Bin nicht der große Programmierer.

Aer irgendwie klappts noch nicht, trotz Doppelpunkt. Hier die Formel für die Schlüsselliste:

@DbColumn("":"NoCache"; Server01/Domäne/DE:test.nsf; Konfiguration; 1)

In der Ansicht Konfiguration wird alles richtig angezeit, in der ersten Spalte: Montag, Dienstag-Donerstag und Freitag


Was heißt, wie ruf ich die Schlüsselliste auf?  ??? Über ein Schlüssellistenfeld, wenn du das meinst.
« Letzte Änderung: 12.04.05 - 16:07:30 von Kiezkicker »

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Problem mit @getDocField
« Antwort #13 am: 12.04.05 - 16:08:06 »
Server, DB, Ansicht sind Strings und müssen deshalb unter Hochkomma.

@DbColumn("":"NoCache"; "Server01/Domäne/DE":"test.nsf"; "Konfiguration"; 1)

†090620141300

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Problem mit @getDocField
« Antwort #14 am: 12.04.05 - 16:12:02 »
Du hast oben geschrieben
Zitat
Bekomme folgende Fehlermeldung beim Aufruf der Schlüsselliste: "Falscher Datentyp für Operator oder @Funktion: Zahl erwartet"
Da muss doch irgend eine Formel dahinterliegen. Oder?
†090620141300

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: Problem mit @getDocField
« Antwort #15 am: 12.04.05 - 16:27:52 »
Danke, das war ja schon einmal ein Teilerfolg. Die Formel, die dahinter steckt war die aus meinem Beitrag von 16:05.

Die Schlüsselliste ist jetzt mit den richtigen Werten gefüllt, aber in dem berechneten Feld erscheint nur "FEHLER: Nicht genügend Argumente für Datenbankfunktion". Die Formel von Diri kann ich aber auch nicht ganz nachvollziehen, deswegen weiß ich nicht, wo ich suchen soll. Folgende Formel hab ich verwendet:

@If(typ=""; ""; @DbLookup("":"NoCache"; "Server01/Domäne/DE":"test.nsf"; "Konfiguration"; 2))

Edit in der Ansicht wird in der 2. Spalte der richtige Text angezeigt (Test Montag, Test Dienstag,...)

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Problem mit @getDocField
« Antwort #16 am: 12.04.05 - 16:32:47 »
Bei deinem DBLookup fehlt der Typ den du suchst.

@DbLookup("":"NoCache"; "Server01/Domäne/DE":"test.nsf"; "Konfiguration"; typ; 2)
das müsste klappen.
In der ersten Spalte muss aber auch der Typ stehen und sie muss sortiert sein.
†090620141300

Offline Kiezkicker

  • Junior Mitglied
  • **
  • Beiträge: 60
Re: Problem mit @getDocField
« Antwort #17 am: 12.04.05 - 16:38:56 »
Die Sortierung fehlte. Jetzt klappt alles  :D

Aller besten Dank an euch alle für die superschnelle und ausführliche Hilfe. eins ist aber noch offen, allerdings nicht lebenswichtig, wäre einer so nett, mir die DbLookup-Formel zu erläutern?

Schau morgen nochmal rein, jetzt mache ich Feierabend.

Offline rar

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 856
  • Geschlecht: Männlich
  • Des passt scho
    • click
Re: Problem mit @getDocField
« Antwort #18 am: 12.04.05 - 16:45:24 »
Da lohnt sich ein Blick in die Designerhilfe.......
Zitat
Wenn ein Schlüsselwert gegeben ist, werden alle Dokumente in der angegebenen Ansicht (oder Ordner) gesucht, die diesen Wert in der ersten sortierten Spalte innerhalb der Ansicht enthalten. @DbLookup gibt für jedes passende Dokument entweder den Inhalt einer angegebenen Spalte einer Ansicht oder eines angegebenen Feldes zurück.
Syntax
@DbLookup( Klasse : "NoCache" ; Server  : Datenbank  ; Ansicht  ; Schlüssel  ; Feldname ) oder
@DbLookup( Klasse : "NoCache" ; Server  : Datenbank  ; Ansicht  ; Schlüssel  ; SpaltenNr )
†090620141300

Driri

  • Gast
Re: Problem mit @getDocField
« Antwort #19 am: 12.04.05 - 16:48:11 »
DBLookup durchsucht die angegebene Ansicht nach dem Suchwort und wenn das gesuchte Wort gefunden wurde, wird entweder der Wert aus Spalte x oder ein Feld des zugrundeliegenden Dokuments ausgelesen.

Wobei das Auslesen aus der Ansicht ein wenig schneller sein soll, als das Auslesen aus dem Feld.


Noch ein Tipp : Wir helfen gerne, aber es ist sicherlich für dich von Vorteil, wenn Du

a) dir gute Literatur zum Thema suchst und dich einliest

und

b) bei Problemen mit Formeln etc. die Designer-Hilfe studierst. Die Erklärungen dort sind in den meisten Fällen gut und mit Beispielen versehen.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz