Autor Thema: Variable mit einem Wert vergleichen  (Gelesen 2725 mal)

Offline Manolo

  • Frischling
  • *
  • Beiträge: 26
  • Me gusta este Forum mucho!!!!!!!!!
Variable mit einem Wert vergleichen
« am: 28.07.04 - 14:42:19 »
Hallo Leute!!!!

Ich habe da ein kleine Lotusscript problem, wenn ich den Inhalt vom Feld "StrPartNr" mit dem string inhalt vergleiche macht er immer ein "End If"

Nun gibt es eine anderen weg ein feld mit dem stringinhalt zu vergleichen.

Nun ein muss ich noch sagen in dem string sind die Werte mit "$" getrennt.

Set db2 = New notesdatabase(db1.server,doc.DbName(IdxDb))
Set view2 = db2.GetView(doc.ViewNameKey(0))
Set doc2 = view2.GetFirstDocument
Set item = doc2.Item( "PMailingssearch" )
      
If item.Contains(StrPartNr) Then
Goto Addtabelle
End If

danke im voraus.
Manolo

Glombi

  • Gast
Re:Variable mit einem Wert vergleichen
« Antwort #1 am: 28.07.04 - 14:44:48 »
Es muss so heissen:
Set item = doc2.GetFirstItem( "PMailingssearch" )


Was meinst Du mit "er macht ein End If" ?

Andreas

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Variable mit einem Wert vergleichen
« Antwort #2 am: 28.07.04 - 14:48:09 »
Du scheinst eine Stringliste verwenden zu wollen? Das geht aber so nicht. Da musst Du die Werte in einen Array oder eine Liste geben und ich weiss jetzt nicht auswendig, ob notesitem.contains damit umgehen kann (dafür gibts aber die Designer-Hilfe :) )

und ... mit einem Goto aus einem If-Block herausspringen? Ich nehme mal an, dass der Compiler schlau genug ist, diesen Strukturfehler zu korrigieren und keine Reste auf dem Stack zurückzulassen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Manolo

  • Frischling
  • *
  • Beiträge: 26
  • Me gusta este Forum mucho!!!!!!!!!
Re:Variable mit einem Wert vergleichen
« Antwort #3 am: 28.07.04 - 14:56:36 »
Hi merci für die schnelle Antwort!!

Sorry war ein tipp fehler von mit
"Set item = doc2.GetFirstItem( "PMailingssearch" )"

Das heisst das wenn der String(Item) z.b:
"item=400$sdfgs$sdgf$sdgf$sdfg" und das Feld "StrPartNr=400"

dann gibt es false das heisst er macht das if fertig = "End If"

Auch wenn der wert 400 im string vorhanden ist sollte es doch true sein oder sehe ich das falsch?

Glombi

  • Gast
Re:Variable mit einem Wert vergleichen
« Antwort #4 am: 28.07.04 - 15:00:05 »
Wenn das Feld keine Mehrfachwerte hat, kannst Du es so machen (das mit dem Goto lasse ich mal)

Set db2 = New notesdatabase(db1.server,doc.DbName(IdxDb))
Set view2 = db2.GetView(doc.ViewNameKey(0))
Set doc2 = view2.GetFirstDocument
     
if Instr(doc.PMailingssearch(0),StrPartNr) > 0 then
 Goto Addtabelle
End If

Besser wäre evtl:
if strleft(doc.PMailingssearch(0),"$") = StrPartNr then
 Goto Addtabelle
End If

Dann vergleicht er nur den Teil bis zum ersten "$".

Andreas
« Letzte Änderung: 28.07.04 - 15:01:33 von Glombi »

Offline Manolo

  • Frischling
  • *
  • Beiträge: 26
  • Me gusta este Forum mucho!!!!!!!!!
Re:Variable mit einem Wert vergleichen
« Antwort #5 am: 28.07.04 - 15:53:38 »
Glombi danke dir es geht!!!!

Nun habe ich aber noch ein frage.

Wenn aber der string so aussieht:
"400$sdfgs$sdgf$sdgf$sdfg;821$sdfgs$sdgf$sdgf$sdfg;90$sdfgs$sdgf$sdgf$sdfg"

Gibt es dann auch ein lösung, sorry wenn ich dich nerve oder so ich bin halt noch nicht so Lotus Script spezi.

Glombi

  • Gast
