Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: chakoe am 18.11.04 - 22:33:55
-
Hallo zusammen,
ich habe mal wieder Fragen:
Ich habe eine Datenbank, in welcher eine HardwareDokumentation liegt, eine zweite
in der Aufträge erstellt/bearbeitet/verwaltet werden.
Ich möchte nun einen neuen Auftrag erstellen. Dazu wähle ich z.b. den Hostnamen eines Systems aus ( die betreffenden Felder habe ich in beiden DB´s gleich benannt ( t_Seriennummer, t_Hostname).
Ich möchte gerne eine Dialogliste, welche mir als Inhalt sämtliche Hostnamen aus der DB der Hardwaredoku auflistet. Wählt man dann aus dieser Dialogliste einen Hostnamen aus, so füllt eine Funktion dann entsprechend einige andere Felder ( Seriennummer, Standortdaten)
Wie kann ich das realisieren? Welche Infos muß ich sonst noch liefern, damit mir jemand helfen kann?
-
Ich möchte gerne eine Dialogliste, welche mir als Inhalt sämtliche Hostnamen aus der DB der Hardwaredoku auflistet.
Geht über @DBColumn, siehe Designerhilfe.
Wählt man dann aus dieser Dialogliste einen Hostnamen aus, so füllt eine Funktion dann entsprechend einige andere Felder ( Seriennummer, Standortdaten)
Das kannst Du dann z.B. über @DBLookup bewerkstelligen, siehe auch Designerhilfe.
Schau Dir mal die beiden @Functions genau an, wenn Du dann nicht weiter kommst: poste Deine bisherige Umsetzung mit detaillierter Problembeschreibung, dann kann man sich das ansehen und entsprechend helfen.
Michael
-
Hi @ll,
ich habe das Feld, in dem die Auswahl erscheinen soll, als Dialogliste definiert.
Dann habe ich dort unter Vorgabewert die Formel eingetragen
@DbColumn("notes";"NoCache";"SERVERNAME";"ORDNER\UNTERORDNER\Datenbank.nsf";"Ansicht";Spalte")
Beim Testen in Notes bekomme ich immer den Fehler, daß die Datei nicht vorhanden ist.
Feld:'t_Bezeichnung':Datei nicht vorhanden
-
Hi,
die Formel hat im Vorgabewert erstmal nichts zu suchen. Die gehört in die Auswahlformel. Die findest du im Eigenschafts-Dialog auf dem zweiten Reiter.
Zum zweiten glaube ich, dass einige deiner Parameter nicht stimmen. Z.B., dein Server heisst bestimmt nicht "Servername". Da musst du den Namen deines Servers eintragen.
Schau mal in die Designer-Hilfe, da wird alles gut beschrieben. Außerdem gibt es Beispiele.
Axel
-
Ausserdem würde ich mal die Syntax von @dbColumn checken - SO werden Server und Dateiname nicht angegeben.
Bernhard
-
Hi,
das der Servername nicht " Servername" lautet, ist klar, wollte nur meine schreibweise bzw. interpretation des befehls erläutern...
Ich habe mal ein bischen herumprobiert und in der Designerhilfe geblättert, und habe die Formel nun wie folgt zurechtgelegt:
@DbColumn("";"";"serverdoku.nsf";AlignSheet";2).
Die Datenbank ist definitiv vorhanden, die Ansicht auch. nun bekomme ich immer die Fehlermeldung: Feld:'t_Bezeichnung':Eine Ansicht mit diesem Namen wurde in der angegebenen Datenbank nicht gefunden.
Wird auf Groß/kleinschreibung geachtet?
Wie werden denn ggfs. der Server und die Dateinamen und Ordner angegeben.
Möglicherweise stehe ich auf meinen Augen.....
Das das Feld, in dem die Serverbezeichnungen stehen sollen (ausgelesen aus der Spalte2 einer Ansicht in einer anderen DB) als Typ eine Dialogliste ist, ist doch korrekt, oder?
bin, wie man sicherlich merkt, ein ziemlicher rookie in sachen designing, sorry
-
Hi,
auf den ersten Blick würde ich sagen, dass liegt an einem fehlenden Anführungszeichen vor dem Ansichtenname.
Axel
-
Ich hatte ja schon einmal auf die Syntax hingewiesen: Zwischen Servernamen und Dateinamen gehört kein Semikolon hin, sondern ein Doppelpunkt.
@Axel: Mit dem fehlenden Anführungszeichen hätte das der Designer gar nicht zur Speicherung zugelassen.
Bernhard
-
Bernhard,
stimmt. Dass mit dem Doppelpunkt hab ich dabei übersehen. Aber wie konnte er dann trotzdem speichern?
Axel
-
Hallo,
ich habe grade mal zeit, wieder an dem Punkt anzufangen, und ich hoffe, ich stoße noch auf ein paar offene Ohren:
Ich habe nun folgendes gemacht:
""die Formel hat im Vorgabewert erstmal nichts zu suchen. Die gehört in die Auswahlformel. Die findest du im Eigenschafts-Dialog auf dem zweiten Reiter.""
Also handelt es sich nun um Feld vom Typ Dialogliste, Bearbeitbar.
Dann habe ich folgende formel genommen:
@DBColumn("";"":si-server.nsf";"AlignSheet";2)
Beim Testen erscheint dann aber im Popup der Dialogloiste noch immer der Fehler
Eine Ansicht mit diesem Namen wurde in der angegebenen Datenbank nicht gefunden
WAs ist nun zu tun.
Beide DB´s liegen auf demselben Server, im selben Unterverzeichnis, und die Ansicht gibt es auch. Sucht er da nach einem Alias für die Ansicht, oder nach dem Namen.
Dürfen evtl. Name und Alias nicht identisch sein?
Muß ich evtl. den kompletten Pfad zur DB angeben?
-
Hi,
in deiner Formel fehlt zwischen dem Doppelpunkt und dem Datenbanknamen ein Anführungszeichen.
Die Formel muss so aussehen:
@DBColumn("";"":"si-server.nsf";"AlignSheet";2)
Sucht er da nach einem Alias für die Ansicht, oder nach dem Namen.
Dürfen evtl. Name und Alias nicht identisch sein?
Muß ich evtl. den kompletten Pfad zur DB angeben?
Es wird sowohl nach dem Namen alsauch nach dem Alias-Namen gesucht.
Name und Alias darf identisch sein.
Wenn die Datenbank in einem Unterverzeichnis zu Data liegt, dann musst du das Verzeichnis auch angeben.
Axel
-
die Anführungszeichen hatte ich drin, leider
nimmt mir der Disgner immer wieder den Backslash
etc. aus der Formel.....
habe das so angegeben:
\Verzeichnis\unterverzeichnis\unterverzeichnis\si-server.nsf
sobald ich die formel mit dem haken bestätige, nimmt er die \ wieder raus.....
-
Ersetzte die Backslash (\) durch Doppelbackslash, also
\\Verzeichnis\\unterverzeichnis\\unterverzeichnis\\si-server.nsf
Gruss - Ray
-
@DbColumn("";"":"\\BEMS\\KUNDEN\\BWS\\si-server.nsf";"AlignSheet";2)
so sieht die formel jetzt aus, der pfad passt, die Ansicht AlignSheet gibts, und in
Spalte 2 steht das was ich will.
Was mach ich denn nun falsch, das er jetzt " Datei nich vorhanden" meldet?
-
Die DB ist sicher auf dem lokalen Rechner und nicht auf einem Domino Server?
Falls lokal, versuch es mal so:
@DbColumn( "" : "NoCache" ; "" : "\\BEMS\\KUNDEN\\BWS\\si-server.nsf" ; "AlignSheet" ; 2 )
Gruss - Ray
-
Hi,
wie es aussieht, sucht er die DB lokal. Du musst den Server eintragen.
@DbColumn("";"Name deines Servers":"\\BEMS\\KUNDEN\\BWS\\si-server.nsf";"AlignSheet";2)
Axel
-
So sieht das Beispiel in der Hilfe aus:
@DbColumn( Klasse : Cache ; Server : Datenbank ; Ansicht ; Spaltennummer )
Lösung:
@DbColumn( "" : "NoCache" ; "Servername" : "\\BEMS.....nsf" ; "AlignSheet" ; 2 )
-
@DbColumn("";"Name deines Servers":"\\BEMS\\KUNDEN\\BWS\\si-server.nsf";"AlignSheet";2)
diese Formel hat funktioniert! danke!
nun muß ich nurnoch zusehen, daß ich, sobald in dem untenstehenden Feld ein Wert ausgewählt wurde, ein paar andere Felder, Quelle ist sie selbe DB/Ansicht, gefüllt werden.
Dieses geht mit DBLookup, richtig? jetzt lese ich schonmal in der Designerhilfe, aber vielleicht kann mir schon jemand zuvorkommen
-
jetzt lese ich schonmal in der Designerhilfe, aber vielleicht kann mir schon jemand zuvorkommen
Du solltest dringend die Designer-Hilfe lesen. Das ganze Gedöns mit @dbColumn ist dort bestens beschrieben und mit etlichen Beispielen versehen. Gleiches gilt natürlich auch für @dbLookup.
Bernhard
-
Hi,
richtig, das geht mit @DbLookup. Allerdings ganz so problemlos wird das nicht gehen. Denn um das Dokument eindeutig zu identifizieren braucht du die ID des Dokumentes.
Folgender Ansatz hat sich bewährt:
Du baust dir eine Ansicht die als Auswahlansicht fungiert und in einer versteckten Spalte die benötigten Feldinhalte zusammengesetzt enthält (Spaltenformel FeldA + "~" + FeldB usw.)
In deiner Maske fügst du einen Hotspot ein. Dort ziegst du die Ansicht an und als Spalte gibst du die versteckte Spalte mit den zusammengebauten Feldinhalten an.
Beispielhafter Code:
FIELD Feld1 := Feld1;
FIELD Feld2 := Feld2;
value := @Picklist([Custom] : [Single] ; Server : Datei ; Ansicht ; Titel ; Eingabeaufforderung ; Spalte)
@SetField("Feld1"; @Word(value; "~"; 1));
@SetField("Feld2"; @Word(value; "~"; 2));
Ich hoffe du kommt mit der Kurzerklärung klar.
Axel
-
Wenn der Schlüssel eindeutig ist - bei einem "Horst" sollte das eigentlich der Fall sein - kann der aber auch als Schlüssel für das @dbLookup verwendet werden. Das Verfahren wäre dann simpler.
Bernhard
-
Ein bischen Hilfe brauche ich noch:
In welcher Datenbank wird diese Ansicht benötigt?
In der Quelle ( Server Dokumentation) oder Ziel
(Auftragsdatenbank)?
Welcher Schlüssel? Die Dokumente-ID?
-
Du brauchst die Ansicht in der Quell-Datenbank.
Axel
-
das hilft mir alles noch nicht so sehr viel weiter, da das alles
relativ bömische Dörfer für mich sind, und ich zu wenig damit zu tun
habe.... ich weiß, daß nervt ein bischen..
Zwischenfrage:
Gibts denn irgendwas für Dummies zum lernen und nachschlagen, was auch ziemlich
einfach und anschaulich erklärt ist.
Ich habe den Herdt Datenbankentwicklung 1 durchgearbeitet, daß war okay (Wenn ich mehr damit machen würde/müsste)
Dann habe ich noch ein Buch zum nachschlagen, " Lotus Notes & Domino R5 Leitfaden für den Einstieg von "Computer & Literatur"
Was genau ist eine Auswahlansicht?
Versteckte Spalte?
Was hat es mit der Formel auf sich?
-
Hi,
eine Auswahlansicht ist eine ganz normale Ansicht, wie jede andere auch.
In den Spalteneigenschaften kannst du einstellen, ob eine Spalte für den Anwender sichtbar sein soll oder nicht. Programmtechnisch kannst du auf jeden Fall auf diese Spalte zugreifen, wie auf jede andere Spalte auch.
Welche Formel meinst du denn?
Axel
-
Ich meine die Formel
Du baust dir eine Ansicht die als Auswahlansicht fungiert und in einer versteckten Spalte die benötigten Feldinhalte zusammengesetzt enthält (Spaltenformel FeldA + "~" + FeldB usw.)
Wie soll ich denn die Felder in eine Spalte packen?
-
Du hast deine Frage doch quasi selber beantwortet ;D
Mit FeldA + "~" + FeldB packst Du doch die Feldinhalte mehrere Felder in eine Spalte.
-
Hi,
Driri hat es ja bereits schon gesagt: du hast die Frage dir selbst beantwortet. Wobei die Feldnamen FeldA und FeldB nur Beispiele sind.
Der Sinn der dahinter steckt ist folgender. Mit der Funktion @Picklist bekommst du den Inhalt einer Spalte (welche, das gibst du als Parameter an) geliefert.
Wenn du nun mehrere Felder brauchst, müsstest du normalerweise die ID des Dokumentes haben und dann x-mal einen @DbLookup machen. Ausserdem bräuchtest du noch eine Ansicht, die nach der ID sortiert ist.
In dem jetzt beschriebenen Fall, dass du die Feldinhalt zusammensetzt, bekommst du mit einem Schlag alle Feldinhalte auf einmal geliefert, getrennt durch ~. Mit der Funktion @Word wird der Rückgabewert dann in die einzelnen Elemente zerlegt.
Ich hoffe es ist nun klarer geworden.
Axel
-
Moment, moment - macht es nicht komplizierter, als es ist: "chakoe" liest mit @dbColumn doch schon erstmal einen Host aus. Der sollte ja einen eindeutigen Schlüssel haben. Er hat damit auch schon eine Ansicht seine "Horsts". Dann soll er erstmal - da ihm ja jegliche Basics noch fehlen - für die weiteren Felder mit @dbLookup und diesem eindeutigen Schlüssel die benötigten Werte auslesen.
Mit PickList in einer entsprechenden Schaltfläche kann man das Ganze dann später immer noch verfeinern.
@chakoe: In dem Dialoglisten-Feld für den "Horst" musst Du als Feldeigenschaft einstellen: Felder bei Schlüsselwortänderung aktualisieren. Die berechneten Felder, die sich per @dbLookup die anderen Werte zum Host ziehen, werden so bei jeder Änderung neu berechnet.
Bernhard
-
@Bernhard
wenn "Horst" eindeutig ist und man die Dokumente mit dem Wert, der in der Dialogliste vorhanden ist eindeutig identifizieren kann, stimme ich mit dir überein. Dann die deine vorgeschlagene Lösung sicherlich die einfachste.
@chakoe
Ich hab' mal auf die Schnelle eine Demo zusammengestrickt. Die LookupDB.nsf enthält die Dokumente zum Nachschlagen. Das wäre in deinem Fall die DB mit den Hostnamen.
Die TestDB enthält eine Maske mit einem Button neben dem Feld NachName. Hier wird dir eine Picklist angezeigt in der du, aus der LookupDB, einen Eintrag wählen kannst. Es werden dann die dazugehörigen Werte in die anderen Felder übernommen.
Du musst beide DBs in lokale Data-Verzeichnis kopieren. Dann sollte das funktionieren.
Axel
-
Axel, meine "Versimpelung" funktioniert natürlich wirklich nur, wenn der via @dbColumn ausgewählte Schlüssel eindeutig ist. Ansonsten gelten andere Verfahren, die ja teilweise schon hier genannt wurden.
Bernhard
-
@"chakoe"
Bitte besuche einen Entwickler-Kurs, hol' Dir jemanden für ein "training on the job, lies zumindest ein paar gute Bücher (schwieirg in dem Umfeld, zugegebenermassen).
Aber so wird das nix. Zur Zeit hast Du ja offensichtlich selbst noch Schwierigkeiten, die Designer-Hilfe zu lesen. Wir können (und wollen) hier keine kostenlose "Kurse für Entwickler" anbieten - das würde auch sowieso niemals funktionieren. Axel hat sich hier schon ganz, ganz weit mit einer Beispiel-DB aus dem Fenster gelehnt. Aber genauso gut könntest Du die mitgelieferten DBs / Templates studieren - best practices findest Du dort zuhauf.
Bevor ich mich jetzt hier weiter engagiere, würde ich von Dir gerne wissen: Wie willst Du Deine Weiterbildung zukünftig betreiben ?
Das Forum kann Dir dabei hervorragend helfen, aber nur, wenn Du auf konkrete Probleme stösst. In diesem Thread haben wir Dir alle nur aus der DesignerHelp "vorgelesen", und das kann es wirklich nicht sein.
Du bist hier (selbstverständlich) herzlich willkommen - aber tu' was !
Bernhard
-
... Axel hat sich hier schon ganz, ganz weit mit einer Beispiel-DB aus dem Fenster gelehnt.
Wer fängt mich auf wenn ich rausfalle ??? ??? ;)
Axel
-
ALLE !!
-
Danke. ;D
Axel
-
Hallo zusammen,
erstmal vorweg: Danke, daß ihr überhaupt bis hierhin " drangeblieben"
seit.
Mein Problem ist, daß ich eigentlich beim Kunden das RZ betreue, und
" nebenbei " mal eben bei uns in der Firma " diese und jene Kleinigkeit"
realisieren soll. Leider hab ich nun mal nicht jeden Tag mit der Materie zu tun,
sodaß sich auch eine gewisse " Routine " nicht so leicht einstellen lässt.
Ich habe mir mal von einem Bekannten die Bücher
Notes/Domino 5: Einführung in die LotusScript-Programmierung
Anwendungsentwicklung unter Lotus Notes/Domino 5
von Addison-Wesely besorgt, vielleicht bringt mich das ein bischen weiter,
wenn zeitlich hinhaut....
-
@chackoe
Hat dich die Demo-Datenbank irgendwie weiter gebracht?
Axel
-
Hi,
ja, die DB hat mich weitergebracht, vielen dank dafuer!
ich werde dann mal zusehen, dass ich mich, soweit moeglich,
in dieser Richtung weiterbilde!
Schoenes Wochende
-
erstmal vorweg: Danke, daß ihr überhaupt bis hierhin " drangeblieben"
seit.
Kein Problem, ... wie heisst Du eigentlich mit Vornamen ? ... Wir melden uns schon, wenn es so nicht mehr weitergeht, und Du wirst hier weiter Unterstützung finden !
Mein Tipp an dieser Stelle: Stürz' Dich jetzt noch nicht auf LotusScript. Du tust Dir und anderen damit erstmal (!) noch keinen Gefallen. Du musst Dir erstmal die Notes-Basics erarbeiten mit den @functions und @commands und damit dem prinzipiellen Aufbau von Notes. LS nützt Dir sonst nichts.
Dabei und auch beim Weg zu LS findest Du hier immer offene Ohren und helfende Hände. Geh' es aber langsam und gründlich an. So wie die, die heute als Fachleute gelten. Die sind da auch nicht anders hingekommen !
Bernhard
PS: Und wie gesagt - in diesem Forum bitte noch einen echten Vornamen. Der AtNotes-Server steht nicht in Pullach ;-)