Fragensteller
Excel 2010 - Microsoft Query - Troz richtigem SQL Code keine Ausgabe

Frage
-
Guten Tag,
ich habe ein komisches Problem. Ich habe einen SQL
Express Server 2012 am laufen und erstelle mit öffters in Excel über "Daten" -
"Aus anderen Quellen" - "Microsoft Query" Abfragen aus der Datenbank.
Sonst habe ich den einfachen Kerncode genommen: sprich Select ...
from ... where ... order by etc.
Jetzt möchte ich aber sehr gerne eine
Verzweigung haben:
declare @Kwoche_n int;
declare @Kriterium_Jahr int;
set @KWoche_n =
(DATEPART(ISOWK,getdate()+7)) ;
if @Kwoche_n = 1
set
@Kriterium_Jahr = year(current_timestamp)+1;
else
set @Kriterium_Jahr=
year(current_timestamp);
SELECT ...
FROM DB_...dbo.... ...
where jahr=@Kriterium_Jahr And
KW= @Kwoche_n
group by
[Abteilung]
Wenn ich nur den Kern, also das Select versuche,
bekomme ich ganz normal die Werte. Auch mit declare werden mir ganz normal die
Werte angezeit. Sobald ich das set @k_Woche auskommentiere, bekomme ich keine
Ausgabe mehr der Werte.
In der Tabelle wird nur folgendes angezeigt:
Abfrage von DB_Tabelle_x.f_1
Leider weiß ich nicht weiter. Den code habe ich schon auf dem Server
getestet und er liefert dort die gewünschte Ausgabe.
Beim Erstellen der
Query kann man ja auch den SQL Text bearbeiten unter "Daten in Microsoft Query
bearbeiten oder ansehen". Der Code wird mit in dem Menü auch ganz normal
ausgewertet und die gewünsten Werte werden mir angezeigt.
Weiß einer von
euch, warum mir die Ausgabe des Codes nicht geliefert wird ?
Fakten:
MS Office 2010
SQL Server 2012 Express
Lieben Gruß, Desby Doll
Alle Antworten
-
Sobald ich das set @k_Woche auskommentiere, bekomme ich keine
Ausgabe mehr der Werte.Hallo Desby,
wenn Du die SET Anweisung auskommentierst, hat die Variable @k_Woche_n den Wert NULL und ein Vergleich mit = NULL liefert nie ein Ergebnis.
Wenn Du als Ergebnis alle Datensätze haben willst, wo das Feld KW NULL Werte enthält, musst Du den IS NULL Vergleich verwenden
SELECT ... FROM DB_...dbo.... ... where jahr=@Kriterium_Jahr AND KW IS NULL group by [Abteilung]
Olaf Helper
Blog Xing- Bearbeitet Olaf HelperMVP Freitag, 14. Juni 2013 06:37
-
Hallo Olaf,
leider hatte ich das Problem nicht richtig beschrieben :
Also bei diesem Text bekomme ich eine Ausgabe:
declare @Kwoche_n int;
declare @Kriterium_Jahr int;
SELECT ...
FROM DB_...dbo.... ...
group by
[Abteilung]Bei diesem nicht:
declare @Kwoche_n int;
declare @Kriterium_Jahr int;
set @KWoche_n =
(DATEPART(ISOWK,getdate()+7)) ;
if @Kwoche_n = 1
set
@Kriterium_Jahr = year(current_timestamp)+1;
else
set @Kriterium_Jahr=
year(current_timestamp);
SELECT ...
FROM DB_...dbo.... ...
where jahr=@Kriterium_Jahr And
KW= @Kwoche_n
group by
[Abteilung]Ich habe natürlich, als ich die Zuweisung des Wertes an die Variable zum Kommentar hinzugefügt habe, das Where Kriterium auch als Kommentar gesetzt.
Es geht darum, wenn ich den Code mit den Variablen und natürlich dem set auf dem Server als Abfrage teste, dass ich eine normale, wie gewünschte ausgabe erhalte. Wenn ich den Code jedoch bei Excel 2010 beim MS Query hinzufüge, dass er mir keine Ausgabe liefert, bzw. Ausgabe von DB Tabelle xxx
Allein mit dem declare führt Excel den Code normal aus, wenn ich jedoch das set dem Code hinzufüge,l geht es wieder nicht und er zeigt mir den oben genannten Text an.
LG, Desby D
-
dass er mir keine Ausgabe liefert, bzw. Ausgabe von DB Tabelle xxx
Es ist weiter alles ganz normal und das es "so" aussieht, also nur "Ausgabe von ..." liegt daran, das Deine Abfrage kein Ergebnis liefert.
Und grundsätzlich funktioniert so eine Abfrage auch mit MS Query + Excel:
Olaf Helper
Blog Xing -
Hallo,
danke für die schnelle Antwort. Genau da habe ich auch den Code eingetragen und er hat mir bei dem "Abfrage von Test" auch die Ausgabe angezeigt (waren ein paar Datensätze, die passen)
Wenn ich jetzt aber diese Abfrage schließe, um die Werte in Excel anzeigen zu lassen, wir ein einer Zelle nur "Abfrage von DB_Abfragename" angezeigt. Da mir ja vorher die Werte angezeigt wurden, gibt es ja definitiv Datensätze die dem Kriterium entstprechen.
Wenn ich nur
declare @test int;
set @test = 3;select @test;
wähle, wird mir auch keine Ausgabe in Excel gegeben. In dem Fenster davor (siehe Abbildung von Ihnen) wurde mir jedoch der passende Wert geliefert.
-
Ach so, in Excel selbst wird Dir kein Ergebnis angezeigt, das hatte ich irgendwie nicht rausgelesen.
Excel zeigt nur das erste Ergebnisset an und das ist die InfoMessage der Set Anweisung, und das ist ein leeres Ergebnis. Das kannst Du mit der SET NOCOUNT ON Anweisung unterbinden, dann bekommst Du auch was in Excel selbst zu sehen.
SET NOCOUNT ON; DECLARE @var int; SET @var = (DATEPART(WK,getdate()+7)) ; IF @var = 1 SELECT 'Var ist 1' AS Ergebnis ELSE SELECT 'Var ist nicht 1' AS Ergebnis
Olaf Helper
Blog Xing- Als Antwort vorgeschlagen Elmar Boye Freitag, 14. Juni 2013 08:38