Re:Variable mit einem Wert vergleichen
« Antwort #6 am: 28.07.04 - 15:56:13 »
Dann doch so:
if Instr(doc.PMailingssearch(0),StrPartNr) > 0 then
Goto Addtabelle
End If

Es wird der gesamte String durchsucht, ob StrPartNr dort vorkommt.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Variable mit einem Wert vergleichen
« Antwort #7 am: 28.07.04 - 15:56:32 »
Das m acht keinen Unterschied zu den beiden Lösungen, die Andreas gepostet hat.

Bernhard

Offline Manolo

  • Frischling
  • *
  • Beiträge: 26
  • Me gusta este Forum mucho!!!!!!!!!
Re:Variable mit einem Wert vergleichen
« Antwort #8 am: 28.07.04 - 16:10:38 »
Sorry wenn ich das so sagen darf¨.......

Aber der code ist der selber wie der oberer, was ich bemerkt habe ist das er nur der anfang vom string absucht und nicht der ganze. Komisch liegt es das ich ein ; punkt Strich drin habe.

Glombi

  • Gast
Re:Variable mit einem Wert vergleichen
« Antwort #9 am: 28.07.04 - 16:16:20 »
Poste doch mal den Code, den Du geschrieben hast.

Offline Manolo

  • Frischling
  • *
  • Beiträge: 26
  • Me gusta este Forum mucho!!!!!!!!!
Re:Variable mit einem Wert vergleichen
« Antwort #10 am: 28.07.04 - 16:33:31 »
Wie versprochen mein Code:

Sub Click(Source As Button)
   
   Dim ws As New notesuiworkspace
   Dim session As New notessession
   Dim uidoc As notesuidocument
   
   Dim db1 As Notesdatabase
   Dim db2 As Notesdatabase
   Dim doc As notesdocument
   Dim doc1 As notesdocument
   Dim doc2 As notesdocument
   Dim view2 As Notesview
   Dim rtitem As NotesRichtextItem
   Dim rtitem2 As NotesRichtextItem
   Dim rtstyle As NotesRichtextStyle
   Dim item As NotesItem
   
   
   
   Dim IdxDbMax As Integer
   Dim IdxDb As Integer
   
   Dim PartNr As Long
   Dim DatVon As Variant
   Dim DatBis As Variant
   Dim ReNr As Long
   Dim StrPartNr As String
   Dim StrDatVon As String
   Dim StrDatBis As String
   Dim StrClass As String
   Dim StrKlasse As String
   Dim StrType As String
   Dim StrReNr As String
   Dim StrName As String
   Dim StrVorname As String
   Dim content As String
   
   Dim x As Integer
   Dim AzDoc1 As Long
   Dim AzDoc2 As Long
   
   Dim BoxTitel As String
   Dim xLng As Long
   Dim xStr As String
   Dim StrQuery As String
   
   BoxTitel = "SearchFunktion"
   
   Set uidoc = ws.currentdocument
   Set doc = uidoc.Document
   StrPartNr = doc.SearchPartnerNr(0)
   StrDatVon = doc.SearchDocDatumVon(0)
   StrDatBis = doc.SearchDocDatumBis(0)
   StrClass = doc.SearchDocClass(0)
   StrKlasse = doc.SearchDocKlasse(0)
   StrType = doc.SearchDocType(0)
   StrName = doc.SearchName(0)
   StrVorname = doc.SearchVorname(0)
   
   '--
   '-- Partner Nummer
   '--
   If StrPartNr = "" Then Goto ErrPartnerNr   
   If Isnumeric(StrPartNr) Then
      On Error Goto ErrPartNrOverflow
      PartNr = Clng(StrPartNr)
      On Error Goto errorX
      If PartNr = 0 Then
         Goto ErrPartNr0
      End If
      '-- ohne führende Nullen
      StrPartNr = Cstr(PartNr)
   Else
      Goto ErrPartnerNr
   End If
   '--
   '-- Doc Datum Von
   '--
   If StrDatVon <> "" Then
      If Isdate(StrDatVon) Then
         DatVon = Cdat(StrDatVon)
      Else
         Goto ErrDatumVon
      End If
   End If
   '--
   '-- Doc Datum Bis
   '--
   If StrDatBis <> "" Then
      If Isdate(StrDatBis) Then
         DatBis = Cdat(StrDatBis)
      Else
         Goto ErrDatumBis
      End If
   End If
   '--
   
   '--
   '-- Tabelle abfüllen
   '--
   IdxDbMax = -1
   Forall DbNameX In doc.DbName
      IdxDbMax = IdxDbMax + 1
   End Forall
   '--
   '-- open Db nach Doc.klasse
   '--
   IdxDb = 0
   For x = 1 To IdxDbMax
      If StrClass = doc.PartNrV(x) Then
         idxDb = x
         Exit For
      End If
   Next
   '--
   '-- set rtitem
   '--
   Set db1 = session.CurrentDatabase
   Set doc1 = New notesdocument(db1)
   Set rtstyle = session.CreateRichTextStyle
   
   If (doc1.hasitem("Body")) Then
      Set rtitem = doc1.getfirstitem("Body")
   Else
      Set rtitem = New notesrichtextitem(doc1, "Body")
   End If
   
   rtstyle.Bold = False
   rtstyle.NotesColor = COLOR_BLACK
   'rtstyle.NotesFont = FONT_HELV
   rtstyle.Italic = False
   
   Call rtitem.AppendStyle(rtstyle)
   
   '--
   '-- Search DB
   '--
   AzDoc1 = 0
   AzDoc2 = 0
   Set db2 = New notesdatabase(db1.server,doc.DbName(IdxDb))
   Set view2 = db2.GetView(doc.ViewNameKey(0))
   Set doc2 = view2.GetFirstDocument
   
   
   Do While Not (doc2 Is Nothing)
      'Set item = doc2.getfirstItem( "PMailingssearch" )
      
      Print StrPartNr
      
      If Instr(doc2.PMailingssearch(0),StrPartNr) > 0 Then
         Goto Addtabelle
      End If
      Goto NextRead
      
      'If Strleft(doc2.PMailingssearch(0), "$") = StrPartNr Then
      '   Goto Addtabelle
      'End If
            
      '-- add neues tabellen element
      '--
