none
Access VBA - SQL/WQL: Verwendung von Hochkommata in VBA-Strings

    Frage


  • Hallo zusammen,

    ich verwende VBA-Stringvariablen bei SQL-Abfragen (als Values für INSERT-Abfragen) und WMI-Abfragen (in WHERE-Klauseln).

    Diese VBA-Strings können Hochkommata ' enthalten.

    -----------------------

    Wie gehe ich damit um, sprich: wie schaffe ich es ...


    ... dass die VBA-Strings mit den Hochkommata bei INSERTs in Tabellenfelder reingeschrieben werden können?


    ... dass die WMI-Abfrage (SELECT nach Files und Subdirectories) nicht fehlerbedingt abbricht, wenn die VBA-Stringvariable in der WHERE-Klausel ein Hochkomma enthält?

    Ist kein Scherz - es gibt Kollegen, die verwenden Hochkommata in Windows-Verzeichnisnamen.
    Eigentlich sollte man dafür die Prügelstrafe am Arbeitsplatz wieder einführen :-)

    Gruß

    TD
    Montag, 19. Dezember 2016 12:44

Antworten

Alle Antworten

  • Hi,

    in der Regel verdoppelt man einfache Hochkommata für die Verwendung in SQL Server und Access. Probier es mal damit.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Montag, 19. Dezember 2016 13:34
    Moderator
  • Hallo Stefan,

    beim SQL-INSERT scheint es zu gehen, nicht aber bei der WMI-Abfrage, da kommt ein Automatisierungsfehler.

        Set objWMIService_03 = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
            
            Set colSubfolders = objWMIService_03.ExecQuery _
            ("Associators of {Win32_Directory.Name='" & funct_mask_specialcharacters(strFolderCurrent) & "'} " _
            & "Where AssocClass = Win32_Subdirectory " _
            & "ResultRole = PartComponent")
                
                For Each objFolder In colSubfolders
                
                     strFolderSub = objFolder.Name

    Function funct_mask_specialcharacters(var_string_01)
    
        var_string_01b = Replace(var_string_01, "'", "''")
        
        funct_mask_specialcharacters = var_string_01b
    
    End Function

    Das Verzeichnis hat ein Hochkomma ' im Namen, das ich durch zwei Hochkommata ersetze. Der Automatisierungsfehler tritt auf bei

    For Each objFolder In colSubfolders


    Dienstag, 20. Dezember 2016 07:12
  • Hi,

    die exakte und vollständige Fehlermeldung wäre notwendig, um dir helfen zu können.

    In WQL geht es mit \' anstelle von ''


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 20. Dezember 2016 17:22
    Moderator
  •   

    Hallo Stefan,

    ich habe jetzt eine andere WMI-Klasse genommen, um mir die Unterverzeichnisse eines Verzeichnisses zu holen.

    Wo das Problem lag, weiß ich nicht. Ich hatte immer nur einen Automatisierungsfehler bekommen, mit einem Fehlercode, den Google offenbar nicht kennt :-)

    Keinen Hinweis auf die Fehlerursache. Das mit der Maskierung bzw. fehlenden Maskierung der Hochkommata war wohl nicht das Problem. Irgendwann habe ich es dann gesteckt.

    Für mich ist das damit erledigt. Danke Dir für Deine Unterstützung.

    Gruß

    TD


    Freitag, 23. Dezember 2016 07:00