Autor Thema: If Abfrage falsch  (Gelesen 3785 mal)

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
If Abfrage falsch
« am: 24.02.12 - 10:32:00 »
Guten Tag,

folgendes Script liefert nicht das zurück was ich mir wünsche:

                Dim tdate As New NotesDateTime("Today")
   Dim vaktdat As Variant
   Dim serinJa As String
                  
   Set db = session.Currentdatabase
   Set view = db.GetView ("AnwendungenKopf")
   vaktdat = tdate.DateOnly
         
   Set doc = view.Getfirstdocument()
   While Not doc Is Nothing
      serinJa = doc.App_LIC_Erinnerung_JaNein(0)
      If serinJa <> "Ja" & doc.App_Lic_Erinnerung_Dat(0)<> vaktdat Then
         dNum = dNum +1
         Print "Hallo"            
      End If   
      Set doc = view.Getnextdocument(doc)   
   Wend
   Print "Es ist / sind " & dNum & " Dokumente verarbeitet worden."

Es ist derzeit nur ein Dokument in der Ansicht, welches auf die beiden Bedingungen zutrifft.
Habe die Werte bereits im Debugger überpürft. Das Script sagt immer das es alle Dokumente in der Ansicht verarbeitet hat.
Wenn ich die <> mit = ersetzte wird überhaut kein Dokument bearbeitet. Wenn ich nur 1 der beiden Bedingung angebe,
funktioniert es tadellos.

Was also mache ich verkehrt in der if Abfrage.

Vielen Dank für Eure Hilfe.
Gruß
Volker

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #1 am: 24.02.12 - 10:38:35 »
Hallo,

Was sagt der Debugger denn zu den einzelnen Werten?
Vor allem, was liefert Dir denn doc.App_Lic_Erinnerung_Dat(0) und was steht in vakdat zum Zeitpunkt des Vergleiches?


Andreas

Offline UMPirx

  • Frischling
  • *
  • Beiträge: 8
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: If Abfrage falsch
« Antwort #2 am: 24.02.12 - 10:40:42 »
Hallo,

ich denke das die Zeile

While Not doc Is Nothing

in

While Not (doc Is Nothing)

geändert werden muss.

Gruß

Wwe

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #3 am: 24.02.12 - 10:42:25 »
@UMPirx

Warum?  ???


Andreas

Offline UMPirx

  • Frischling
  • *
  • Beiträge: 8
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: If Abfrage falsch
« Antwort #4 am: 24.02.12 - 10:44:20 »
Hallo Andreas,

vergiss meine Antwort, wer lesen kann ist klar im Vorteil!!


Gruß und schönes WE!

