Beiträge von Crashdow

    Dann kannst du das so machen wie ich sagte:



    Erstell eine Spalte in deiner Ansicht in der der Code:


    @If( RADIOBUTTON = AKTIV; 255:0:0:0:0:0; Nothing) Ich glaube das ist Rot


    steht. Die Spalte versteckst du.


    Ab der Spalte in der der Code steht wird alles nach rechts in der Farbe makiert.



    Gruß
    Christian

    Du hast die Möglichkeit in der Spalten einzustellen das der Wert als Farbe verwendet wird.


    "Wert als Farbe verwenden"


    Dafür erstellst du einfach eine verborgene Spalte mit dem Wert:
    z.B. über eine Bedingung


    @If(ALT="ALT";255:200:200:0:0:0;Nothing)


    Ich brauchte das bis jetzt nur um die komplette Spalte zu makieren.
    Aber wenn du nur einzelne Bereiche farbig kennzeichnen möchtest kannst du ja hinter der Spalte die Farbe über eine weitere verborgene Spalte in die Ursprungs-Farbe zurück bringen.


    Die Methode ist zwar ein bisschen umständlich, aber sie Funktioniert.


    Gruß
    Christian

    Und ich dachte schon das liegt an meiner Programmierung.


    Da ich darauf hingewiesen wurde das die names.nsf sowie die catalog.nsf auf beiden Servern gleich ist, habe ich jetzt einfach die Server-Bezeichnung weggenommen.
    Jetzt klappt das ganze und ich habe wieder etwas dazugelernt. Da lohnt sich doch mein Praktikum.


    Vor allem das man die Print Anweisung nur einmal aufrufen und sie danach unterdrücken sollte. Ich habe gerade die Log Datei mit viel Text gefüllt (4 Print-Anweisungen * 498 Datein) :D


    Dank und Gruß
    Christan

    Danke,


    ich habe mir jetzt zugriff auf die Datenbank geholt und sie da, so falsch lag ich gar nicht.



    AMgr: Agent ('Kopie von Zähler' in 'tv/it/st/SVZ.nsf') error message: To open database (SERVERI!!names.nsf) on remote machines the server where the agent is running has to be listed by remote machine as trusted server


    er kriegt meine Datenbank nicht offen.


    Kann mir das einer übersetzen?



    Gruß und Dank
    Christian

    Hm,
    wenn ich jetzt ein paar Print-Befehle reinbau, wo führt er den dann mein Protokoll und reicht es wenn ich einfach


    Print ("Hier komme ich hin") in den Code einfüge?


    PS: der Server auf dem die Datenbank läuft ist ein Linux-Server




    Ich kann mir auch eigentlich nur noch vorstellen das der Agent die Datenbank nicht öffnet und somit den Code dann auch nicht ausführt.

    tomthecat
    OK, ich habs korrigiert, "Ähnlicher Fehler".
    Das einzigste was an ChrisW's fehlerbeschreibung nicht bei mir zutrifft ist das der Agent auch Zeitgesteuert läuft. Nur ändert er nichts in meiner Datenbank.


    Hier das Protokoll des Agent:
    Started running agent 'Zähler' on 01.01.2006 07:00:29 AM
    Running on all documents in database: 492 total
    Found 492 document(s) that match search criteria
    Ran LotusScript code
    Done running agent 'Zähler' on 01.01.2006 07:00:29 AM


    Die Messageboxen sind hinzugekommen da ich sie Standardmäßig an der Stelle einfüge und da ich den Agent erst Lokal getestet habe.
    Aber ich hoffe ja auch das der Code mit den Messageboxen nicht ausgeführt wird.



    alex
    Die Felder und Ansichtennamen müssten alle Stimmen. Wenn ich den Agent Lokal starte klappt das alles einwandfrei. Nur wenn ich ihn Zeitgesteuert laufen lasse funtzt es nicht.



    Das ganze kann eigentlich nur daran liegen das der Code anders verarbeitet wird wenn ich ihn Zeitgesteuert vom Server aus starte.
    Lokal gestartet läuft es ja.




    PS: In der Datenbank gibt es eigentlich gar keine Maske, das Dokument wird komplett durch den Agent erstellt.
    Das eizigste was es gibt ist eine Ansicht.

    Hi,


    ich habe einen ähnlichen Fehler und habe keine Ahnung woran das liegt.


    Ich gebe euch einfach mal den ganzen Code.
    Der Agent läuft zwar durch, aber er ändert nichts in der Datenbank.
    Die Datenbank liegt auf SERVERII





    Sub Initialize

    'Initialisierung der Datenbanken + Überprüfung ob die Datenbanken volltextindiziert ist'
    Dim DBNames As NotesDatabase
    Set DBNames = New NotesDatabase("SERVERI", "names.nsf")
    If Not DBNames.IsFTIndexed Then
    Call DBNames.UpdateFTIndex(True)
    End If

    Set DBNames = New NotesDatabase("SERVERI","names.nsf")
    If Not DBNames.IsFTIndexed Then
    On Error 4080 Resume Next
    Call DBNames.UpdateFTIndex(True)
    If Err = 4080 Then
    Messagebox("Datenbank kann nicht auf dem Server " & DBNames.Server & " indiziert werden!")
    Exit Sub
    End If
    End If

    Dim DBKatalog As NotesDatabase
    Set DBKatalog = New NotesDatabase("SERVERII", "catalog.nsf")
    If Not DBKatalog.IsFTIndexed Then
    Call DBKatalog.UpdateFTIndex(True)
    End If

    Set DBKatalog = New NotesDatabase("SERVERII","catalog.nsf")
    If Not DBKatalog.IsFTIndexed Then
    On Error 4080 Resume Next
    Call DBKatalog.UpdateFTIndex(True)
    If Err = 4080 Then
    Messagebox("Datenbank kann nicht auf dem Server " & DBKatalog.Server & " indiziert werden!")
    Exit Sub
    End If
    End If

    'Initialisieren der geöffneten Datenbank'
    Dim session As New NotesSession
    Set db = session.CurrentDatabase
    Set view = db.GetView("Anzeige")


    'Löschen aller alten Dokumente'
    Set collection = view.AllEntries
    Set entry = collection.GetFirstEntry()
    While Not(entry Is Nothing)
    Set doc = entry.Document
    doc.Remove(True)
    Set entry = collection.GetNextEntry(entry)
    Wend

    'Einlesen der Ansicht "_Personen" aus dem Adressbuch'
    Set viewNames = DBNames.GetView("_Personen")
    Set docNames = viewNames.GetFirstDocument


    'Erstellen von Dokumenten und füllen der Felder'
    While Not (docNames Is Nothing)

    If docNames.MailFile(0) <> "" Then
    'Neues Dokument erstellen'
    Set doc = db.CreateDocument

    'Überprüfung ob eim Dokument des Adressbuchs eine Mail-Datenbank zugeordnet ist und gegebenenfalls füllen der Felder'
    'mit dem Namen der Mail-Datei, der Größe der Mail-Datei und der jeweiligen Dokumentenanzahl'
    doc.Form = docNames.Department
    Forall x In docNames.MailFile
    doc.MailFile = x
    If x <> "" Then
    ret = Split(x, "\")
    Set doccol = DBKatalog.FTSearch(ret(0) + "/" + ret(1),0)
    If doccol.Count > 0 Then
    Set docKatalog = doccol.GetFirstDocument
    doc.Größe = docKatalog.DBSize
    doc.AnzahlDoc = docKatalog.DbNumDocuments
    doc.DBPercentUsed = docKatalog.DbPercentUsed
    End If
    End If
    End Forall

    'Speichern des neuen Formulars'
    Call doc.Save( True, True )
    End If

    Set docNames = viewNames.GetNextDocument(docNames)
    Wend

    End Sub

    So, ich habe mein Problem gelöst.


    Wenn man es einmal weiß ist es ganz einfach.
    Hier der Code:
    [color=0000FF]
    [TArtikel_Ende = Enddatum]
    [TArtikel_Countdown = das Feld mit dem Sekundenwert]
    [/color]



    @Abs(@Integer(TArtikel_Ende - @Now))


    das Ergebnis gibt Lotus Notes in Sekunden an


    Umrechnung auf Tage

    _var := TArtikel_Countdown / (60,0 * 60,0 * 24,0) -0,5;
    @If( _var != 0; _var; Nothing)


    Auf Stunden

    _var := @Modulo(TArtikel_Countdown ; (60,0 * 60,0 * 24,0));
    _hour := _var / (60 * 60) - 0,5;
    @If(
    _hour != 0;
    _hour;
    TArtikel_Tage != "";
    _hour;
    Nothing
    );


    ...

    Hi,


    hat jemand schon mal einen Countdown Zähler auf zwei Daten gemacht?
    Ich möchte das die User ein Datum + Zeit angeben auf das heruntergezählt wird.


    z.B.
    [color=663333]05.01.06 10.23/color]
    [color=663333]1T 2Std 13Min[/color]



    Ich komme an dem Punkt leider momentan nicht weiter.



    Gruß und Dank
    Christian

    Hm, eigentlich hatte ich das schon mal getestet (letztes Jahr :D) mit dem Search Befehl, aber da habe ich wahrscheinlich was übersehen.



    Ich habe jetzt eine weitere Ansicht erstellt in der ich nur eine Spalte mit dem Datum [color=663333]@Text(@Date(TK_Datum))[/color] erstellt habe.



    und im Code habe ich:


    Dim datum1 As String
    Dim datum2 As String


    Set view = db.GetView("(BewirtungKalender)")


    datum1 = Cstr( uidoc.FieldGetText( "InputVon" ) )
    datum2 = Cstr( uidoc.FieldGetText( "InputBis" ) )


    hinzugefügt bzw. geändert.


    Jetzt klappt es auf jedem Fall.



    Gruß und Dank
    Christian

    Erst mal ein Frohes Neues Jahr, ich hoffe ihr seid alle gut reingerutscht.



    So, ich sitzte leider immer noch an dem oben genannten Problem.
    Ich schaffe es zwar Dokumente auf der Kalender-Ansicht zu erstellen, aber leider nicht sie Automatisch zu löschen.
    Ich habe jetzt einfach mal den ganzen Code hier rein Kopiert, vielleicht fällt ja jemandem ein Fehler auf.


    Das ganze läuft so ab das ich von der Kalenderansicht eine Maske öffne in der Datum1 , Datum2 , Bewirtung und Alternative Bewirtung angegeben werden können.
    Beim Aufrufen des Agenten soll für jedes Datum ein Dokument erstellt werden.
    Gleichzeitig sollen alte Dokumente auf dem Datum gelöscht werden.



    Sub Initialize

    Dim db As NotesDatabase
    Dim session As New Notessession
    Dim workspace As New NotesUIWorkspace
    Dim view As NotesView
    Dim view2 As NotesView
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument

    Dim dc As NotesDocumentCollection

    Set db = session.CurrentDatabase
    Set uidoc = workspace.CurrentDocument
    Set view = db.GetView("Als Kalender")

    datum1 = uidoc.FieldGetText( "InputVon" )
    datum2 = uidoc.FieldGetText( "InputBis" )
    bewirtung = uidoc.FieldGetText( "InputBewirtung" )
    alternative = uidoc.FieldGetText( "InputAlternative" )

    If datum1 > datum2 Then
    Messagebox( "Das Datum ist falsch eingegeben")
    End If

    While Not( datum1 > datum2)

    Set dc = view.GetAllDocumentsByKey( datum1, False)
    Messagebox(datum1)
    Set doc = dc.GetFirstDocument




    '[color=993333]-----Hier ist das Problem, er kommt gar nicht in die While schleife rein-----[/color]
    While Not( doc Is Nothing)
    doc.Remove( True )
    Wend



    '------------ Erstelle Dokument-----------------
    Set docText = db.CreateDocument
    docText.Form = "Termineintrag"
    '-------------------------------------------------------

    wd = Weekday( datum1 )
    If wd = 6 Then
    docText.TK_HalleBelegt = "Feiertag"
    End If
    If wd = 7 Then
    docText.TK_HalleBelegt = "Feiertag"
    End If
    If wd = "1" Then
    docText.TK_HalleBelegt = "Feiertag"
    End If

    docText.TK_Datum = Datevalue( datum1 )
    docText.TK_Bewirtung = bewirtung
    docText.TK_Alternative = alternative

    Call docText.Save(True, True)

    SKIPSAVE:

    Dim dateTime As New NotesDateTime( datum1 )
    Call dateTime.AdjustDay( 1 )
    datum1 = dateTime.DateOnly

    Wend

    Call view.Refresh



    Gruß und Dank
    Christian

    Ja, die Datenbank ist volltextindiziert. Und er zeigt mir per Messagebox, wenn ich "datum1" vor der Remove Schleife ausgebe das Datum genau so an wie es in der Ansicht steht.


    z.B. 20.05.2005


    Es kann ja eigentlich nur noch daran liegen das er das eine als value und das andere als text sieht, aber auch das habe ich eigentlich getestet.


    Ich werde es morgen mal mit GetAllDocumentsByKey testen, vielleicht habe ich da mehr glück.


    Danke!!

    Hi,


    ich habe ein kleines Problem mit dem Vergleichen von Daten.



    Ich möchte über einen Agent mehrere Dokumente erstellen.




    Not( datum1 > datum2)

    Set docText = db.CreateDocument
    docText.Form = "Termineintrag"

    wd = Weekday( datum1 )

    docText.TK_Datum = Datevalue(datum1)
    docText.TK_Bewirtung = bewirtung
    docText.TK_Alternative = alternative

    Call docText.Save(True, True)

    Dim dateTime As New NotesDateTime( datum1 )
    Call dateTime.AdjustDay( 1 )
    datum1 = dateTime.DateOnly

    Wend




    Das klappt auch ganz gut. Jetzt möchte ich aber nur ein Dokument pro Datum. Daher möchte ich die alten Dokumente löschen, sobald ein neues erstellt wird.




    Set view = db.GetView( "(BewirtungKalender)" )
    Call view.FTSearch( datum1, 0 )
    Set doc = view.GetFirstDocument
    While Not( doc Is Nothing)
    doc.Remove( True )
    Set doc = view.GetNextDocument
    Wend




    Leider klappt es nicht das Datum richtig zu vergleichen.


    Bei einem @DbLookup - Befehl habe ich an anderer Stelle sowohl das Datum der Ansicht als auch das Datum mit dem ich suche mit
    @Text(@Date(DATUM)) auf einen Nenner gebracht.
    Leider funktioniert das mit Skript auch nicht wie ich das möchte (oder ich habe noch nicht den richtigen Weg gefunden.



    Kann mir da jemand helfen?


    Gruß und Dank
    Christian

    Ich habe es jetzt einfach durch:


    Sub Postopen(Source As Notesuidocument)
    Source.EditMode = True
    End Sub


    sichergestellt das es immer im Bearbeitungsmodus geöffnet wird und deinen Hinweis befolgend durch ein:



    Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
    Continue = False
    End Sub


    auch das den Lesemodus komplett unterdrückt.

    Das Problem tritt durchgehend auf. Leider funzt es auch nicht wenn ich die Häckchen neu setze. Ich glaube ich werde es mal über das Postopen versuchen.


    Was meinst du mit abfangen? Durch Skript?
    Ich will letzt endlich erreichen das der User immer direkt in den Bearbeitungsmodus kommt, da die Person die damit hinterher arbeitet es schon für viel Arbeit hält wen sie eine Schaltfläche mehr drücken muß als früher. (die alte Oberfläche war in Access)

    Eben nicht, wenn ich ein neues Dokument erstelle öffnet er dieses im Bearbeitungsmodus.
    Speichere und öffne ich es danach von der Ansicht aus hat es den Modus gewechselt und ich muß erst mit einem Doppelklick wieder wechseln bevor ich Daten eintragen kann.


    Dabei ist das Kästchen "Bearbeitungsmodus automatisch aktivieren" aktiv.

    Oh, sorry, ich habe mich falsch ausgedrückt.


    Das erste Problem ist behoben. Das lag wirklich einfach daran das ich das Dokument ein zweites mal als aktuelles Dokument deklarieren wollte.



    Das zweite Problem leider nicht.
    Nur neue Dokumente werden direkt im Bearbeitungsmodus geöffnet. Vorhandene leider nicht.
    Mein letzter Komentar bezog sich auch auf dieses Problem.

    Ups, das Source habe ich irgendwie völlig übersehen, danke.


    Ja, ich habe die Dokumente mit denen ich getestete habe auch gespeichert und neu geöffnet. Leider hilft das auch nicht.

    Hi,


    zum einen habe ich das Problem das er mir bei:


    Sub Postopen(Source As Notesuidocument)
    Dim session As New NotesSession
    Dim workspace As New NotesUIWorkspace
    Set db = session.CurrentDatabase
    Set UIdoc = workspace.CurrentDocument

    If uidoc.IsNewDoc Then

    Set view = db.GetView("(LookupGruppen)")
    Set doc = view.GetLastDocument

    Forall var In doc.Gruppe_GrNr
    var = var + 1
    Call uidoc.FieldSetText("Gruppe_GrNr", var)
    End Forall
    End If
    End Sub


    erzählt das er nur im Bearbeitungsmodus ein Feld beschreiben kann. Das Dokument wird jedoch direkt im Bearbeitungsmodus geöffnet, daher verstehe ich das Problem nicht :(




    Das führt mich gleich zum zweiten Problem. Ich habe auf jeder Maske angeklickt das er direkt im Bearbeitunsmodus öffnen soll. Dies tut er aber leider nicht immer. Wenn ich ein vorhandenes Dokument öffne ist er jedes mal im Falschen Modus.
    Kann bzw. muß ich da noch was anderes einstellen?