Addtabelle:
      AzDoc1 = AzDoc1 + 1
      rtstyle.FontSize = 8
      Call rtitem.AppendStyle(rtstyle)
      
      Call rtitem.AppendDocLink(doc2,"")
      Call rtitem.addtab(1)
      
      If Isdate(doc2.Createdate(0))  Then
         Call rtitem.appendtext(Left(Cstr(doc2.PDatum(0)), 10))
      End If
      Call rtitem.addtab(1)
      
      'Call rtitem.AppendStyle(rtstyle)
      'Call rtitem.appendtext(doc2.DocKlasse(0))
      'Call rtitem.addtab(1)
      
      Call rtitem.appendtext(doc2.DocType(0))
      Call rtitem.addtab(1)
      
      Call rtitem.appendtext(doc2.Title(0))
      Call rtitem.addtab(1)
      
      Call rtitem.appendtext(Cstr(doc2.RechnungsNr(0)))
      Call rtitem.addnewline(2)
      
NextRead:
      Set doc2 = view2.GetNextDocument(doc2)
      
      
   Loop
   
   '--
   '-- Wurden Documente gefunden
   '--
   If AzDoc1 = 0 Then
      Goto ErrNoDoc      
   End If
   
   Call doc1.replaceitemvalue("Form","SearchResults")
   
   '-
   '- String Query abfüllen
   '-
   StrQuery = "Partner-Nr. = " & StrPartNr
   If StrDatVon <> "" Then
      StrQuery = StrQuery & ", Datum von = " & StrDatVon
   End If
   If StrDatBis <> "" Then
      StrQuery = StrQuery & ", Datum bis = " & StrDatBis
   End If
   'If StrKlasse <> "" Then
   '   StrQuery = StrQuery & ", Dokument-Klasse = " & StrKlasse
   'End If
   If StrType <> "" Then
      StrQuery = StrQuery & ", Dokument-Typ = " & StrType
   End If
   If StrReNr <> "" Then
      StrQuery = StrQuery & ", Rechnungs-Nr. = " & StrReNr
   End If
   Call doc1.replaceitemvalue("Current", "Suchkriterien: " & StrQuery)
   
   Call rtitem.CopyItemToDocument( doc1, "$$Body" )
   Call ws.EditDocument(True, doc1)
   
   Goto ende
   
ErrNoDoc:
   StrQuery = "Unter dem Partner  " & StrPartNr
   If AzDoc2 > 0 Then
      StrQuery = StrQuery & " und folgender Selektion:" & Chr$(13)
      'If StrKlasse <> "" Then
      '   StrQuery = StrQuery & "Dokument-Klasse = " & StrKlasse & Chr$(13)
      'End If
      If StrType <> "" Then
         StrQuery = StrQuery & "Dokument-Typ = " & StrType & Chr$(13)
      End If
      If StrReNr <> "" Then
         StrQuery = StrQuery & "Rechnungs-Nr. = " & StrReNr & Chr$(13)
      End If
      If StrDatVon <> "" Then
         StrQuery = StrQuery & "Datum von = " & StrDatVon & Chr$(13)
      End If
      If StrDatBis <> "" Then
         StrQuery = StrQuery & "Datum bis = " & StrDatBis & Chr$(13)
      End If
      StrQuery = StrQuery & "wurden keine Dokumente gefunden."
      StrQuery = StrQuery & Chr$(13) & " " & Chr$(13) & "Bitte andere Selektion wählen."
   Else
      StrQuery = StrQuery & " wurden keine Dokumente gefunden."
   End If
   Messagebox StrQuery,,BoxTitel      
   uidoc.gotoField("SearchPartnerNr")
   Goto ende
ErrPartnerNr:
   Messagebox "Eingabe PartnerNr nicht korrekt",,BoxTitel
   uidoc.gotoField("SearchPartnerNr")
   Goto ende
ErrPartNr0:
   Messagebox "PartnerNummer 0 wird nicht verarbeitet",,BoxTitel
   uidoc.gotoField("SearchPartnerNr")
   Goto ende
ErrPartNrOverflow:
   Messagebox "Zu hoher Wert für PartnerNummer, bitte kleineren Wert eingeben",,BoxTitel
   uidoc.gotoField("SearchPartnerNr")
   Resume ende
   Goto ende
ErrDatumVon:
   Messagebox "Eingabe Datum Von nicht korrekt",,BoxTitel
   uidoc.gotoField("SearchDatumVon")
   Goto ende
ErrDatumBis:
   Messagebox "Eingabe Datum Bis nicht korrekt",,BoxTitel
   uidoc.gotoField("SearchDatumBis")
   Goto ende
ErrRechnungsNr:
   Messagebox "Eingabe Rechnungs Nummer nicht korrekt",,BoxTitel
   uidoc.gotoField("SearchDocRechnungsNr")
   Goto ende
ErrReNrOverflow:
   Messagebox "Zu hoher Wert für RechnungsNummer, bitte kleineren Wert eingeben",,BoxTitel
   uidoc.gotoField("SearchDocRechnungsNr")
   Resume ende
   Goto ende
errorX:
   Messagebox "Error" & Str(Err) & ": " & Error$,,BoxTitel
   Goto ende
ende:
   
End Sub
« Letzte Änderung: 28.07.04 - 16:39:52 von Manolo »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Variable mit einem Wert vergleichen
« Antwort #11 am: 28.07.04 - 16:46:16 »
Kann es sein, dass es sich bei Deinem PMailingssearch nicht um einen String, sondern ein String-Array handelt ?

Bernhard

Glombi

  • Gast
Re:Variable mit einem Wert vergleichen
« Antwort #12 am: 28.07.04 - 16:48:46 »
Das habe ich mir auch überlegt. Evtl. ist PMailingssearch ein Feld mit Mehrfachwerten?
Falls ja, müsste man mit einer Forall-Schleife arbeiten.

Forall PMailingssearch in doc2.PMailingssearch
 if instr(PMailingssearch,StrPartNr) > 0 then
...   'mit goto aus If und Forall (nicht die feine Art)
 end if
end forall

Andreas
« Letzte Änderung: 28.07.04 - 16:51:46 von Glombi »

Offline Manolo

  • Frischling
  • *
  • Beiträge: 26
  • Me gusta este Forum mucho!!!!!!!!!
Re:Variable mit einem Wert vergleichen
« Antwort #13 am: 29.07.04 - 09:39:52 »
Hallo!!

Ich danke euch, ihr habt mir wirklich geholfen.

Der Code läuft, so geil.

Ich werde dann den fertigen code posten falls ihr ihn wollt.

Der Code ist für eine SearchDB in Domino Doc, das heisst er sucht mehrere DB's ab.

Also vielen Dank nochmals.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz