Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: TripleH am 11.01.04 - 19:26:56
-
Hallo!
Tut mir Leid das ich so oft Poste aber ich würd heut gern fertig
werden da ich ab morgen schon wieder an einem anderem arbeite.(zum
Glück hab ich da mehr Ahnung als von Notes:))
Und zwar hab ich wieder meine Kalkulationsmaske.
Da hab ich mein Status Feld das auf fällig gesetzt
werden soll wenn folegendes passiert:
dort ist ein Feld "zahlweise" (hier kann man wählen
zwischen monatlich und jährlich) und ein Feld
"vertragsbeginn" welches ein Datum Feld ist.
Beispiel wählt einer zahlweise monatlich und
vertragsbeginn 1.1.2004 dann müßte das Feld
am 1.02.2004 auf fällig gesetzt werden.
Das heißt das vorher die Fälligkeit berechnet werden
muss und die dann mit dem aktuellen Datum verglichen
werden muss.
Ich hab folgendes Skript entwickelt
wo ich allerdings nen par Dinge nicht hinbekomm.
Da alle Dokumente immer jedeb Tag abgefragt werden müssen
hab ich das Skript unter im Lesenzeichen links
andere/Datenbankressourcen/DatenbankSkript und
dort unter Postopen.
Sub Postopen(Source As Notesuidatabase)
Dim s As NotesSession
Set s = New NotesSession
Dim db As notesdatabase
Set db = s.CurrentDatabase
Dim c As NotesDocumentCollection
Set c = db.AllDocuments
Dim vertragsbeginn As String
Dim fällig As Integer
Dim doc As NotesDocument
For i = 1 To c.Count
Set doc= c.GetNthDocument(i)
Next
Dim txt As String
txt = doc.GetItemValue("vertragsbeginn")(0)
If zahlweise = "monatlich" Then
fällig = txt + "hier muss der Monat erhöht werden"
"fällig muss jetzt mit dem aktuellen Datum
verglichen werde und wenns gleich ist dann
Status auf "fällig" setzen.
Das gleiche dann für jährlich
Call doc.ReplaceItemValue("Status","fällig")
Call doc.Save(True,True)
End If
End Sub
Ok das ists soweit wie ichs hinbekomm.
Ich hoffe jemand kann sich erbarmen damit ich einema
sehe wie es richtig geht und ein Musterbeispiel
hab da noch andre Dinge so ähnlich in mein Programm
ablaufen(ooh das wird ne lange nacht).
Ich dank euch ich hoffe ich hab mein Prob verständlich
erklärt..
wenn nicht fragt ruhig nach weil das möcht ich
unbedingt hinbekommen.
Gruß basti
-
Sub Postopen(Source As Notesuidatabase)
Dim s As NotesSession
Set s = New NotesSession
Dim db As notesdatabase
Set db = s.CurrentDatabase
Dim c As NotesDocumentCollection
Set c = db.AllDocuments
Dim vertragsbeginn As String
Dim fällig As Integer
Dim doc As NotesDocument
For i = 1 To c.Count
Set doc= c.GetNthDocument(i)
Next
bis hierher ist es gut, danach nicht mehr so.
For i = 1 To c.Count
Set doc= c.GetNthDocument(i)
hier muss dein Code rein, der jedes einzelne Dokument bearbeiten soll
wenn er außerhalb der Schleife steht (so wie bei deinem Beispielcode), dann wird genau ein Dokument bearbeitet, nämlich das Letzte in deiner Collection
Next
Schreib doch mal in Pseudocode, was du in der Schleife tun möchtest
z.B.
Wenn Dokument ein Kalkulationsdokument ist dann
ermittle Vertragsbeginn
ermittle Zahlungsweise
etc.
und poste das dann mal, wenn du dadurch nicht selbst auf die Lösung kommst.
-
Hi, wie ich mir das dachte hab ich doch zuvor schon angesprochen aber ich versuchs nochmal.
Ich hab an den stellen den Quelltextrausgenommen da es sonst noch mehr nach wirrwar aussieht und nur das hier gepostet wo ich mir dacht das es ganz gut ist.
Sub Postopen(Source As Notesuidatabase)
Dim s As NotesSession
Set s = New NotesSession
Dim db As notesdatabase
Set db = s.CurrentDatabase
Dim c As NotesDocumentCollection
Set c = db.AllDocuments
Dim vertragsbeginn As String
Dim fällig As Integer
Dim doc As NotesDocument
For i = 1 To c.Count
Set doc= c.GetNthDocument(i)
eigentlich soll er nur die Dokumente durchsuchen die in der Ansicht "doppelt" sind das es sich dort um Kalkulationsdokumente handelt? reicht der Quelltext dazu nicht aus?
ok hier kommt also der Quelltext rein.
Dim txt As String
txt = doc.GetItemValue("vertragsbeginn")(0)
If zahlweise = "monatlich" Then
fällig = txt + "hier muss der Monat erhöht werden"
"fällig muss jetzt mit dem aktuellen Datum
verglichen werde und wenns gleich ist dann
Status auf "fällig" setzen.
Das gleiche dann für jährlich
Call doc.ReplaceItemValue("Status","fällig")
Call doc.Save(True,True)
Next
/auf der Variablen txt steht jetzt der Vertragsbeginn ist ein Datumsfeld (11.01.2004)
und dann kommt die abfrage wenn zahlweise "monatlich" dann
dann dann muss der Monat um eins erhöht werden und das Ergebnis soll auf der "fällig" Variable gespeichert werden.
Mein Problem ist kann man das so berechnen also den Monat erhöhen um eins wenn ich nur ein datumsfeld hab oder muss ich 3 draus machen?
dann vergleiche fällig mit aktuellem datum. ist es gleich dann setze Feld "Status" auf fällig.
Call doc.ReplaceItemValue("Status","fällig")
Call doc.Save(True,True)
Ich hab schon einiges gemacht hauptsächlich scheitert es wohl am datumsberechnung.
Um dann dann mit dem aktuellen Datum zu vergleichen hab ich als notlösung ein Feld in der Maske welches das anzeigt aber brauch man das überhaupt?
Ok ich hoff das ist nicht zu verwirrend vielleicht bin ich ja auch mal so gut wie du und kann hier Tipps geben zumindest werd ich dran arbeiten:)
Gruß
Basti
-
echt sorry, aber das is mir zu verwirrend im Moment. ich glaube, ich verstehe ungefähr, was du meinst. aber bitte versuche doch mal in kurzen Sätzen zu formulieren, wie dieser "Datumsvergleich" ablaufen soll. Ohne echten Code und Variablenbezeichnungen.
Das würde mir sehr helfen und dir wahrscheinlich auch.
-
Also jeder der hier schaut kann sich eine meiner Versuche das Prob zu erklären aussuchen.
Also den Datums´vergleich soll sein das ich abhängig von einem Datumsfeld und einem anderen Feld in dem monatlich steht
versuche das fälligkeitsdatum zu ermiiteln.
steht in dem einen Feld 15.01.2004 ist die fälligkeit bei 15.02.2004.
Und dies Fälligkeit soll mit dem aktuellen Datum verglichen werden.
Ich weiß ist nen bißchen verwirrend wenn mans nicht sieht aber ich hoffe das hilft meinen letzten Text besser zu verstehen.
Gruß Basti
-
Ich weiß ist nen bißchen verwirrend wenn mans nicht sieht aber ich hoffe das hilft meinen letzten Text besser zu verstehen.
Hallo Basti,
es ist nicht das Technische, was uns hier Probleme bereitet
als vielmehr Deine sprachliche Beschreibung. Ein wenig Deine Rechtschreibung und Kommasetzung verbessern wäre
sehr sehr hilfreich.
Nimm Dir ruhig eine Minute mehr zeit und lies Dein Posting
nochmal durch und korrigiere Flüchtigkeitsfehler und setze
lieber ein Komma zuviel als ein Komma zuwenig.
Ciao
Don Pasquale