Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: him1802 am 08.02.04 - 11:06:43
-
Hallo,
ich bin gerade dabei an einer Seminarteilnehmerdatenbank rumzubasteln. Kurz zum Hintergrund: es geht darum, dass einzelne Seminarteilnehmer unterschiedliche Seminare aus verschiedenen Kompetenzbereichen belegt haben. Also:
Kompetenz "Verkauf" : Seminare "VK1", "VK2", etc. (Feldname der Seminare ist Verkauf)
Kompetenz "Service": Seminare "S1", "S2", etc. (Feldname Service)
Kompetenz "Führung": Seminare "F1", "F2", etc. (Feldname Führung)
Feldname der Kompetenzen (Checkbox) ist Kompetenz.
Ich möchte nun folgende Ansicht haben:
Verkauf (Kategorie)
- VK1 (Kategorie)
Hr. Müller
Hr. Meier
- VK2
Hr. Schulze
Service
- S1 Hr. Schulze
Hr. Meier
Führung
- F1 Hr. Müller
Ich habe die Spalte, in der die einzelnen Programme gezeigt werden folgendermaßen aufgebaut:
@if(Verkauf !=""; Verkauf;
@if(Service !=""; Service;
@if(Führung !=""; Führung;"")))
So klappt auch alles wunderbar, bis auf die Tatsache, dass die Teilnehmer, die Seminare aus unterschiedlichen Kompetenzbereichen besucht haben, leider aber nur bei einem auftauchen. Bspl: Hr. Müller hat "VK1" aus dem Bereich Verkauf und "F1" aus dem Bereich Führung belegt. Bei mir taucht er aber nur unter Verkauf auf. Das Führungsseminar verschwindet im Nirwana.
Ich habe hin und her probiert, mit den absurdesten Ergebnissen (z. B., dass als Programm plötzlich sowohl unter Verkauf als auch unter Führung "VK1F1" steht.....)
Wer kann mir sagen, was ich an der Formel ändern muss, damit die Teilnehmer unter jedem Kompetenzbereich einsortiert werden, aus dem sie Seminare belegt haben?
Danke für Eure Hilfe!
Jutta
-
Probier mal als Formel:
@Trim(Verkauf : Service : Führung)
Andreas
-
Was? Mehr nicht??? Nur diese eine Zeile oder dieses Zeile und meinen Rest noch dazu? Was bewirkt @Trim?
Ich kann's leider erst morgen wieder im Büro ausprobieren, dann aber garantiert als erstes ;o)
Jedenfalls danke schön für die schnelle Antwort!
Lieben Gruß
Jutta
-
Ich gehe davon aus, dass es pro Mitarbeiter 1 Dokument gibt, in dem die ganzen Seminare stehen. Dann sähe die Formel für die erste Spalte (Kategorie mit Unterkategorie !) so aus:
@Trim(
@if(Verkauf !=""; "Verkauf" + "\\" + Verkauf;"") :
@if(Service !=""; "Service" + "\\" + Service;"") :
@if(Führung !=""; "Führung" + "\\" + Führung;"")
)
Durch ":" wird eine Liste generiert.
Durch "\\" wird eine Unterkategorie erstellt. Die musst Du hier verwenden, damit die Zuordnung eindeutig ist (und bspw. nicht "VK1" unter Service auftraucht).
Das @Trim entfernt leere Elemente.
Du brauchst also für Deine 2 Kategorien eine Spalte mit der obigen Formel. In der 2. Spalte musst Du dann das Feld mit dem Namen des Mitarbeiters anzeigen.
Andreas
-
@Trim wirft in diesem Fall leere Listenwerte 'raus:
"Verkauf" : "Service" : "": "Führung" würde ja sonst zu vier Kategorien führen:
Führung
Service
Verkauf
(nicht kategorisiert)
.
HTH,
Bernhard
-
Andreas, irgendwie häuft sich das jetzt mit der Gedankenübertragung (und dass ich dann immer 90 Sekunden zu spät reagiere ;-)
Ciao,
Bernhard
-
;D
Ich vergaß den aktuellen Wetterbericht: Kelkheim, starke Winde aus Süd-West, wechselnd bewölkt, 4 Grad
Andreas
-
Uff, ich glaub, da hätte ich noch lange probieren können. Wie gesagt, morgen früh teste ich es aus. Wenn ich nicht klar komme, melde ich mich nochmal. Aber selbst für mich sieht die Formel eigentlich ganz logisch aus .... jetzt wo ich sie so sehe ;o)
Danke schön und liebe Grüße
Jutta
-
Ach, mir fällt gerade nochwas ein. Vielleicht könnt ihr da auch helfen:
Wenn ich bei der Form des Teilnehmers z. B. eine Adressänderung vornehme, plöppt ein Fenster hoch, das mich fragt, ob diese Änderung für alle Personen der gleichen Firma gelten soll (es gibt meist mehrere Teilnehmer einer Firma).
Die neuen Felder in der Form für die neue Ansicht, die ich da gerade bastel, müssen natürlich demnächst erstmal alle manuell ausgefüllt werden. Da wäre so ein Fenster mit der gleichen Frage ja gar nicht schlecht.
Aber ich hab gesucht und gesucht und nirgendswo gefunden, wo und wie man so ein Fenster hochplöppen lässt, bzw. seine Funktionalität in Gang setzt. Ich hatte auf einen Agent getippt, konnte in der Datenbank aber nichts entsprechendes finden.
Any ideas?
Danke nochmal und einen schönen Sonntag noch
Jutta
-
Wenn ich bei der Form des Teilnehmers z. B. eine Adressänderung vornehme, plöppt ein Fenster hoch, das mich fragt, ob diese Änderung für alle Personen der gleichen Firma gelten soll (es gibt meist mehrere Teilnehmer einer Firma).
Aber ich hab gesucht und gesucht und nirgendswo gefunden, wo und wie man so ein Fenster hochplöppen lässt, bzw. seine Funktionalität in Gang setzt. Ich hatte auf einen Agent getippt, konnte in der Datenbank aber nichts entsprechendes finden.
Jutta, um das herauszufinden müsste man wissen wann exakt diese Messagebox erscheint.
Ich könnte mir vorstellen das passiert im Exiting - Event des Feldes.
Oder kommt das beim Speichern? Dann schaue Dir auch mal den Querysave-Event der Maske an.
Matthias
-
Das Fenster kommt, wenn ich das Dokument abspeichern möchte. Aber was ist ein Querysave-Event???
Grüße
Jutta
-
Aber was ist ein Querysave-Event???
Uips, dann wird das schwer ...
Was ist das überhaupt für eine Applikation, die Du da anpasst ? Gekauft ? Vielleicht hat die ja auch ein anderer aus dem Forum im Einsatz und kann so direkter helfen ?
Bernhard
PS: QuerySave Event - such' mal per FTI in der DesignerHelp.
-
Hallo,
nein nein. Die DB hat ein Externer für uns "gefummelt", der aber jetzt leider im Nirwana verschwunden ist. Und so Kleinigkeiten versuche ich halt selber anzupassen.
Ich habe den Querysave gefunden und in dem ganzen Wust auch den Teil, der die Daten auf die anderen Kontakte überspielt. Jetzt wollte ich nach der gleichen Systematik einfach noch zwei Zeilen hinzufügen, aber dann sagt er mir Lotusscript-Fehler und alles ist plötzlich rot. Ich vermute, es liegt daran, dass Lotusscript in einer bestimmten Art und Weise geschrieben werden muss, die ich aber leider nicht kenne.
So sieht's ungefähr aus:
OTransS(0) <> CurrentDoc.TransS(0) Or OTransT(0) <> CurrentDoc.TransT(0) Or _
OTransC(0) <> CurrentDoc.TransC(0) Then
Und ich wollte das ganze auf folgende Felder erweitern, bzw. über der letzten Zeile, die mit "then" endet einfügen:
OCompetence(0) <> CurrentDoc.Competence(0) Or OSales(0)<> CurrentDoc.Sales(0) Or_
usw.usf.
Das klappt aber irgendwie nicht.Hast du irgendeine Idee warum nicht?
Danke und viele Grüße
Jutta
-
Mit dem Unterstrich als letztem Zeichen wird angezeigt, dass der Code
in der nächsten Zeile weitergeht.
Schreibe Deinen Code in die Zeile darunter und mache mit
DEL eine einzige Zeile daraus.
Ciao
Don Pasquale
-
Ich schätze mal, dass OCompetence, OSales nicht deklariert und gesetzt sind. Sieh mal in (Declarations) und im Postopen nach, da müsste sowas sein.
Andreas
-
Nur das alleine genügt ja nicht: Wenn OCompetence usw. nicht deklariert sind, dann werden sie wohl auch kaum belegt werden.
Ich weiss nicht, ob es gut ist, wenn man eine Programmiersprache so gar nicht beherrscht, dann in bestehenden Applikationen - die zudem im produktiven Einsatz sind - herumzufuhrwerken.
Holt Euch da lieber nochmal einen Externen ...
Bernhard
-
Hallo Glombi,
also erstmal 1000 Dank für die Sache mit dem @Trim...... Das hat wunderbar funktioniert und mein Chef ist schon ganz aus dem Häuschen, was ich alles kann ...höhöhö
Hm....zu dem Rest muss ich mal schauen, ob ich da weiter komme. Wenn nicht, muss ich mal unseren teuren Super-Notes-Guru ansprechen :o)
Danke jedenfalls
Liebe Grüße
Jutta
-
Aaaalso,
unter (Declarations) ist alles leer. Im Postopen hab ich was gefunden. Da steht immer sowas wie OSales = doc.sales. Hier hab ich meine einfach mal eingegeben. Das klappte auch.
Aber wann immer ich meine Ergänzungen im Querysave machen will, wird immer alles rot. Die Methode "in nächste Zeile gehen und DEL klicken" funktioniert irgendwie nicht. Mit Or_ enden ebensowenig.
Jetzt bin ich soooo knapp davor, was kann noch falsch sein??
Jutta
-
Welche Fehlermeldung steht denn in der Statuszeile ?
-
Poste mal den Code, der sich so schämt.
Es könnte an option Declare liegen oder an einem Syntaxfehler.
Andreas
-
Wenn in (Declarations) alles leer ist, muss aber was unter (Globals) - (Declarations) stehen. Denn woher kennt denn sonst würde das Querysave die Werte OSales etc. nicht kennen!
Die (Globals) findest Du im selben Eigenschaftsfenster wie (Declarations).
Andreas
-
Jetzt bin ich soooo knapp davor, was kann noch falsch sein??
Das glaube ich eher weniger. Wenn in den Declarations keine Variablen deklariert werden, damit diese im PostOpen UND im QuerySave zur Verfügung stehen, dann müssen diese ja woanders (ScriptLibrary ?) deklariert werden. Diese müssen dann ja auch noch mit Deinen Vars ergänzt werden, diese wiederum müssen sich im PostOpen erstmal die Originalwerte merken und so weiter und so fort.
Und das alles ohne Plan ...
Bernhard
-
Na ob die Ansicht in dem kleinen Fenster jetzt wirklich hilft???
' Check if any of the Account Level information has been changed ( including direct updates to Transition date)
If OAE(0) <> CurrentDoc.AE(0) Or _
OType(0) <> CurrentDoc.Type(0) Or OActivity(0) <> CurrentDoc.Activity(0) Or _
OIndustry(0) <> CurrentDoc.Industry(0) Or ONaceCode(0) <> CurrentDoc.NaceCode(0) Or _
OAccount(0) <> CurrentDoc.Account(0) Or OAAddress1(0)<> CurrentDoc.AAddress1(0) Or _
OAAddress2(0) <> CurrentDoc.AAddress2(0) Or OAAddress3(0) <> CurrentDoc.AAddress3(0) Or _
OAPostalCode(0) <> CurrentDoc.APostalCode(0) Or OACity(0) <> CurrentDoc.ACity(0) Or _
OACountry(0) <> CurrentDoc.ACountry(0) Or OATelephone(0) <> CurrentDoc.ATelephone(0) Or _
OAFax(0) <> CurrentDoc.AFax(0) Or OAccountNotes(0) <> CurrentDoc.AccountNotes(0) Or _
OTransS(0) <> CurrentDoc.TransS(0) Or OTransT(0) <> CurrentDoc.TransT(0) Or _
OCompetence(0) <> CurrentDoc.Competence(0) Or OSales(0) <> CurrentDoc.Sales(0) Or_
OService <> CurrentDoc.Service(0) Or OLeadership <> CurrentDoc.Leadership(0) Or_
OTransP(0) <> CurrentDoc.TransP(0) Or OTransC(0) <> CurrentDoc.TransC(0) Then
' Get all Contact documents for this Account in the DocumentCollection docs
Set view = session.CurrentDatabase.GetView( "($All Contacts)" )
' If Account Name has been changed, look for old Account name
If OAccount(0) = Currentdoc.Account(0) Then
Set docs = view.GetAllDocumentsByKey(Currentdoc.Account,True)
Else
Set docs = view.GetAllDocumentsByKey(OAccount(0),True)
End If
If docs.Count > 1 Then
Set doc = docs.GetFirstDocument
Do While Not (doc Is Nothing)
If doc. UniversalID <> uid Then
' Ask the user if he/she wants the changes to be reflected to all docs
If FirstPass = True Then
Dim twoLiner As String
twoLiner = |You have made changes to an Account information.
Would you like that same change to be reflected on all Contacts for the same Account? |
UserChoice = Messagebox (twoLiner, 36, "Automatic update of all Contacts")
FirstPass = False
End If
-
... nein nein nein ;D
das muss mit DIM anfangen.damit werden felder deklariert.
-
Dieser (!) Fehler liegt an den beiden letzten Zeilen vor dem Then, in denen der Unterstrich einfach an's Or geklatscht wurden.
Wenn dazwischen erstmal ein Leerzeichen eingefügt wird, dann ist das syntaktisch wieder in Ordnung - aber am logischen Problem hat sich noch lange nichts geändert.
Bernhard
-
@bernhard
gut gesehen, adlerauge :)
wer hat bloss sowas programmiert (kopfschüttel) :P
-
Jutta - das war wohl ihr erster LS-Versuch und die Konsequenz nur logisch.
Bernhard
@Jutta: Ich will Dich wirklich nicht entmutigen, aber so wird das bestimmt nix. Fang' erstmal mit etwas eigenem an, um Dir wenigstens Grundlagen zu schaffen.
-
ok ok ok....ist ja gut. Ihr habt mich überzeugt - oder besser überredet. Ich hör einfach auf, obwohl ich mich lieber daran festbeißen würde ;D Da muss dann wohl doch mal unser Guru dran.
Trotzdem danke für Eure Hilfe.
Es kommt aber schon das nächste Problem, aber dafür mach ich besser ein neues Thema auf
Liebe Grüße
Jutta
-
Wenn der "Guru" kommt, dann lass Dir gleich mal erklären, warum er was wie macht. Da bekommst Du schon erste Einblicke ;-)
Bernhard
-
Na das ist manchmal ein bissi schwierig. Er ist ein echter Techi und kann relativ schlecht erklären, weil er 1000 Dinge voraussetzt. Obwohl er echt fit ist. Ich hatte mein erstes Designer Seminar bei ihm und wollte es nach 1 Tag schmeißen, weil ich NICHTS verstanden habe (ich kannte notes noch nicht mal als Anwender. Soviel zu den tollen Ideen der Firma). Den Rest habe ich mir im Laufe der Zeit - manchmal mit seiner Hilfe zurechtgefummelt. Soviel dazu ;)
Danke euch allen
Jutta