none
Operandentypkollison Excel und SQL Server RRS feed

  • Frage

  • Hallo an Alle,

    ich habe folgendes Problem:

    Ich habe eine SQL-Anweisung geschrieben, die im SSMS einwandfrei funktioniert. Nun möchte ich mir das Ergebnis in Excel ausgeben lassen und mit "festen" Parametern funktioniert die Ausgabe auch einwandfrei.

    Wenn ich aber jetzt, Parameter aus der Excel-Tabelle benutzen möchte kommt folgende Fehlermeldung: Operandentypkollision: date ist inkompatibel mit int.

    So sieht der Code aus:

    (select b.column1
    	From example b
    	where convert(date,b.datum) between  ? and ?
    	group by b.column1
    	having ROUND(SUM(column3*column4),2)>0)
    
    	 EXCEPT 
    
    
    (select b.column2
    	From example b
    	where convert(date,b.datum) between  ? and ?
    	group by b.column1
    	having ROUND(SUM(column3*column4),2)>0)

    Wie gesagt, wenn ich bei den Verbindungeigenschaften die ? mit  '01.01.2015' und '01.01.2016' ersetze, dann funktioniert es einwandfrei. 

    Folgendes habe ich gemacht:

    Ich habe das Zellenformat, der Zellen in denen die Eingabeparameter stehen, auf Text geändert. Ich habe es mit Standard probiert und mit Datum. 

    Habt ihr eine Idee wo mein Denkfehler ist?

    Vielen Dank für Eure Mühe und Antworten!

    Freitag, 21. August 2015 07:28

Antworten

  • Ich habe den Fehler gefunden es lag an dem 

    where convert(date, b.datum) between ? and ?

    Ich habe es angepasst zu:

    where convert(date, b.datum) >= ? and convert(date, b.datum)< ?

    Vielen dank für Eure Hilfe!

    • Als Antwort markiert Hase90 Dienstag, 25. August 2015 06:21
    Dienstag, 25. August 2015 06:21

Alle Antworten

  • Operandentypkollision: date ist inkompatibel mit int.

    Hallo,

    das ist keine Fehlermeldung vom SQL Server, die dürfte eher von Excel selbst kommen. Und grundsätzlich funktionieren Datumsparameter in MS Excel mit gebundenen Abfragen.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 21. August 2015 07:43
  • Okay und wo liegt jetzt der Fehler?
    Freitag, 21. August 2015 07:45
  • Hi,

    wahrscheinlich am falschen Datumsformat. Probier mal 'yyyyMMdd'.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Freitag, 21. August 2015 08:28
    Moderator
  • Vielen Dank für den Tipp!

    Leider hat es mit folgenden Werten nicht funktioniert:

    20140101 20150101
    20150101 20160101

    Wenn ich die Einträge in ' ' setze, kommt die (neue) Fehlermeldung:

    "Ungültiger Parametertyp. Microsoft Office Excel erwartet eine andere Art von Wert."


    • Bearbeitet Hase90 Freitag, 21. August 2015 08:36
    Freitag, 21. August 2015 08:35
  • Hab mich geirrt, ist doch eine SQL Server Meldung

    select *
    from sys.messages
    where message_id = 206

    Operandentypkollision: %1! ist inkompatibel mit %2´!

    Also stimmt da was mit den Datentypen, sieht so aus als würde hier von Excel ein Integer Wert als Parameter übergeben.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 21. August 2015 08:46
  • Okay und wie zwinge ich Excel einen String bzw. Datumswert zu übergeben?
    Freitag, 21. August 2015 09:50
  • Wie gesagt, bei mir funktioniert es und ich habe nichts weiter gemacht, als in einer Zelle einen gültigen Datumswert zu erfassen und den Abfrageparameter an die Zelle zu binden.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 21. August 2015 10:51
  • Ich habe den Fehler gefunden es lag an dem 

    where convert(date, b.datum) between ? and ?

    Ich habe es angepasst zu:

    where convert(date, b.datum) >= ? and convert(date, b.datum)< ?

    Vielen dank für Eure Hilfe!

    • Als Antwort markiert Hase90 Dienstag, 25. August 2015 06:21
    Dienstag, 25. August 2015 06:21