none
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])));

    Sonntag, 17. Juni 2012 19:51

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
    Montag, 18. Juni 2012 05:39

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
    Henry

    NicoNi 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])));

    Montag, 18. Juni 2012 05:33
  • 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
    Montag, 18. Juni 2012 05:39
  • Vielen Dank für die Hinweise.

    Es werden max. 2-3 Datensätze  pro Durchlauf hinzugefügt.

    Ich werde Deine Lösung mal ausprobieren, ebenso wie jeden DS einzeln hinzufufügen.

    Montag, 18. Juni 2012 11:15