Benutzer mit den meisten Antworten
Ist diese Parameterabfrage möglich ?

Frage
-
Hier ist ein SQL-text, der momentan nicht funktioniert
Der Parameter @Auftrag erscheint mir unkritisch, nicht aber @Nummern
@Nummern ist eine Auflistung von Zahlen, die die Datensatnummern aus der zugrundeliegenden Tabelle repräsentieren.
im Test wäre dies "1,2". Das schägt fehl, egal ob ich es im Programmcode benutze oder im ACcess-Fenster.
Geht sowas überhaupt oder mache ich schlicht etwas falsch ?
PARAMETERS [@Auftrag] Long, [@Nummern] Text ( 255 );
INSERT INTO tblListeVordruckeGA ( VorlageBezeichnung, VorlageDescription, VorlageWordDOT, VorlageNamePrototyp, VorlagePriorität, VorlagAuftragNr )
SELECT GA_Vordrucke.VorlageBezeichnung, GA_Vordrucke.VorlageDescription, GA_Vordrucke.VorlageWordDOT, GA_Vordrucke.VorlageNamePrototyp, GA_Vordrucke.VorlagePriorität, [@Auftrag] AS AuftragNr
FROM GA_Vordrucke
WHERE (((GA_Vordrucke.VorlageID) In ([@Nummern])));
Antworten
-
Nachtrag:
Ich bin davon ausgegangen, dass Du SQL verwendest und habe erst nachher gesehen, dass es eine Access Query ist.
Hier würde es dann so aussehen:
WHERE @Nummern + ',' LIKE '*' + Format(GA_Vordrucke.VorlageID) + ',*'
Nebenbei: Im SQL Server Statement fehlt noch eine ) nach NVARCHAR(100)
WHERE @Nummern + ',' LIKE '%' + CAST(GA_Vordrucke.VorlageID AS NVARCHAR(100)) + ',%'
Gruss
Henry
Henry Habermacher wrote:Du kannst das mit einem LIKE lösen:
WHERE @Nummern + ',' LIKE '%' + CAST(GA_Vordrucke.VorlageID AS
NVARCHAR(100) + ',%'- Als Antwort markiert NicoNi Montag, 18. Juni 2012 11:15
Alle Antworten
-
Hallo NicoNi
Du kannst das mit einem LIKE lösen:
WHERE @Nummern + ',' LIKE '%' + CAST(GA_Vordrucke.VorlageID AS NVARCHAR(100) + ',%'
Wichtig ist, dass Du nach @Nummern ein ',' hinzufügst, damit die Auflistung so aussieht: '1, 3, 5,', also mit einem , aufhört.
Wenn Du nun zur VorlageID (in einen String umgewandelt) ebenfalls ein ',' hinzufügst, dann kannnst Du über Like suchen, ob der String der VorlageID + ',' in der Auflistung der @Nummern + ',' vorkommt.Ist nicht sehr performant aber vermulich immer noch besser, als ein dynamisches SQL Statement zu generieren und auszuführen.
Gruss
HenryNicoNi wrote:
Hier ist ein SQL-text, der momentan nicht funktioniert
Der Parameter @Auftrag erscheint mir unkritisch, nicht aber @Nummern
@Nummern ist eine Auflistung von Zahlen, die die Datensatnummern aus der
zugrundeliegenden Tabelle repräsentieren.
im Test wäre dies "1,2". Das schägt fehl, egal ob ich es im Programmcode
benutze oder im ACcess-Fenster.
Geht sowas überhaupt oder mache ich schlicht etwas falsch ?
PARAMETERS [@Auftrag] Long, [@Nummern] Text ( 255 );
INSERT INTO tblListeVordruckeGA ( VorlageBezeichnung, VorlageDescription,
VorlageWordDOT, VorlageNamePrototyp, VorlagePriorität, VorlagAuftragNr )
SELECT GA_Vordrucke.VorlageBezeichnung, GA_Vordrucke.VorlageDescription,
GA_Vordrucke.VorlageWordDOT, GA_Vordrucke.VorlageNamePrototyp,
GA_Vordrucke.VorlagePriorität, [@Auftrag] AS AuftragNr FROM GA_Vordrucke
WHERE (((GA_Vordrucke.VorlageID) In ([@Nummern]))); -
Nachtrag:
Ich bin davon ausgegangen, dass Du SQL verwendest und habe erst nachher gesehen, dass es eine Access Query ist.
Hier würde es dann so aussehen:
WHERE @Nummern + ',' LIKE '*' + Format(GA_Vordrucke.VorlageID) + ',*'
Nebenbei: Im SQL Server Statement fehlt noch eine ) nach NVARCHAR(100)
WHERE @Nummern + ',' LIKE '%' + CAST(GA_Vordrucke.VorlageID AS NVARCHAR(100)) + ',%'
Gruss
Henry
Henry Habermacher wrote:Du kannst das mit einem LIKE lösen:
WHERE @Nummern + ',' LIKE '%' + CAST(GA_Vordrucke.VorlageID AS
NVARCHAR(100) + ',%'- Als Antwort markiert NicoNi Montag, 18. Juni 2012 11:15