Autor Thema: getdocumentcollection mit zwei schluesseln?  (Gelesen 2807 mal)

Offline kathalena

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
getdocumentcollection mit zwei schluesseln?
« am: 02.09.03 - 10:52:43 »
hallo.

habe folgendes problem:
im code (siehe unten) versuche ich, docs nach zwei schluesseln in ner ansicht zu finden (mit getdocumentcollection - mit nem keyarray). das sollte doch eigentlich funktionieren.
habe zur kontrolle 2 msgboxes eingebaut... davon springt aber nur die zweite an (also bei getfirstdocument), die bei der erstellung der documentcollection nicht!

was kann das sein, oder mach ich einen fehler wenn ich das mit einem keyarray mache?

mfg, kathalena



   Set ansicht1=db.GetView("AlleMA")   
   
   If Isnull(ansicht1) Then
      Msgbox "Die Ansicht 'AlleMA' konnte nicht geöffnet werden"
      Exit Sub
   End If
   
   keys (1) = ma
   keys (2) = dat
   
   Msgbox keys(1) & " " & " " & keys(2)
   
   Set dc=ansicht1.getAllDocumentsByKey(keys, True)
   
   If dc Is Nothing Then
      Msgbox "argl"
   End If
   
   Set doc=dc.GetFirstDocument
   
   If doc Is Nothing Then
      Msgbox "arglargl"
   Else   
      ab_dauer1=doc.GetItemValue("ABStunden")
      Msgbox ab_dauer1         
      If Isnumeric(ab_dauer1(0)) Then
         ab_dauer=ab_dauer+ab_dauer1(0)   
      End If   
      Set doc=dc.GetNextDocument(doc)
      Msgbox ab_dauer
   End If

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #1 am: 02.09.03 - 11:09:49 »
Hi,

welche Messagebox wird bei GetFirstDocument angezeigt ?

Was mir aufgefallen ist, dass hier

keys (1) = ma
keys (2) = dat

jeweils die Anführungszeichen fehlen,

also so

keys (1) = "ma"
keys (2) = "dat"

oder sind das Variablen?

Ist deine Ansicht "AlleMA" in den ersten beiden Spalten kategorisiert bzw. sortiert?

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline kathalena

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #2 am: 02.09.03 - 11:16:04 »
bei getfirstdocument wird ne messagebox "arglargl" angezeigt (hab nur irgendwas reingschrieben, ums zu erkennen)

ma und dat sind variablen (die werden aus dem gerade geoeffneten dokument geholt).

die ersten beiden spalten der ansicht sind sortiert (nicht kategorisiert)

mfg, kathalena

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #3 am: 02.09.03 - 11:20:19 »
Hi,

von welchem Typ sind denn die beiden Variablen. Es sollten Stringvariablen sein.

Versuch auch mal testhalber in das Keyarray feste Werte einzutragen, die wirklich Dokumente zurückliefern müssen, ob's dann funktioniert.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline kathalena

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #4 am: 02.09.03 - 11:24:05 »
jo, sind string.
   Dim keys( 1 To 2 ) As String

also auch wenn ich nen festen wert eintrage, kommt die meldung, dass er kein document findet (ich finds vor allem seltsam, dass keine meldung bezueglich der documentcollection kommt...)

kathalena

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #5 am: 02.09.03 - 11:33:29 »
Stimmen Deine Spaltenwerte mit dem Datentyp des Arrays überein ? Steht doch auch Text anstelle Datum?
Statt auf dc = nothing zu prüfen, mußt Du dc.count = 0 checken.

HTH,
Bernhard

Offline kathalena

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #6 am: 02.09.03 - 11:39:11 »
mhm. mit dc.count = 0 krieg ich beide meldungen.

die spaltenwerte sind alle text.
aber die werte sind dieselben. er muesste was finden. ich kapier das nicht.

kathalena

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #7 am: 02.09.03 - 12:00:44 »
Hi,

ich hab mal auf die Schnelle eine kleine Test-DB zusammengestrickt.
Hat auf Anhieb funktioniert. Schau mal im Anhang.

Sind die Feldtypen nach denen gesucht werden soll ebenfalls vom Typ Text? Wie weißt du denn die Werte den Key-Variablen zu?

Im Moment fällt mir sonst nix weiter dazu ein.

Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline kathalena

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #8 am: 02.09.03 - 12:32:44 »
   Set uidoc=ws.CurrentDocument
   ma = uidoc.FieldGetText("ZIDMA")   
   dat = uidoc.FieldGetText("ABDatum")

und dann eben

   keys (1) = ma
   keys (2) = dat

habs aber auch schon direkt versucht, ging auch nicht.

kathalena


Offline kathalena

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #9 am: 02.09.03 - 15:35:23 »
so. ich hab keinen schimmer warum (irgendwie peinlich, oder?  :-[ ) aber es funktioniert jetzt.

ich hab im prinzip nichts geaendert..

die wege des notes sind unergruendlich  ;)

