Excel mit SQL-Datenbankverbindung, WHERE auf Zeile
#1
Hallo zusammen,

wenn ich Templates erstelle, habe ich leider oft viel zu viele Daten.
Ich möchte eine Lösung finden, mit der ich meine WHERE Bedingung über eine Excelzelle füttern kann.

Hier ein Beispiel:

Ich spreche den Datenbankserver meines ERP Systems an

SELECT
Artikelnummer, BestellteMenge

FROM Artikel

WHERE Lieferantennummer = "OPERATOR" (z.B. Zeile G4 Sheet 1)


Sodass ich vor der Abfrage definieren kann, welche Artikel ich abfragen möchte. 
Ich habe bereits verschiedene Wege ausprobiert, einen Operator in die Query einzubauen, allerdings bislang ohne Erfolg. 

Viele Grüße und Danke für die Antworten.
Top
#2
Hallo,
WHERE Lieferantennummer = Sheets("Sheet 1").Range("G4").Value
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Manu
Top
#3
Hey Uwe, 

wenn ich dies probiere, bekomme ich die Meldung 

"Verbindung nicht möglich" 
Details: "Microsoft SQL: 'Sheets' is not a recognized built-in function name."
Top
#4
Hallo Manu,

Du musst das halt verketten in der Art:
"WHERE Lieferantennummer = " & Chr(34) & Sheets("Sheet 1").Range("G4").Value & Chr(34) & ""
Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Manu
Top
#5
Hey,

das klappt nicht..
Ich spreche aber auch den Server direkt an.

Also ich gehe auf Daten -> Daten Abrufen -> Aus Datenbank -> Aus SQL Server-Datenbank und schreibe dort die SQL-Anweisung rein. 

Ich glaube, für die von euch beschriebenen Arten müsste ich es dann irgendwie in VBA eingeben, oder?

Viele Grüße
Top
#6
Hallöchen,

ja, so ist es. Einen Einstieg in die Syntax findest Du z.B. dort:

ADO und Excel

bzw. Du googelst gleich nach Excel und sqlServer
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Manu
Top
#7
Hey, 

danke für den Link.

Aber ich checks nicht....
Hast du vielleicht einen VBA Code, den ich umschreiben kann?
Top
#8
Hallöchen,

auf der verlinkten Seite und den folgenden stehen aber etliche Codes zum umschreiben Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Manu
Top
#9
Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveWorkbook.Queries.Add Name:="Abfrage1", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Quelle = Sql.Database(""MYDATABASE"", ""MYCOMPANY"", [Query=""SELECT ITEMCODE FROM OITM WHERE CARDCODE = '7070000'""])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Quelle"
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Abfrage1;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Abfrage1]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Abfrage1"
        .Refresh BackgroundQuery:=False
    End With
End Sub
Hey Wink

Ja, aber ich weiß nicht an welcher Stelle ich da was umschreiben müsste...

Also ich habe jetzt ein Makro aufgezeichnet um einen VBA Code zu bekommen,

wie kann ich hier mein WHERE (Lieferantennummer) flexibel gestalten?
Top
#10
Hallo,

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveWorkbook.Queries.Add Name:="Abfrage1", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Quelle = Sql.Database(""MYDATABASE"", ""MYCOMPANY"", [Query=""SELECT ITEMCODE FROM OITM WHERE CARDCODE = '" & Sheets("Sheet 1").Range("G4").Value & "'""])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Quelle"
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Abfrage1;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Abfrage1]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Abfrage1"
        .Refresh BackgroundQuery:=False
    End With
End Sub

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Manu
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste