Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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.
Antwortento top
#2
Hallo,
WHERE Lieferantennummer = Sheets("Sheet 1").Range("G4").Value
Gruß Uwe
[-] Folgende(r) 1 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • Manu
Antwortento 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."
Antwortento 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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • Manu
Antwortento 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
Antwortento 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-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • Manu
Antwortento top
#7
Hey, 

danke für den Link.

Aber ich checks nicht....
Hast du vielleicht einen VBA Code, den ich umschreiben kann?
Antwortento 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-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • Manu
Antwortento 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?
Antwortento 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 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • Manu
Antwortento top


Gehe zu:


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