Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Spalter am 22.11.07 - 16:25:14
-
Hallo zusammen,
kann man mit com aus Excel heraus die Search-Methode anwenden.
Bin bisher alle Docs der Notes DB durchgelaufen und habe über eine if-Abfrage die betreffenden Docs selektiert.
Möchte jetzt aber die Docs per Search-Methode ziehen. Dabei tritt in VBA das Problem auf, daß die @-Funktionen in der Searchformula nicht interpretiert werden können.
Was mache ich falsch oder funzt das nicht?
Bin für jede Antwort dankbar
Gruß
Spalter
-
Kommt eine Fehlermeldung? Was für eine Suchformel hast du? Ich glaube zumindest, dass search auch per COM funken müsste. Was passiert, wenn du die Suchformel in eine Ansicht als Auswahl packst?
-
:(
Hallo MadMetzger,
ich kann in der Notes-DB nichts ändern. Muß von extern ran, in dem Fall über Excel.
Der VBA-Editor meckert, wenn ich @-Funktinen in die Searchformel packe. Die brauche ich aber, um z.B. ein Zahlenfeld in einen String umzuwandeln.
Gruß
Spalter
-
Und was genau meckert er? Kann es vielleicht auch einfach nur mit irgendwelchen Anführungsstrichen-Problemen zusammenhängen?
Hm... Kannst du vielleicht eine private Ansicht in der DB anlegen zum Testen? Das würde die Sache zumindest erleichtern... Oder kommst du überhaupt nicht an die DB ran?
Du kannst mich übrigens auch mit Markus ansprechen... ;) Und wie spricht man dich an?
-
1) Code!
2) Suchausdruck!
-
Ich glaube zumindest, dass search auch per COM funken müsste.
Das müsste nicht nur, dass funktioniert. Ich habe das selbst mal gemacht.
Wie Martin schon geschrieben hat, ohne Code (mit Suchformel) kommen wir nicht weiter.
Axel
-
Das sehe ich genauso... Ich wollte nur nicht sagen, das geht, ohne selbst in die Doku geschaut haben zu können.
-
???
Hallo zusammen,
hier ist mal der Code des Macros.
Wenn ich die Suchformel aktiviere, bekomme ich einen Syntax-Fehler. Weder die Klammer noch die @-Zeichen können interpretiert werden.
Bin für jede Antwort dankbar.
Gruß
Spalter
Public Sub Notes()
Dim Session As Object
Set Session = CreateObject("Notes.NotesSession")
Dim db As Object
Dim dc As Object
Dim dateTime As Object
Dim view As Object
Dim doc As Object
Dim x As Long
Dim Feld1 As Object
Dim Feld2 As Object
Dim Feld3 As Object
Dim Feld4 As Object
Dim Feld5 As Object
Dim Feld6 As Object
Dim rwindex As Integer
Dim colindex As Integer
Dim Formel As String
Dim Formel1 As String
'++++++++++++++++++++++
Dim Kinfo As String
Dim Kf As String
'geplant:
'*******************************************************
'searchFormula$ = {@Left(@Text(Feldx);2) = "99"}
'Set dc = Wdb.Search(searchFormula$, dateTime, 0)
'Set doc = dc.Getfirstdocument
'*******************************************************
'Bisher: durchlaufen aller Docs einer View
Set db = Session.GETDATABASE("server", "verzeichnis\db.NSF")
'Set db = Session.GETDATABASE("", "db.NSF")
Set view = db.GETVIEW("(AKTIV)")
Set doc = view.GETFIRSTDOCUMENT
x = 2
While Not (doc Is Nothing)
Set Feld1 = doc.GETFIRSTITEM("Feld1")
Kinfo = Right(Left(Feld1.Text, 5), 2)
Set Feld2 = doc.GETFIRSTITEM("Feld2")
Set Feld3 = doc.GETFIRSTITEM("Feld3")
Set Feld6 = doc.GETFIRSTITEM("Feld6")
Kf = Feld6.Text
Set Feld4 = doc.GETFIRSTITEM("Feld4")
Set Feld5 = doc.GETFIRSTITEM("Feld5")
If Kinfo = "99" And Kf = "11111111" Then
Cells(x, 1) = Feld1.Text
Cells(x, 2) = Feld3.Text
Cells(x, 3) = Feld4.Text
Cells(x, 4) = Feld6.Text
'Cells(x, 5) = Feld6.Text
If Feld5.Text = "" Then
Feld5.Text = 0
Cells(x, 7) = "kein Wert"
End If
Cells(x, 12) = Feld5.Text
Cells(x, 14) = Kinfo
x = x + 1
End If
Set doc = view.GETNEXTDOCUMENT(doc)
Wend
End Sub
-
Versuch's mal so:
...
searchFormula$ = "@Left(@Text(Feldx);2) = ""99"""
Set dc = Wdb.Search(searchFormula$, dateTime, 0)
....
Axel
-
Das liegt wohl an der Art, wie Stringliterale in VBA aussehen müssen. Er sagt mir klar, dass die geschweifte Klammer fehl am Platze ist. Du musst das Literal in Anführungszeichen schreiben und die innerhalb des Literals verwendeten Anführungszeichen über deren Zeichencode einbinden.
Mit den Anführungszeichen geht wohl auch auf die einfachere Art von Axel...
-
Versuch's mal so:
...
searchFormula$ = "@Left(@Text(Feldx);2) = ""99"""
Set dc = Wdb.Search(searchFormula$, dateTime, 0)
....
Axel
:( Hallo Axel,
das mit den Anführungszeichen funzt so leider nicht. Da habe ich einen Syntax-Fehler.
Gruß
Spalter
Das liegt wohl an der Art, wie Stringliterale in VBA aussehen müssen. Er sagt mir klar, dass die geschweifte Klammer fehl am Platze ist. Du musst das Literal in Anführungszeichen schreiben und die innerhalb des Literals verwendeten Anführungszeichen über deren Zeichencode einbinden.
Mit den Anführungszeichen geht wohl auch auf die einfachere Art von Axel...
??? Hallo MadMetzger,
wie kann ich denn den Zeichencode der Anführungszeichen übergeben?
Bin für jede Antwort dankbar.
Gruß
Spalter
-
Versuch's mal so:
...
searchFormula$ = "@Left(@Text(Feldx);2) = ""99"""
Set dc = Wdb.Search(searchFormula$, dateTime, 0)
....
Axel
:( Hallo Axel,
das mit den Anführungszeichen funzt so leider nicht. Da habe ich einen Syntax-Fehler.
Ich hatte das bei mir getestet und bekam keinen Fehler. Wie sieht denn deine Formel aus?
Den Zeichencode für die Anführungszeichen übergibst du mit Chr$(34).
Axel
-
::)
Sorry Axel,
funzt bei mir natürlich auch. Hatte die doppelten Anführungszeichen nicht erkannt.
Gruß und schönen Abend
Spalter