1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Vba

  • sommeralex
  • 9. Juli 2007 um 11:29
  • Unerledigt
  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 9. Juli 2007 um 11:29
    • #1

    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')" _
    )

  • Erklärbär
    8
    Erklärbär
    Mitglied
    Reaktionen
    6
    Punkte
    661
    Beiträge
    130
    • 9. Juli 2007 um 13:10
    • #2

    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"

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 9. Juli 2007 um 13:38
    • #3

    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.

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung