Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: robertpp am 07.04.03 - 16:44:21

Titel: von bis Datum alle Docs
Beitrag von: robertpp am 07.04.03 - 16:44:21
Ich bräuchte eine Funktion die mir alle Docs zurückgibt die zwischen dem vonDatum und bisDatum liegen!!
Ich möchte das ganze aber nicht über FTSearch realisieren.
Hat jemand so etwas gebastelt oder weiß jemand wie man soetwas
lösen könnte?
danke robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: Rob Green am 07.04.03 - 16:56:43
hm..gebastelt nicht, aber wenn Du keine Search Methode nehmen möchtest, mußt Du wohl oder übel über die NotesViewEntry Klasse gehen und das Datum aus jedem einzelnen Doc auslesen...

Collection bilden
....
erstes Doc nehmen
....
dim start as variant
dim ende as variant
start = doc.startdatum(0)
ende = doc.enddatum(0)

If start>=StartVergleich AND ende <=EndeVergleich Then
...
End If
...
nächstes Doc aus Coll


Wenn Du magst und kannst, dabei Performance Nachteile in Kauf nimmst, kannSt Du natürlich auch viewbasierend einen Select aufbauen...der die anzuzeigenden Docs vorhält, wenn der Zeitraum immer der gleiche sein soll.
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 07.04.03 - 17:07:35
... neben FTSearch gibt es auch db.Search - da wird kein Volltextindex benötigt...

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 07.04.03 - 17:10:44
nein das genügt mir glaub ich.ich werde es mal über diese Variante versuchen
danke robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 07.04.03 - 17:37:24
hallo ata wie funkt das dann bei db.search?
ich wollte mir eine dialogbox machen wo man das vondatum bisdatum eingibt und die gefundenen doc aus einer ansicht in eine DocCollection werfen!
danke robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 07.04.03 - 19:58:33
... die Syntax des db.Search funktioniert wie folgt

Dim session As New NotesSession
Dim dbThis As NotesDatabase
Dim dc As NotesDocumentCollection
Dim sdt As New NotesDateTime("01/01/1990")
Sim sSearch As String

Set dbThis = session.CurrentDatabase
sSearch = {SELECT Form = "DeineMaske"}
Set dc = dbThis.Search( sSearch , sdt , 0 )
' # ... liefert alle Dokumente mit deiner Maske...

... die Suchformel funktioniert in Formelsprache
... ich verwende mittlerweile gescheifte Klammern für die Suchformel, so kannst du ganz normal mit Anführungszeichen, Pipe und AmperSand arbeiten, wie gewohnt

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 08.04.03 - 07:37:08
und wie geht das jetzt wenn ich alle docs zwischen zwei datümer brauche?
robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 08.04.03 - 14:55:51
... so auf die schnelle...

Zitat
' # Anhand des Feldes "TargetDate" in einer Maske "Job" Dokumente einschränken   
   Dim ws As New NotesUIWorkspace
   Dim docThis As NotesDocument
   Dim dbThis As NotesDatabase
   Dim sdt As New NotesDateTime("01/01/1990")
   Dim sSearch As String
   Dim dc As NotesDocumentCollection
   
   Set docThis = ws.CurrentDocument.Document
   Set dbThis  = docThis.ParentDatabase
   sSearch = {SELECT Form = "Job" & ( TargetDate >= [01/03/2003] ) &  ( TargetDate < [01/04/2003] )}
   Set dc = dbThis.Search( sSearch , sdt, 0)
   MsgBox Cstr(dc.Count) + " Dokumente..."

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 08.04.03 - 17:30:20
Hallo ata
Ich möchte das ganze von einer Ansicht aus machen!