kathalena


Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #10 am: 02.09.03 - 17:52:02 »
... nicht fragen - geniessen  ;)

ata
Grüßle Toni :)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #11 am: 02.09.03 - 19:13:27 »
@ata:
Besser nicht geniessen - nix ist schlimmer, als daß etwas funktioniert, und man weiß nicht, warum ;-)

@kathalena:
"Im Prinzip nichts gemacht" - also doch was gemacht ? Da könnte sich nachforschen lohnen, bevor das noch mal passiert ...
Kleiner Tip: Wenn etwas nicht funktioniert, was nach allem Anschein aber funktionieren sollte, dann den Designer beenden, die (geänderte) DB ebenfalls (in allen Instanzen) und es dann nochmal probieren. Manchmal bekommt der Client Änderungen im Designer nicht mit ...

Und - aus eigener Erfahrung - sicherstellen, daß man nicht im Designer in Replik A Änderungen macht und sie im Client in Replik B überprüft (ohne zu replizieren;-)

Ciao,
Bernhard

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #12 am: 02.09.03 - 19:23:09 »
@ata:
Besser nicht geniessen - nix ist schlimmer, als daß etwas funktioniert, und man weiß nicht, warum ;-)

... na dann viel Spaß - ich forsche das eine oder andere Mal nach, aber einiges bleibt unerklärlich in den Tiefen von Notes begründet und hat nichts mit Logik oder System zu tun - und dann gilt das von mir gesagte...

ata
Grüßle Toni :)

Offline kathalena

  • Frischling
  • *
  • Beiträge: 12
  • Geschlecht: Weiblich
Re:getdocumentcollection mit zwei schluesseln?
« Antwort #13 am: 03.09.03 - 10:31:16 »
hehe. danke ihr zwei!

ich weiss inzwischen schon was ich gemacht habe, aber es ist unlogisch (zumindest meiner meinung nach, aber ich kenn mich ja net aus):

unten ein ausschnitt aus dem code... ich verwende eigentlich bei beiden abfragen die gleich art und weise (mit getdocumentbykey bzw getalldocumentsbykey). einmal setz ich dir "zaehl"variable auf null und einmal nicht. einmal funktionierts ohne (oben) und unten funktionierts nur mit und das obwohl ich den selben code in hellviolett auch wo anders OHNE das auf null setzen verwendet hab (und dort gehts).
kann mir das mal wer erklaeren?
   
mfg, kathalena


   Set ansicht=db.GetView("AZalle")
   
   If Isnull(ansicht) Then
      Msgbox "Die Ansicht 'AZalle' konnte nicht geöffnet werden"
      Exit Sub
   End If
   
   Set doc2=ansicht.GetDocumentByKey(ma, True)
   
   If doc2 Is Nothing Then
      Msgbox "Sie haben für diesen Tag keine Arbeitszeiten eingetragen."
      Exit Sub
   Else
      
      If  wday=2 Then
         az_dauer1=doc2.GetItemValue("AZ_Montag_Dauer")
      Elseif wday=3 Then
         az_dauer1=doc2.GetItemValue("AZ_Dienstag_Dauer")
      Elseif wday=4 Then
         az_dauer1=doc2.GetItemValue("AZ_Mittwoch_Dauer")
      Elseif wday=5 Then
         az_dauer1=doc2.GetItemValue("AZ_Donnerstag_Dauer")
      Elseif wday=6 Then
         az_dauer1=doc2.GetItemValue("AZ_Freitag_Dauer")
      Else
         az_dauer1(0)="0"
      End If   
      az_dauer=az_dauer + az_dauer1(0)
   End If
   

   
'bereits abgelieferte Arbeitsberichte von mitarbeiterIn an Datum finden
   
   Set ansicht1=db.GetView("ABalle")   
   
   If Isnull(ansicht1) Then
      Msgbox "Die Ansicht 'ABalle' konnte nicht geöffnet werden"
      Exit Sub
   End If
   
   keys(1) = uidoc.FieldGetText("ZIDMA")
   keys(2) = uidoc.FieldGetText("ABDatum")
   
   Set dc=ansicht1.getAllDocumentsByKey(keys)
   
   If dc.count = 0 Then
      Msgbox "Sie haben für den " & dat & " keine Arbeitszeiten eingetragen. Es fehlen Arbeitsberichte im Umfang von " & az_dauer & " Stunden."
      Exit Sub
   End If
   
   Set doc=dc.GetFirstDocument
   ab_dauer=0

   While Not doc Is Nothing
      ab_dauer1=doc.GetItemValue("ABStunden_1")
      
      If Isnumeric(ab_dauer1(0)) Then
         ab_dauer=ab_dauer+ab_dauer1(0)   
      End If   
      Set doc=dc.GetNextDocument(doc)
   Wend

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz