• Hallo und guten Morgen!

    Seltsamerweise funktioniert mein SQL Abfrage nicht, wenn ich sie mit dem selben Syntax (!) um nur eine Zeile erweitere... ich schreibe sie in Excel um auf eine Access DB zuzugreifen.

    sqlQuery = "SELECT PMBUY.STRMID, PMBUY.ACTIVITY, PMBUY.COST, PMBUY.MARVALUE" & Chr(13) & "" & Chr(10) & "FROM PMBUY PMBUY" & Chr(13) & "" & Chr(10) & _
    "WHERE " & _
    "(PMBUY.STRMID='slb') AND (PMBUY.PERIOD='" & period & "') " & _
    "OR (PMBUY.STRMID='cpc') AND (PMBUY.PERIOD='" & period & "') " & _
    "OR (PMBUY.STRMID='hpl') AND (PMBUY.PERIOD='" & period & "') " & _
    ";"

    aber das selbe um eine Zeile erweitert, funktioniert nicht

    sqlQuery = "SELECT PMBUY.STRMID, PMBUY.ACTIVITY, PMBUY.COST, PMBUY.MARVALUE" & Chr(13) & "" & Chr(10) & "FROM PMBUY PMBUY" & Chr(13) & "" & Chr(10) & _
    "WHERE " & _
    "(PMBUY.STRMID='slb') AND (PMBUY.PERIOD='" & period & "') " & _
    "OR (PMBUY.STRMID='cpc') AND (PMBUY.PERIOD='" & period & "') " & _
    "OR (PMBUY.STRMID='hpl') AND (PMBUY.PERIOD='" & period & "') " & _
    "OR (PMBUY.STRMID='hpl') AND (PMBUY.PERIOD='" & period & "') " & _
    ";"

    fehler:

    "Typen unverträglich"

    wenn ich dann probweise eine sql anfrage aufzeichne, die länger ist, also zb 10 zeilen umfasst, sieht der code so aus - und man sieht, das die zeilen nicht durch ein

    & _

    sonder durch ein

    _
    , _

    getrennt werden. wenn ich versuche, dass nachzubasteln, funktioniert das aber nicht...

    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
    "ODBC;DSN=ACCESS;DBQ=U:\M-O\MO-I\MOI-P\BAYERNOIL\Planung OMV\Monatsplanung\Archiv 2007\Planung 0706\Results.Mdb;DefaultDir=U:\M-O\MO-" _
    ), Array( _
    "I\MOI-P\BAYERNOIL\Planung OMV\Monatsplanung\Archiv 2007\Planung 0706;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5" _
    ), Array(";")), Destination:=Range("D19"))
    .CommandText = Array( _
    "SELECT PMBUY.CASE, PMBUY.PERIOD, PMBUY.STRMID, PMBUY.ACTIVITY" & Chr(13) & "" & Chr(10) & "FROM PMBUY PMBUY" & Chr(13) & "" & Chr(10) & "WHERE (PMBUY.STRMID='ALK') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='arh') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='azl'" _
    , _
    ") AND (PMBUY.PERIOD='1') " _
    , _
    "OR (PMBUY.STRMID='bas') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='C77') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='cpc') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='esa') AND (PMBUY" _
    , _
    ".PERIOD='1') OR (PMBUY.STRMID='ETB') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='ETE') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='ETO') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='Fn0') AND (PMBUY.PERIOD='1')" _
    , _
    " OR (PMBUY.STRMID='mel') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='FNM') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='foi') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='npt') AND (PMBUY.PERIOD='1') OR (PMBUY.S" _
    , _
    "TRMID='oko') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='TOL') AND (PMBUY.PERIOD='1') OR (PMBUY.STRMID='TOL') AND (PMBUY.PERIOD='1')" _
    )

  • kann es sein, dass im ersten fall die period als array deklariert wurde? wenn nein, welchen datentyp hat die variable?


    im 2. fall ist das

    Code
    _
    , _


    die auftrennung der elemente des arrays und nicht die stringkonkatenation

    einfach nur genial: wenn man im wort "Mama" 4 buchstaben ändert, dann hat man auf einmal "Bier"

  • vielen dank erstmals für die antwort..

    die variable period ist einfach ein string. und es handelt sich immer um die selbe periode.

    ich kann mir nicht vorstellen, dass der fehler sich auf die period bezieht, weil es ja im ersten fall mit wenigen and-or verbindungen einwandfrei funktioniert.

    der test ist sicher ein array, er beginnt mit:

    With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
    "ODBC;DSN=ACCESS;DBQ=U:\M-O\MO-I\MOI-P\BAYERNOIL\Planung OMV\Monatsplanung\Archiv 2007\Planung 0706\Results.Mdb;DefaultDir=U:\M-O\MO-" _
    ), Array( _
    "I\MOI-P\BAYERNOIL\Planung\Monatsplanung\Archiv 2007\Planung 0706;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5" _
    ), Array(";")), Destination:=Range("A6"))
    .CommandText = Array( _
    "SELECT PMBUY.PERIOD, PMBUY.CASE usw...

    nur verstrehe ich nicht, nach welchen parametern der string text in ein array aufgespalten wird.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!