dh. ich stehen in einer Ansicht möchte auf einen Button klicken wo ich dann das vondatum und  bisdatum eingeben kann und die gefundenen dann zb in eine DocColl.
ich hab das ganze jetzt mal so abgeändert:

   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim db As NotesDatabase
   Dim sdt As New NotesDateTime("01/01/1990")
   Dim view As NotesView   
   Dim sSearch As String
   Dim dc As NotesDocumentCollection
   Set db= s.CurrentDatabase   
   Set view=db.GetView("Massnahme")
   Set doc = view.GetFirstDocument
   
   
   sSearch = {SELECT Form = "task" & ( Erledigtam >= [18/03/2003] ) &  ( Erledigtam < [25/04/2003] )}
   Set dc = db.Search( sSearch , sdt, 0)
   Msgbox Cstr(dc.Count) + " Dokumente..."   

nur wie mach ich dass das datum über felder variabel ist!!!
Ich mach mir eine Dialogbox mit einer maske mit vondatum und bisdatum aber weiter weiß ich nicht!

danke robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 08.04.03 - 17:59:54
... das macht so noch keinen Sinn. Du ziehst eine View, holst das erste Dokument und dann passiert was völlig anderes...

... beschreib' mal, was du tatsächlich machen willst. Am Anfang war das "... die Dokumente zwischen 2 Datumswerten" - jetzt kommt  eine Ansicht ins Spiel. Was für eine Rolle spielt denn die Ansicht?

... du willst das Datum dynamisch eingeben. Welche Vorstellung hast du über das User Handling - 2 Werte heißt 2 mal InputBox - ansonsten mußt du dir eine Dialogbox bauen - oder ist ein Wert Fix - zum Beispiel das heutige Datum...

... benötigst du nur die Anzahl der Dokumente - möchtest du mit den Dokumenten noch was machen...

... von daher die Bitte - fass das mal konkreter... ;)

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 09.04.03 - 08:12:37
OK ich mach mir eine Dialogbox mit einem Feld vonDatum und einem zweiten Feld bisDatum!!
Die zweit Datumswerte sollen anschließen zum suchen verwendet werden.
Ich habe mir eine Ansicht gebastelt die das :
SELECT Form="task" & Status="Arbeit erledigt" : "Nachweis erledigt"
als Auswahlformel verwendet. Nur bei diesen Docs soll gesucht werden die das erfüllen.
Es wäre unnotig alle docs zu durchsuchen weil das sehr viele sind.
Anschließen möchte ich alle gefundenen docs in eine DocCollection und dann lese ich ein paar felder aus von den Docs in der DocCollection.

robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 09.04.03 - 11:43:12
... wenn du schon einen db.Search nimmst, dann bau den noch weiter aus mit der Datumsabfrage, damit du nur die Dokumente bekommst, die in deinem Range liegen...

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 09.04.03 - 11:49:55
Das vesteh ich jetzt nicht!!
Es soll von den ganze docs eine auswertung gemacht werden und das nur vom vondatum bis zum bisdatum (alles was zwischen den beiden datümer liegt).
und das ist von tag zu tag unterschiedlich deshalb dialogbox mit den felder!!
Aber ich weiß nicht wie ich das realisieren kann.
Wie würdest du das machen?
bitte um hilfe

robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 09.04.03 - 12:18:11
... ich habe gleich einen Termin, kann erst spät heute Abend wieder - wenn ich Glück habe, dann zwischendurch noch mal...

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 14.04.03 - 21:56:43
Hallo Robert,

ich habe mir noch einmal Zeit genommen und mir dein Anliegen nochmal näher gebracht.

Bei der Suche nach deinen Dokumenten ist die Ansicht völlig überflüssig. Sie ist für die Ermittlung der Collection nicht notwendig.

... erstelle dir eine Maske
... nimm ein Feld SaveOptions = "0" auf
... deine beiden Datumsfelder VonDatum und BisDatum
... einen Button zum Ausführen deines Codes

Lese zuerst die Werte deiner Felder ein.
Du mußt den Datumsstring in die Form "24/1/2003" bringen, damit du diesen String in die Formel integrieren kannst...

Mit Day( ... ) erhälst du den Tag als Integer
Mit Month( ... ) erhälst du den Monat als Integer
mit Year( ... ) erhälst du das Jahr als Integer

