Office-Fragen.de
Variablen einer StoredProcedure aus Excel Zelle füllen - Druckversion

+- Office-Fragen.de (https://office-fragen.de)
+-- Forum: Microsoft Office (https://office-fragen.de/forum-1.html)
+--- Forum: Excel (https://office-fragen.de/forum-2.html)
+--- Thema: Variablen einer StoredProcedure aus Excel Zelle füllen (/thread-29203.html)



Variablen einer StoredProcedure aus Excel Zelle füllen - Rechner674 - 02.10.2024

Guten Tag werte Gemeinde, 

mein Leiter IT hat mir eine Mail gesendet und mir eine sogenannte Stored Procedure gesendet. 

Nachdem ich die Daten nun in Power Query habe, möchte ich diese SQL Variablen gerne mit Werten aus einer Excel Zelle befüllen. 
Die möglichen Werte würde ich dann mittels Datenüberprüfung als Dropdownliste festlegen. 

Ich versuche nun schon seit Stunden und nach gefühlten 100 Youtube Videos und Internetseiten die beiden Variablen aus dieser SQL Query zu füllen. Leider erfolglos. 
Die meisten Videos handeln von Start- und Enddatumswerten und basieren auf dem Filtern von Daten, die sich bereits in Power Query befinden.
Von VBA hab ich keine Ahnung und irgendwie hab ich wohl auch keine von Power Query. 

Ich bin Buchhalter und kein Programmierer  Huh und habe bisher folgendes probiert ausgehend von der StoredProcedure:

EXEC getDepositTax100 @year1 = "2024", @month1 = '7'

Ich hab mich erfolgreich verbunden und hab die Daten in einer Abfrage in Power Query. Die gebe ich als Tabelle in ein Tabellenblatt ab Zeile 5 aus. 
Obendrüber habe ich eine Tabelle eingefügt.

ParameterWert
Jahr2024
Monat7

Diese Tabelle habe ich auch in Power Query übernommen. 
Ich hab den Datentyp der Spalte Werte auf Int64.Type geändert. 
Dann habe ich die Abfrage der Steuertabelle per Verweis 2 mal kopiert und per Drilldown den Wert aus der Zeile 0 und 1 verfügbar. 

In den Youtube Videos nehmen die Contentersteller jetzt immer diesen Drilldown Wert und setzen den als Filtervariable anstelle des ausgewählten Datums ein und dann endet das Video meistens. 

Ich will aber das dieser Wert gleich in die SQL Variable übergeben wird. 

Ich hab daher gedacht ich mach einfach ... ich mach aus ... 

Quelle = Sql.Database("Servername", "Datenbankname", [Query="EXEC getDepositTax100 @year1 = ""2024"", @month1 = '7'"])

...das hier...

= Sql.Database("Servername", "Datenbankname", [Query="EXEC getDepositTax100 @year1 = 'Year1_Excel', @month1 = '7'"])

Year1_Excel ist nur der Drilldown Wert aus der Steuertabelle. 

Als Ergebnis bekomme ich eine Fehlermeldung


DataSource.Error: Microsoft SQL: Fehler beim Konvertieren des varchar-Datentyps in int.
Details:
    DataSourceKind=SQL
    DataSourcePath=Servername;Datenbankname
    Message=Fehler beim Konvertieren des varchar-Datentyps in int.
    ErrorCode=-2146232060
    Number=8114
    Class=16
    State=1


Egal welchen Datentyp ich in meiner Steuertabelle nehme ich bekomm immer einen Fehler. Auf die SQL Query habe ich keinen Zugriff. 

Danke schon mal für eure Ideen.


RE: Variablen einer StoredProcedure aus Excel Zelle füllen - Flotter Feger - 02.10.2024

Hallo,

mal angenommen, deine Werte stehen in B3 und B4 ...

[Query="EXEC getDepositTax100 @year1 = '" & WorkSheets("Tabelle1").Range("B3").Text & "', @month1 = '" & WorkSheets("Tabelle1").Range("B4").Text & "'"])


RE: Variablen einer StoredProcedure aus Excel Zelle füllen - Rechner674 - 02.10.2024

Expression.SyntaxError: Erwartetes Token: ','.
0001: let
0002:    Quelle = Sql.Database("Servername", "Datenbank",
0003:    [Query="EXEC getDepositTax100 @year1 = '" & WorkSheets( "Abfrage1").Range("B2").Text & "', @month1 = '" & WorkSheets("Abfrage1").Range("B3").Text & "'"])
---->                                                                                                              ^
0004: in
0005:    Quelle


Der Pfeil steht unter dem Punkt . vor dem Wort Range("B2")....


RE: Variablen einer StoredProcedure aus Excel Zelle füllen - Rechner674 - 02.10.2024

Aus Youtube habe ich jetzt das gefummelt.

let
Year1_Excel = Text.From( Year1_Parameter ),
Month1_Excel = Text.From( Month1_Parameter ),
Quelle = Sql.Database("Servername", "Datenbankname",
[Query="EXECUTE getDepositTax100 @year1 = """ & Year1_Excel & """, @month1 = """ & Month1_Excel & """"])
in
Quelle



Jetzt kommt immerhin keine Fehlermeldung mehr bzgl des Datentyps. Aber der Parameter ist eben nicht dynamisch....


RE: Variablen einer StoredProcedure aus Excel Zelle füllen - Rechner674 - 02.10.2024

let
Zellwert = Excel.CurrentWorkbook(){[Name="Steuertabelle"]}[Content],
year1 = Zellwert{0}[Wert],
month1 = Zellwert{1}[Wert],
Quelle = Sql.Database("Servername", "Datenbankname",
[Query="EXECUTE getDepositTax100 @year1 = '" & Text.From(year1) & "', @month1 = '" & Text.From(month1) & "'"])
in
Quelle




Läuft und braucht kein Drilldown oder Parameter