Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: sja am 06.01.12 - 12:11:29

Titel: SearchFormula
Beitrag von: sja am 06.01.12 - 12:11:29
Hallo liebe AtnotesFreunde,

bitte um Hilfe, da ich schon verzweifelt bin, die Fehler im meiner SearchFormel zu finden:

Function searchFormula(Per As String)As String

   If Per = "jährlich" Then
      searchFormulaAufgabe = {(Form = "Aufgabe")&(RB_Per = "jährlich")&(Kontrakt_Nr = }& tmpKontrakt_Nr & { )& (Auftrag_Nr = } & tmpAuftrag_Nr & { )&(Jahr = }& aktJahr & { )&( RB_Art =}& tmpRB_ART & { )}
      MessageBox searchFormulaAufgabe

...

bei Ausfüharen bekomme ich folgendes: s. Anhänge

Vielen Dank für jede Hilfe im Voraus

Liebe Grüße

Sofia
Titel: Re: SearchFormula
Beitrag von: Mitch am 06.01.12 - 12:59:34
Heyho,

also mindestens im letzten Abschnitt stimmt was nicht, da fehlen die Zeichenkettenbegrenzer.

Also:

Code
RB_Art = System P

Zu:

Code
RB_Art = "System P"

Gruß,

Mitch
Titel: Re: SearchFormula
Beitrag von: sja am 06.01.12 - 13:38:25
Hallo Mitch,

herzlichen Dank für Deine Hilfe. Du hast absolut Recht: die Variable tmpRB_Art ist tatsächlich String

...
Dim tmpRB_Art As String      'Form "Vertrag" Bereitschaft-Art
...
For i = 1 To 13
...                           
   Call RB_Art(i)   'setzt tmpRB_Art Funktion für Berechnung des Rufbereitschaft-Artes                        
   MessageBox tmpRB_Art
...
Next

Function RB_Art (i As Integer) As String
   Select Case i
      Case 1 : tmpRB_Art = "Broadcasting"         
      Case 2 : tmpRB_Art = "RZ Nürnberg"         
      Case 3 : tmpRB_Art = "System i"         
      Case 4 : tmpRB_Art = "System P"            
      Case 5 : tmpRB_Art = "SBV+"               
      Case 6 : tmpRB_Art = "SBV+Backup"         
      Case 7 : tmpRB_Art = "SSC"               
      Case 8 : tmpRB_Art = "Storage"            
      Case 9 : tmpRB_Art = "TSM"            
      Case 10 : tmpRB_Art = "VMware"            
      Case 11 : tmpRB_Art = "NetApp/nSeries"      
      Case 12 : tmpRB_Art = "System x/Microsoft"         
      Case 13 : tmpRB_Art = "SAP"                  
   End Select   
End Function
         

In Debugger wird der Wert der Variable als String eingezeigt (s. Anhang).

Warum kommt die nicht als String in der SearchFormula? Was mache ich falsch?


Titel: Re: SearchFormula
Beitrag von: Mitch am 06.01.12 - 13:42:36
Doch doch, sie kommt als String in die Formel, sonst würde es schon früher knallen.

Aber... in der Formel wird sie dann nicht mehr als String deklariert und darum knallt es beim Ausführen der Formel.

Du musst also die Anführungszeichen selber dazu schreiben. So zum Beispiel:

Code
searchFormulaAufgabe = {(blahblahblah) & (RB_Art = "} & tmpRB_ART & {")}

Edit: Formel abgekürzt um Forenbreite nicht zu sprengen.
Titel: Re: SearchFormula
Beitrag von: sja am 06.01.12 - 14:12:59
perfekt, es funktioniert (s. Anhang), herzlichen Dank.

Aber ein Problem habe ich trotzdem.
Mir der SearchFormula soll überprüft werden ob ein Dokument mit diesen Werten existiert schon, wenn nicht, dann soll erstellt werden.

        Dim dcAufgabe As NotesDocumentCollection

   Call searchFormula(tmpRB_Per)
   Set dcAufgabe = db1.Search(searchFormulaAufgabe , Nothing ,0)
   If dcAufgabe.Count = 0 Then   
   ...
   ...
   End if
Und obwohl das Dokument mit diesen Werten existiert schon, weiß ich genau, habe auch mit Dokument-Eigenschaften die Werte überprüft, trotzdem wird das Dokument mit dieser SearchFormul nicht gefunden??
Titel: Re: SearchFormula
Beitrag von: Glombi am 06.01.12 - 14:29:54
Du kannst ja mal eine Ansicht erstellen, die die Searchformel als Zugriffsformel hat und nachsehen, ob das Dokument dort auftaucht. Falls nicht, stimmt was mit der Formel nicht. Vielleicht ist ja irgendeines der Zahlfelder doch ein Text?

Andreas
Titel: Re: SearchFormula
Beitrag von: sja am 06.01.12 - 14:41:12
Danke schön, Andreas. Eine sehr gute Idee. Ich probiere es.
Titel: Re: SearchFormula
Beitrag von: sja am 06.01.12 - 15:20:51

Ihr habt mein Leben gerettet! Alles funktioniert!

searchFormulaAufgabe = {(Form = "Aufgabe")&(RB_Per = "jährlich")&(Kontrakt_Nr = "}& tmpKontrakt_Nr & {" )& (Auftrag_Nr = "} & tmpAuftrag_Nr & {" )&(Jahr = }& aktJahr & { )&( RB_Art ="}& tmpRB_ART & {" )}

Noch mal herzlichen Dank Mitch, Andreas,
ich liebe atnotes, hat mir schon viel Mal geholfen!

Sofia
Titel: Re: SearchFormula
Beitrag von: Glombi am 06.01.12 - 15:24:03
Jeden Tag eine gute Tat  :)

Schön dass es funktioniert.

Andreas