Laden...

Report druckt nur einen Datensatz, Abfrage mit "IN" Statement

Erstellt von dimuwe vor 12 Jahren Letzter Beitrag vor 12 Jahren 760 Views
D
dimuwe Themenstarter:in
168 Beiträge seit 2005
vor 12 Jahren
Report druckt nur einen Datensatz, Abfrage mit "IN" Statement

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

T
708 Beiträge seit 2008
vor 12 Jahren

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

D
dimuwe Themenstarter:in
168 Beiträge seit 2005
vor 12 Jahren
re

Vielen Dank trib,

leider funktioniert das auch nicht im Code.


this.AUFKLEBERTableAdapter.Fill( this.AufkleberDataSet.AUFKLEBER, "'0001', '0007'");

194 Beiträge seit 2006
vor 12 Jahren

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