Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Parameter für Select mit "IN" Bedingung
Feinfinger
myCSharp.de - Member



Dabei seit:
Beiträge: 39

Themenstarter:

Parameter für Select mit "IN" Bedingung

beantworten | zitieren | melden

verwendetes DatenbanksystemDBC Firebird

Ich arbeite mit typisierten Datasets und habe nun einem Tableadapter mit einer Select abfrage die eine über "IN" einen Parameter mit eine kommagetrennten Liste übergeben bekommt :
SELECT ID, IDENT, PCONF_ID, NOTES, LOV_STATUS, TYP_ID, CHANGED
FROM WORKFOLDERS
WHERE (PCONF_ID IN (?))

Den Parameter hab ich als String konfigurert aber ich bekomme keine Werte zurück wenn ich das Fill aufrufe, wenn ich aber das statement so direkt in dem
Datenbankeditor ausführe und die generierte Liste da einfüge funktioniert es.
Also liegt es daran wie der Parameter vom Visual Studio interpretiert wird aber ich hab keine Ahnung wie man ihn anders konfiguriern sollte !?
Keine Weltherrschaft ohne manisches Lachen!
private Nachricht | Beiträge des Benutzers
Yellow
myCSharp.de - Experte

Avatar #avatar-2347.png


Dabei seit:
Beiträge: 832

beantworten | zitieren | melden

hallo Feinfinger,

ein ADO.NET Parameter repräsentiert immer einen Wert. Das hat nichts mit Visual Studio zu tun. Wenn du also eine kommagetrennte Liste übergibst, wird diese Liste auch als ein Wert behandelt.

... -- so wird's ausgeführt
WHERE (PCONF_ID IN ('Item1,Item2,Item3'))

... -- so hättest du es gerne gehabt.
WHERE (PCONF_ID IN ('Item1','Item2','Item3'))

Wenn du mehrere Werte parameteristiert Abfragen willst, kommst Du nicht umher für jeden Wert einen Parameter zu erzeugen und diesen mit Hilfe der ParameterCollection zu übergeben.

-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de
private Nachricht | Beiträge des Benutzers
Feinfinger
myCSharp.de - Member



Dabei seit:
Beiträge: 39

Themenstarter:

beantworten | zitieren | melden

das Verhalten konnte ich auch beobachten bei mir also dann doch zu Fuß

           string InClause = "";
            foreach (DataRow R in DsMain.WORKTODOSTATUS)
            {
                InClause += R["ID"].ToString() + ",";
            }
            if (InClause != "" || Workstatus != "")
            {
                WorkTodostatus = InClause.Remove(InClause.Length - 1);
                string Sql = REP_SQL.sql_worknotes.Replace("%2", Workstatus);
                Sql = Sql.Replace("%1", WorkTodostatus);
                OdbcDataAdapter Adapter = new OdbcDataAdapter(Sql, MainCon);
                Adapter.Fill(DsMain.WORKNOTES);
                Adapter.Dispose();
            }[
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Feinfinger am .
Keine Weltherrschaft ohne manisches Lachen!
private Nachricht | Beiträge des Benutzers