Uwe

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: If Abfrage falsch
« Antwort #5 am: 24.02.12 - 10:47:18 »
Datumswerte zu vergleichen ist immer Tricky... vaktdat ist ein String mit dem aktuellen Datum. In App_Lic_Erinnerung_Dat steht warhscheinlich ein Variant vom Typ DateTime. Die sind IMMER ungleich. Du musst beide ins gleiche Format bringen, um die vergleichen zu können... Entweder, indem Du aus doc.App_Lic_Erinnerung_Dat(0) per New auch ein NotesDateTime machst, oder indem Du beide Variablen zu "Variants of Type DateTime" machst (ich meine Today ist schon sowas, und doc.App_Lic_Erinnerung_Dat(0) müsste auch sowas sein, die solltest Du vergleichen können..

Code
Dim dat1 as Variant
Dim dat2 as Variant

dat1 = Today
dat2 = doc.App_Lic_Erinnerung_Dat(0)
if dat1 <> dat2 then

könnte funktionieren (ohne Gewähr)
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #6 am: 24.02.12 - 11:05:58 »
Was hat denn der String-Konkatenator hier zu suchen?

If serinJa <> "Ja" & doc.App_Lic_Erinnerung_Dat(0)<> vaktdat Then

Weiters:
Auch, wenn App_Lic_Erinnerung_Dat vom Typ Date/Time ist: Bist Du sicher, dass dort ein Mitternachtswert steht wie in Today?

Bernhard

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #7 am: 24.02.12 - 11:08:10 »
also, habe nun beide Werte in Variant umgewandelt:
klappt aber leider immer noch nicht. dNum wird hochgezählt, obwohl es nur einmal kommen sollte.
Werte im Debugger beim Dokument welches greifen sollte:
Vaktdat   "24.02.2012"    Variant
VErindat   24.02.2012      Variant
sErinJa     "Ja"                  String
Werte bei Dokumenten wo es nicht greifen soll:
Vaktdat    "24.02.2012"   Variant
VErinDat   ""                     Variant
sErinJa      ""

Mein Script sieht jetzt so aus:

   Dim tdate As New NotesDateTime("Today")
   Dim vaktdat As Variant
   Dim vErinDat As Variant
   Dim sErinJa As String
                  
   Set db = session.Currentdatabase
   Set view = db.GetView ("AnwendungenKopf")
   vaktdat = tdate.DateOnly
         
   Set doc = view.Getfirstdocument()
   While Not (doc Is Nothing)
      sErinJa = doc.App_LIC_Erinnerung_JaNein(0)
      vErinDat =  doc.App_Lic_Erinnerung_Dat(0)
      If serinJa <> "Ja" & vErinDat <> vaktdat Then
         dNum = dNum +1
         Print "Hallo"            
      End If   
      Set doc = view.Getnextdocument(doc)   
   Wend
   Print "Es ist / sind " & dNum & " Dokumente verarbeitet worden."


Wie gesagt, wenn nur ein Wert berechnet wird (egal welcher) dann funktioniert es. Nur in Kombination halt nicht
Gruß
Volker

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #8 am: 24.02.12 - 11:13:12 »
Nochmal: Was willst Du mit dem "&"??

Bernhard

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #9 am: 24.02.12 - 11:26:12 »
tut mir leid ich steh auf´m Schlauch

If serinJa <> "Ja" and vErinDat <> vaktdat Then

sollte doch dann richtig sein, oder?

Das tuts aber auch nicht

Nochmal zu den Werten, Vaktdat steht der Wert in Anführungszeichen bei VErindat nicht.
Wirkt sich das evt. auch noch aus?
Gruß
Volker

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: If Abfrage falsch
« Antwort #10 am: 24.02.12 - 11:44:33 »
Tippfehler ? Oder steht das wirklich so da:

Vaktdat   "24.02.2012"    Variant
VErindat   24.02.2012      Variant

Die beiden Werte sind also NICHT gleich...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #11 am: 24.02.12 - 11:47:13 »
DateOnly gibt ja auch einen String zurück!

vaktdat = Today ist kürzer - und korrekt!

Bernhard

PS: Und richtig - And ist LS,  das Pendant in Formelsprache.

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #12 am: 24.02.12 - 12:52:43 »
Es bleibt spannend.... >:(

Jetzt wird der code in der If Abfrage gar nicht mehr gezogen. Bekomme also auf dnum den Wert 0. Kann im Debuger auch nachvollzogen werden. Er springt immer gleich auf EndIf.

Screenshots vom Debugger, siehe Anhänge.
Gruß
Volker

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #13 am: 24.02.12 - 12:57:02 »
ach so ja, und so sieht das Script jetzt aus:

   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim dNum As Double
   Dim vaktdat As Variant
   Dim vErinDat As Variant
   Dim sErinJa As String
                  
   Set db = session.Currentdatabase
   Set view = db.GetView ("AnwendungenKopf")
   vaktdat = Today
         
   Set doc = view.Getfirstdocument()
   While Not (doc Is Nothing)
      sErinJa = doc.App_LIC_Erinnerung_JaNein(0)
      vErinDat =  doc.App_Lic_Erinnerung_Dat(0)
      If serinJa <> "Ja" and vErinDat <> vaktdat Then
         dNum = dNum +1
         Print "Hallo"            
      End If   
      Set doc = view.Getnextdocument(doc)   
   Wend
   Print "Es ist / sind " & dNum & " Dokumente verarbeitet worden."
Gruß
Volker

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #14 am: 24.02.12 - 12:59:00 »
serinJa ist lt. Debugger "Ja", wie soll er da in die Schleife gelangen?

Bernhard

Offline wittmann_franz

  • Aktives Mitglied
  • ***
  • Beiträge: 241
  • Geschlecht: Männlich
Re: If Abfrage falsch
« Antwort #15 am: 24.02.12 - 13:08:08 »
oh jeh,
da Stand ich ja wohl mächtig auf der Leitung

mit
If serinJa = "Ja" and vErinDat = vaktdat Then
klappts dann auch so wie es sein soll.

Danke noch mal an alle für die Hilfe und ein schönes Wochenende
Gruß
Volker

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz