highpriest
Goto Top

Excel Macro ODBC Abfrage

Hallo Experten!

Da ich nicht viel Ahnung davon habe, bitte ich Euch um Hilfe.
Ich suche nach eine Möglichkeit über ODBC aus unserer Warenwirtschaftsystem einige Daten in Excel einzulesen,
aber nur bestimmte Daten, also über ein Abfrage. Ich habe mir gedacht, dass es mit Makros und InputBox zu lösen wäre.
Ich habe ein Makro gebastelt, das mir aber alle Daten ausliest und ich komme nicht weiter und sobald ich WHERE-Abfrage einbaue bekomme ich Fehlermeldung.

Makro ohne WHERE (InputBox ist hier natürlich ohne Wirkung):

Sub Makro1()
Dim bestellung As String

bestellung = InputBox("Bestellnummer")  
sqlstring = "SELECT BestellungenPositionen.Artikelnummer, BestellungenPositionen.Artikelbezeichnung1, BestellungenPositionen.Bestellmenge FROM BestellungenPositionen"  
connstring = "ODBC;DSN=Sage SNC"  
       With ActiveSheet.QueryTables.Add(Connection:=connstring, _
           Destination:=Range("B15"), Sql:=sqlstring)  
           .Refresh
       End With
End Sub

Makro mit WHERE und InputBox (Fehler an .Refresh)

Sub Makro1()
Dim bestellung As String

bestellung = InputBox("Bestellnummer")  
sqlstring = "SELECT BestellungenPositionen.Artikelnummer, BestellungenPositionen.Artikelbezeichnung1, BestellungenPositionen.Bestellmenge FROM BestellungenPositionen WHERE BestellungenPositionen.Vorgangsnummer = " 'bestellung' ""  
connstring = "ODBC;DSN=Sage SNC"  
       With ActiveSheet.QueryTables.Add(Connection:=connstring, _
           Destination:=Range("B15"), Sql:=sqlstring)  
          .Refresh
       End With
End Sub

Kann mir jemand helfen, ich habe da wirklich nicht so viel Ahnung.

Ich bedanke mich im Voraus!

Content-ID: 300366

Url: https://administrator.de/contentid/300366

Ausgedruckt am: 19.11.2024 um 19:11 Uhr

114757
Lösung 114757 30.03.2016 um 10:25:26 Uhr
Goto Top
Moin.
Zeichensetzung und Verknüpfung der Variablen ist nicht korrekt:
sqlstring = "SELECT BestellungenPositionen.Artikelnummer, BestellungenPositionen.Artikelbezeichnung1, BestellungenPositionen.Bestellmenge FROM BestellungenPositionen WHERE BestellungenPositionen.Vorgangsnummer = '" & bestellung & "';"   
Gruß jodel32
highpriest
highpriest 30.03.2016 um 10:40:18 Uhr
Goto Top
Danke jodel32 für die schnelle Antwort!
Habe mir schon sowas gedacht.
Ich bekomme aber trotztdem immer noch einen Fehler an der gleicher Stelle (siehe Screenshot), fehlt da noch was?
1
2
114757
Lösung 114757 30.03.2016 aktualisiert um 10:48:50 Uhr
Goto Top
Bin noch unterwegs und kann es nicht testen, aber von welchen Format/Typ ist die Spalte für die Bestellnummer (String oder Integer etc.) ?
Wenn sie numerisch ist solltest du die Hochkommas im WHERE Clause weglassen.
Und natürlich sollte im Destination Range nicht schon eine Querytable und eine Verbindung existieren, da sonst Fehler generiert werden! Die sollten vorher komplett gelöscht werden, denn Querytable-Verbindungen speichert Excel intern.(Tab Daten)
highpriest
highpriest 30.03.2016 um 11:12:13 Uhr
Goto Top
Zitat von @114757:

Und natürlich sollte im Destination Range nicht schon eine Querytable und eine Verbindung existieren, da sonst Fehler generiert werden! Die sollten vorher komplett gelöscht werden, denn Querytable-Verbindungen speichert Excel intern.(Tab Daten)

Kann ich leider nicht folgen, sorry. Kannst du mir genauer erklären, wenn du zeit hast?
114757
Lösung 114757 30.03.2016 aktualisiert um 11:21:04 Uhr
Goto Top
Naja, die Verbindung einer Querytable wird als Definition in der Excel-Mappe gespeichert. Die bereits existierenden Verbindungen kannst du wie gesagt auf dem Tab Daten einsehen. Wenn im Zielbereich nun schon eine Querytable existiert und man diesen Bereich bzw. die existierende Querytable nicht vorher löscht oder stattdessen dereen Quelle ändert, ist es doch klar das es zu einem Fehler kommt face-wink
highpriest
highpriest 30.03.2016 um 14:48:59 Uhr
Goto Top
Vielen Dank jodel32 für deine Hinweise!!!
Ich habe jetzt endlich hinbekommen!
114757
114757 30.03.2016 um 14:50:45 Uhr
Goto Top
Zitat von @highpriest:
Vielen Dank jodel32 für deine Hinweise!!!
Bitöö.
Ich habe jetzt endlich hinbekommen!
Und ich habe fertig face-big-smile