Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Passare come SqlParameter un array di valori separati da virgola (1, 4, ...)

    Sto cercando eseguire una select di questo tipo:

    codice:
    SELECT * FROM Utente WHERE IDUtente IN (1,2,3,5,7)
    In pratica voglio tirare fuori tutti gli utenti che hanno come IDUtente i valori 1, 2, 3, 5 e 7.

    Questa query viene impostata tramite l'utilizzo di parametri in questo modo:
    codice:
    ...
    da.SelectCommand.CommandText ="SELECT * FROM Utente WHERE IDUtente IN @Tabella"
    da.SelectCommand.Parameters.Add(New SqlParameter("@Tabella",Trasforma(Table)))
    da.Fill(Data)
    ...
    dove Trasforma è una funzione che restituisce una stringa

    codice:
    Private Function Trasforma(ByVal table AS UtenteDataTable) As String
    ...
    End Function
    La funzione Trasforma funziona bene: prende come parametro un datatable e restituisce una stringa che contiene gli IDUtente da cercare in questo modo: (1,2,3,5,7)

    Quando però il parametro @Tabella viene sostituito la query diventa
    codice:
    SELECT * FROM Utente WHERE IDUtente IN '(1,2,3,5,7)'
    perché il risultato della funzione è di tipo String, e così non funziona.

    Invece la query funzionerebbe (l'ho provata direttamente nel db) se fosse senza apici perché (1,2,3,5,7), di fatto, è una tabella:
    codice:
    SELECT * FROM Utente WHERE IDUtente IN (1,2,3,5,7)
    Qualcuno sa come risolvere questo problema?

    Grazie.

    Giulio
    Giulio Ferri
    giulioferri.it

    Anche un orologio fermo ha ragione due volte al giorno (Giorgio Faletti)

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    559
    semplicemente non si puo fare!
    se vuoi usare una IN devi passargli i valori direttamente nella stringa sql!

    ovvero:

    da.SelectCommand.CommandText ="SELECT * FROM Utente WHERE IDUtente IN " + trasforma(..);
    se nella vita avro avuto la possiblita di aiutare qualcuno non avro vissuto invano (E. Dikinson)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.