Autor Thema: Verwendung von Strings in der DB-Search-Methode  (Gelesen 7266 mal)

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Verwendung von Strings in der DB-Search-Methode
« am: 17.05.10 - 08:56:00 »
 :( Hallo zusammen,

habe nach längerer Zeit noch mal ein Problem mit der DB-Search-Methode.

Hintergrund:

Ich möchte dieverse Felder in Notes-Docs aus einem Excelmacro heraus bestücken. Die Feldwerte liegen als Excel-Datei vor. In der ersten Spalte ist der eindeutige Schlüssel zur Idendifikation der Notes-Dokumente - Aufbau als String "xx.xxx.Txxx".

Umsetzung:

Ich versuche das ganze aus dem Macro mit der DB-Search-Methode anzugehen. Verwende ich diesen Search-String, funzt das einwandfrei. Ich erhalte genau einen Treffer - so wie es sein sollt.

searchFormula$ = " PrfFeldNr = ""xx.xxx.Txx"" "

Versuche ich hingegen, den Schlüssel aus der ersten Spalte der Excel-Datei zu ziehen (die Zellen sind als Text formatiert), 

A = CStr(Cells(x, 1))

searchFormula$ = " PrfFeldNr = A "

erhalte ich einen Count-wert von z.B. 42, obwohl in der Notes-DB nur ein Dokument mit dem Schlüssel existiert.

Welchen Fehler begehe ich eventuell? Wie kann ich die Suchwerte richtig einlesen? Gibt es eine Alternative?

Bin für jede Antwort dankbar.

Gruß Spalter
 

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #1 am: 17.05.10 - 08:59:09 »
searchFormula$ = {PrfFeldNr = "} & A & {"}

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #2 am: 17.05.10 - 09:04:23 »
 :-\ Hallo Peter,

danke für die schnelle Antwort, aber die geshweifte Klammer schuckt VBA nicht. Da bekomme ich einen Syntaxfehler.

Gruß
Spalter

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #3 am: 17.05.10 - 09:12:24 »
Was ist mit der Pipe ("|") ?
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #4 am: 17.05.10 - 09:30:14 »
 :(Hallo Dirk,

mit der Pipe funzt das leider auch nicht - wieder Sytaxfehler.

Gruß
Spalter

Mitch

  • Gast
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #5 am: 17.05.10 - 10:19:35 »
Ich versuchs auch mal:

searchFormula$ = "PrfFeldNr = \"" & A & "\""

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #6 am: 17.05.10 - 10:28:27 »
War es nicht einfach nur "" ohne \ davor?

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

Mitch

  • Gast
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #7 am: 17.05.10 - 10:36:25 »
Da hast du recht! Also:

searchFormula$ = "PrfFeldNr = """ & A & """"

BigWim

  • Gast
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #8 am: 17.05.10 - 10:50:13 »
Ansonsten würde ich es so probieren:

searchFormula$ = "PrfFeldNr = " + chr$(34) +  A +chr$(34)


Markus

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #9 am: 17.05.10 - 11:23:06 »
Hallo Mitch,

wenn ich Deinen Vorschlag nehme, erhalte ich einen Notes Error Formelfehler. Die Fomel läuft durch, wenn jeweils eines der inneren Anführungszeichen wegnehme. Die Doc-Collection ist aber leider leer.

Gruß
SPalter

Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #10 am: 17.05.10 - 11:37:26 »
Na dann ist Debugging angesagt ;-)

Gib Dir mal mit Msgbox den Searchstring aus, was kommt da?
Müßte diese Search Deiner Meinung nach etwas finden?

Poste mal den gesamten VBA-Code.

Ansonsten: Gehe doch einfach über einen Notes-Link.
notes:\\meinserver\meinedb\viewsortiertnachkey\key
Wie wäre das?

Grüße David
David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

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: Verwendung von Strings in der DB-Search-Methode
« Antwort #11 am: 17.05.10 - 13:05:55 »
Ohne weitere Info's wie den Code das Makros ist das nur ein Gestochere im Nebel.

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

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #12 am: 17.05.10 - 14:37:15 »
Hallo Axel,  ???

Ist natürlich klar. Vielleicht verflüchtigt sich der Nebel ein wenig. Das Problem besteht darin, dass ich eine dynamische Suche durchführen möchte, die bei jeder Iteration einen neuen Wert aus einer Exceltabelle zieht und diesen dann mittels Search in der Notes-DB auffinden soll.

Gruß
Spalter

----------------------------Schnipp schnipp-----------------------

Dim Session As Object
Set Session = CreateObject("Notes.NotesSession")

Dim db As Object
Dim dc As Object
Dim view As Object
Dim doc As Object



Dim PruefFeldNr As String
Dim Feld2 As String
Dim Feld3 As String
Dim Feld4 As String
Dim Feld5 As String
Dim key As String
Dim AAA As String



Dim itermax As Integer

itermax = InputBox("Geben Sie die Zahl der Iterationen an:")


Set db = Session.GETDATABASE("", "database.NSF")

If db.IsOpen = True Then
          'Fertig zum mailen!
     Else
         db.Open
     End If

x = 5

While x < itermax

key = Cells(x, 1)


Feld2 = Cells(x, 2)
Feld3 = Cells(x, 3)
Feld4 = Cells(x, 4)
Feld5 = Cells(x, 5)

MsgBox key

    'searchFormula$ = " PrfFeldNr = ""11.035.T001"" "
    'Die SearchFormular funzt - Ergebnis 1 Doc.

    searchFormula$ = " PrfFeldNr = ""key"" "
    'Die SearchFormular funzt nicht - Ergebnis 42 Docs.
    'Der Wert der Searchformula$ ist in diesem Fall PrfFeldNr = Key, nicht aber der zugeweiesene Wert.
     
     
   
   
        Set dc = db.Search(searchFormula$, Nothing, 0)
   
    MsgBox dc.Count
   
    MsgBox searchFormula$
   
    If dc.Count = 0 Then
    MsgBox ("Ihre Auswahl erfolgte ohne Treffer")
    End If

    Set doc = dc.GetFirstDocument

y = 5
While Not doc Is Nothing

doc.Teil_Sachgebiet = Feld2


Call doc.Save(True, True)


Set doc = dc.GETNEXTDOCUMENT(doc)
y = y + 1
Wend

x = x + 1

Wend

----------------------------Schnipp schnipp-----------------------


Offline atbits

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • sei Du selbst die Veränderung, die Du Dir wünschst
    • atBits
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #13 am: 17.05.10 - 14:53:59 »
Versuche mal
Code
searchFormula$ = "PrfFeldNr = """" & key & """""

Achte auch drauf, dass keine unsinnigen Leerzeichen in Deinem Suchstring sind.

David Schiffer
================================
atBits GmbH & Co. KG - https://atbits.de
im Einsatz: Lotus Domino 8.5, 9, 10

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: Verwendung von Strings in der DB-Search-Methode
« Antwort #14 am: 17.05.10 - 15:19:23 »
Ich hab's mal probiert (Excel 2007 / Notes 8.5.1) und so hat's funktioniert:

...

x = 1

key = Cells(x, 1)

searchFormula$ = "PrfFeldNr = " & Chr$(34) & key & Chr$(34)

...

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

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re: Verwendung von Strings in der DB-Search-Methode
« Antwort #15 am: 17.05.10 - 15:27:13 »
 :)

Hallo Axel,

jetzt hats endlich gefunzt. Danke - nächstes Mal kommt der Code direkt mit - sorry.


Danke auch an alle anderen.

Gruß
Spalter

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz