none
RegExp Problem mit Definition einer Variablen - Access 2010

    Frage

  • Hallo

    ich habe Texte, wo Zeichenfolgen enthalten sind, die ich durch andere Zeichen ersetzen möchte. Jetzt habe ich mir meine alte vbscript-Funktion ausgegraben. Es funktioniert auch in Access, allerdings nur, wenn ich Option explicit auskommentiere.

    Option Compare Database
    Option Explicit
    
    Function RepSmal(str As String, a As String, b As String)
    Dim smArray
    smArray = _
    Array( _
    Array("\[anzahl\]", a), _
    Array("\[uber\]", b) _
    )
    
    
    If str <> "" Then
      Dim objRegSmal, i,RepSmal_b
      Set objRepSmal = New RegExp
     
      For i = 0 To UBound(smArray)
      objRepSmal.Pattern = (smArray(i)(0))
      ' --- Pattern austauschen
      objRepSmal.IgnoreCase = True
      objRepSmal.Global = True
      RepSmal_b = smArray(i)(1)
      ' --- Pattern replacen
      str = objRepSmal.Replace(str, RepSmal_b)
      Next
        RepSmal = str
      Else
        RepSmal = ""
      End If
      End Function
      
    Sub testenB()
    Dim c As String
    c = "Dies ist ein Text mit [anzahl] Seminaren. Der Titel ist [uber] und kann testen"
    Debug.Print RepSmal(c, "10", "willi wichtig")
    End Sub
    

    Diese Zeile wird angemeckert, da wäre die Variable nicht definiert.

    Set objRepSmal = New RegExp

    Wo ist der Fehler?


    Liebe Grüße, die Luzie!


    • Bearbeitet Luzie Samstag, 5. Mai 2012 09:31
    Samstag, 5. Mai 2012 09:29

Antworten

  • Hi

    sorry, hat sich erledigt, da war ein Tippfehler, so was Blödes :)


    Liebe Grüße, die Luzie!

    • Als Antwort markiert Luzie Samstag, 5. Mai 2012 09:48
    Samstag, 5. Mai 2012 09:47

Alle Antworten

  • Am 05.05.2012 schrieb Luzie:

    ich habe Texte, wo Zeichenfolgen enthalten sind, die ich durch andere Zeichen ersetzen möchte. Jetzt habe ich mir meine alte vbscript-Funktion ausgegraben. Es funktioniert auch in Access, allerdings nur, wenn ich Option explicit auskommentiere.

    Option Compare Database
    Option Explicit
    
    Function RepSmal(str As String, a As String, b As String)
    Dim smArray

    Auch hier fehlt eine saubere Dimensionierung. VBScript != VBA.

    smArray = _ Array( _ Array("\[anzahl\]", a), _ Array("\[uber\]", b) _ ) If str <> "" Then Dim objRegSmal, i

    Du mußt ordentlich deklarieren. Dim i as Integer Das zweite würde ich als Object deklarieren. Ob das so passt, mußt Du ausprobieren. Dim objRepSmal as Object.

    Diese Zeile wird angemeckert, da wäre die Variable nicht definiert. [code] Set objRepSmal = New RegExp

    Wo ist der Fehler?

    Dimensioniere immer die Variablen ordentlich, auch im VB Script.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Samstag, 5. Mai 2012 09:39
  • Hi

    sorry, hat sich erledigt, da war ein Tippfehler, so was Blödes :)


    Liebe Grüße, die Luzie!

    • Als Antwort markiert Luzie Samstag, 5. Mai 2012 09:48
    Samstag, 5. Mai 2012 09:47
  • Hallo

    erstmal Danke für die Antwort.

    Ja, ich weiß, ich habe das Scirpt auch weiter bearbeitet. Es tut mir auch leid, dass ich es hier so unsauber gepostet habe. Auch am Schluss habe ich das Objekt zerstört. Die Variablen hatte ich auch ordentlich deklariert, aber im Zuge der Fehlersuche wieder verändert. Aber jetzt ist alles ordentlich. Und der Fehler war halt ein Tippfehler.

    Allerdings in meinen alten asp-Anwendungen in vbscript war das Dimensionieren so nicht möglich, dort konnte man nur das Deklarieren mit Option Explicit erzwingen. Dim Variable as string - das ging net. Man konnte höchsten den Wert einem String oder einem integer zuordnen mit cstr() oder cint() oder cDate(). In vb.net ist das zum Glück ganz anders. Da muss alles deklariert und dimensioniert werden, sogar die Funktionen.

    Also dann :)


    Liebe Grüße, die Luzie!

    Samstag, 5. Mai 2012 11:54
  • Am 05.05.2012 schrieb Luzie:

    sorry, hat sich erledigt, da war ein Tippfehler, so was Blödes :)

    Dann poste doch bitte das korrigiert vollständige Script. Danke.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
    Reg2xml:  http://www.reg2xml.com - Registry Export File Converter

    Samstag, 5. Mai 2012 19:55
  • Hallo Winfried,

    kein Problem :)

    Option Compare Database
    Option Explicit
    
    Function mRepSmal(ByVal str As String, _
                        ByVal Anzahl As String, _
                        ByVal Link As String)
    Dim smArray
        smArray = _
            Array( _
            Array("%anzahl%", Anzahl), _
            Array("%link%", Link) _
            )
    
    If str <> "" Then
      Dim objRepSmal As New RegExp
      Dim I As Integer
    
      
      Set objRepSmal = New RegExp
      For I = 0 To UBound(smArray)
      
          objRepSmal.Pattern = (smArray(I)(0))
          ' --- Pattern austauschen
          objRepSmal.IgnoreCase = True
          objRepSmal.Global = True
        
          ' --- Pattern replacen
          str = objRepSmal.Replace(str, smArray(I)(1))
      Next
        mRepSmal = str
      Else
        mRepSmal = ""
      End If
      Set objRepSmal = Nothing
      End Function
      


    Liebe Grüße, die Luzie!

    Sonntag, 6. Mai 2012 09:46