Mit Cstr(...) kannst du Zahlenwerte zu Strings konvertieren

Den Rest hast du ja bereits...

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 15.04.03 - 09:59:54
ein problem hab ich bei dieser sache noch!!
Er gibt mir den Fehler zurück:

Dialogbox cannot be used in this context; a document must be selected!

Wenn ich das ganze mit einer Dialogbox machen dann brauch ich vorher ein doc aber wie erstelle ich mir das doc, dass ich dann nicht speichern will?
Ich habs mal so versucht:

Sub Click(Source As Button)
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Set db= s.CurrentDatabase
   Dim uidoc As NotesUIDocument
   Set doc= db.CreateDocument
   doc.Form="proof"
   Aber da fehlt mir noch was!!!!
   
   
   Call ws.dialogbox("proof",True,True,True,,,,"Nachweis suchen",,True,True)
   
End Sub

robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 15.04.03 - 11:00:55
... verwende die Maske nicht für die Dialogbox, sondern öffne sie mit @Command([Compose] ; "Maskenname")...

... denn wie du siehst, kann eine Dialogbox nur über einem bestehenden Dokument geöffnet werden. Um zu vermeiden, daß dann Werte in das Dokument geschrieben werden, die dort nichts zu suchen haben, mußt du die Parameter der Box entsprechend einstellen usw. - daher nimm eine Maske, die nicht gespeichert werden kann - temporäres Doc...

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 15.04.03 - 12:42:56
also mir wäre es lieber wenn ich das ganze über eine dialogbox lösen könnte!! Oder geht das dann eh auch? Wenn nicht wie bekomme ich das so hin es über ein Dialogbox zu lösen?
danke robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: ata am 15.04.03 - 13:24:23
... wenn du unbedingt eine Dialogbox verwenden willst, dann muß der User in der Ansicht ein Dokument markiert haben...

... damit dieses Dokument keine unerwünschten Felder übernimmt, müssen die Parameter der Dialogbox entsprechend übergeben werden => Designer-Hilfe

ata
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 18.04.03 - 14:16:20
Hallo an alle!!
Zuerst mal ein schönes Osterfest!!
Ich hab hier jetzt für mein Problem mit dem Suchen eine Test-DB angelegt!!
Dort hab ich mir ein doc erstellt ( "proof") dieses doc rufe ich, jetzt immer wenn ich in der Ansicht Massnahmen bin, und den Button "Nachweis suchen" (Dialogbox) klicke auf!! jetzt kann ich hier mein vondatum und mein bisDatum eingeben und das Problem das ich jetzt habe ist, das ich die Dialogbox jetzt wieder schließen muss( mit OK Button) und die zwei Datumswerte übergeben muss!!!! Das vondatum und bisdatum brauche ich anschließen in dem Anderen Button "ansicht vc" um dort die zwei fixen Datumswerte variabel zu machen. Das schließen hab ich schon mit einem Agent versucht aber die Dialogbox geht aber nicht zu!! Und wie ich die werte dann übergeben muss weiß ich auch nicht!!! Besser gesagt ich will wenn ich auf OK klicke das die Dialogbox zu geht und gleich gesucht wird.
Bitte um hilfe
robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 23.04.03 - 08:01:40
Kann mir jemand bei meiner test-DB helfen bittteeeee! :'( :'(
robertpp
Titel: Re:von bis Datum alle Docs
Beitrag von: enny am 23.04.03 - 13:13:41
Schau es dir mal an ob es dir so gefällt! ich nutze halt nicht deine Buttons sondern die von Dialogbox funktion da ich sonst Probleme hatte die Daten hin und her zu schieben.

MfG

Enny
Titel: Re:von bis Datum alle Docs
Beitrag von: robertpp am 24.04.03 - 08:12:56
danke enny genau das hab ich gesucht!!
Ich hatte mir gedacht das kann man mit meinen Buttons auch lösen nur so passt es auch!!

robertpp