Clever-Excel-Forum

Normale Version: Excel mit SQL-Datenbankverbindung, WHERE auf Zeile
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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.
Hallo,
WHERE Lieferantennummer = Sheets("Sheet 1").Range("G4").Value
Gruß Uwe
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."
Hallo Manu,

Du musst das halt verketten in der Art:
"WHERE Lieferantennummer = " & Chr(34) & Sheets("Sheet 1").Range("G4").Value & Chr(34) & ""
Gruß Uwe
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
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
Hey, 

danke für den Link.

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

auf der verlinkten Seite und den folgenden stehen aber etliche Codes zum umschreiben Smile
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?
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
Seiten: 1 2