Autor |
Beitrag |
Nordstern
Hält's aus hier
Beiträge: 10
Win XP Prof.
C# (VS2008)
|
Verfasst: Mi 01.12.10 13:06
Hallo,
ich versuche im Dataset-Designer (Visual Studio 2008) eine Spalte in einer Tableadapter mit folgender Abfrage zu erstellen.
SELECT *,
IIf(Format([Datum],"dd")>30,"gross","klein") AS Test
FROM tabelleXY
Die Verbindung erfolgt über OLBDB auf eine Access 2003 Datenbank.
Die Abfrage liefert das gewünschte Ergebniss, jedoch erhalte ich folgende Fehlermeldung:
Fehler in der Liste der Funktionsargumente ">" wurde nicht erkannt.
Somit kann ich das Ergebniss nicht weiterverwenden.
Kann mir jemend helfen??
Vielen Dank im vorraus.
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Do 02.12.10 23:47
Hallo,
Nordstern hat folgendes geschrieben : |
Die Abfrage liefert das gewünschte Ergebniss, jedoch erhalte ich folgende Fehlermeldung:
Fehler in der Liste der Funktionsargumente ">" wurde nicht erkannt.
|
Wie jetzt? Ich kenne keine SQL-Statements, die einerseits eine Fehlermeldung ausgeben, anderseits aber das richtige Ergebnis.
Es gibt eigentlich gar kein IIf in T-SQL. Dazu diese Seite:
www.insidesql.org/bl...4/07/13/iif-in-t-sql
Sieht so aus, als ob Du das in ein CASE pumschreiben musst.
Marko
|
|
Trashkid2000
      
Beiträge: 561
Erhaltene Danke: 137
|
Verfasst: Fr 03.12.10 08:32
Hmm, ich glaube, dass es das Format auch nicht so in T-SQL gibt.
Aber so müsste es gehen:
SQL-Anweisung 1: 2:
| SELECT *, CASE WHEN DAY([Datum]) > 30 THEN 'gross' ELSE 'klein' END FROM tabelleXY; | LG
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 03.12.10 10:35
Trashkid2000 hat folgendes geschrieben : | Es gibt eigentlich gar kein IIf in T-SQL. |
Das stimmt nicht. Access 2003 kennt sehr wohl ein iif. Du kannst damit allerdings leider keine weitere Auswertung vornehmen. Deshalb kannst du kein > oder < oder so als Operator darin benutzen.
Für so etwas geht wirklich nur case. Nichtsdestotrotz gibt es iif, nur ist es eben nicht so mächtig.
|
|
Nordstern 
Hält's aus hier
Beiträge: 10
Win XP Prof.
C# (VS2008)
|
Verfasst: So 05.12.10 19:01
Hallo, Danke für die Informationen. Leider ist mein Problem noch nicht gelöst. Wahrscheinlich habe ich die Frage nicht richtig formuliert.
Ich arbeite im Designer mit einem Table-Adapter-Konfiguration-Assistent. Wenn ich im Abfragegenerator mein SQL eintrage und dann den Button 'Abfrage ausführen' bekomme ich mit IIF das richtige Ergebniss. Jedoch beim Fertigstellen des Assitenten bekomme ich die genannte Fehlermeldung.
Wenn ich
SELECT CASE WHEN [DAY]([Datum]) > 30 THEN 'gross' ELSE 'klein' END AS XYZ
FROM tabelleXY
benutze erhalte ich folgende Fehlermeldung:
E_FAIL(ox80004005) in IErrorInfo.Get.Description
Vieleicht hat noch jemand eine Idee.
Vielen Dank
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 05.12.10 19:08
|
|
Nordstern 
Hält's aus hier
Beiträge: 10
Win XP Prof.
C# (VS2008)
|
Verfasst: So 05.12.10 20:05
Hallo,
Danke für die schnelle Antwort. Leider gleicher Fehler. Die eckigen Klammer hat VS selbständig eingefügt, deshalb ist es mir zuerst nicht aufgefallen.
Das es aber daran nicht liegt, habe ich es mit folgenden Test versucht. (einfach ein anderes Feld benutzt, Text statt Datum)
SELECT *, CASE WHEN von = 'XXX' Then 'gross' ELSE 'klein' END
FROM tabelleXY
mfg Steffen
|
|
stendate
      
Beiträge: 19
Erhaltene Danke: 1
|
Verfasst: Do 23.12.10 00:11
Nordstern hat folgendes geschrieben : | Hallo,
SELECT *, CASE WHEN von = 'XXX' Then 'gross' ELSE 'klein' END
FROM tabelleXY
|
CASE WHEN ist, wie oben schon erwähnt T-SQL, damit kann die JET-Engine nix anfangen.
Was definitiv geht ist über OLEDB den IIF-Ausdruck zu verwenden, aber nicht im DataSet-Designer sondern im Source als String, nicht so schön aber praktikabel. Das geht auf alle Fälle und muss bei Migration auf SQL-Server eben auf CASE WHEN umgeschrieben werden.
Bei Format() bin ich mir gerade nicht sicher, ich glaube das geht nicht, mit etwas Glück läuft es wenn du das im Jet-Backend als View speicherst und dann das View anstatt der Tabelle im DataSet-Designer ansprichst.
|
|