verwendetes Datenbanksystem: SQL Compact 3.5
Hallo,
ich habe folgende Abfrage mit Parameter in einem DataSet.
SELECT ID, ComNo1, ComNo2, ScnNo, CtnNo, LieferNo, Art_Modell, Art_Stoff, Farbe, [Set], Gr1, Me1, Gr2, Me2, Gr3, Me3, Delivery, Empfaenger, RefOrder,
Gedruckt, Abgeglichen, Leer
FROM AUFKLEBER
WHERE (CtnNo IN (@Items)) AND (Gedruckt = 0)
Wenn ich die Werte in der Abfrage eintrage, "CtnNo IN (0001,0007)", funktioniert die Abfrage.
Wenn ich die Parameter eingebe, funktioniert es nicht (siehe Bild)
Was mache ich da falsch?
Vielen Dank
dimuwe
Hallo dimuwe,
das liegt nur an dem Parameter-Eingabefenster.
Wenn der Parameter im Code mit sog. "Multivalues" gefüllt wird funktioniert es. Genauso, wir du bereits mit IN ('123','456') herausgefunden hast.
Soweit ich das analysiert habe, liegt es daran, dass IN analog zu einem JOIN eine Art Tabelle verknüpft. Also mehrere Datensätze. Das Abfrageparameter-Fenster übergibt jedoch nur einen String. Anstelle von 123 & 456 wird nun '123,456' übergeben und das Ergebnis ist leer.
Gruß,
TriB
Vielen Dank trib,
leider funktioniert das auch nicht im Code.
this.AUFKLEBERTableAdapter.Fill( this.AufkleberDataSet.AUFKLEBER, "'0001', '0007'");
Hallo Dimuwe
entweder verzichtest du in diesem Fall(nicht generell/nur als Workaround) auf Parameter und bildest das SQL mit einem StringBuilder oder so ODER du erstellst eine Temporäre Tabelle und speicherst deine Parameterliste dort um mit dem IN-statement darauf zugreifen zu können, denn Aufzählungen gehören nicht zu den vom SqlCeParametern akzeptierten SqlDbTypes.
Gruss
Balaban_S