Bonjour à tous!

J'ai une fonction cosql qui me permet de mettre le résultat d'une reqûete dans un tableau spécifié préalablement.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
Public Function cosql(ByRef sqlcmd As String, ByRef T(,) As String) As Boolean
        Dim dbco As OleDbConnection
        Dim dbdr As OleDbDataReader
        Dim dbcmd As OleDbCommand
        Dim i, j As Integer
        j = 0
        dbco = New OleDbConnection(ConnectionString)
        dbco.Open()
        dbcmd = New OleDbCommand(sqlcmd, dbco)
        dbdr = dbcmd.ExecuteReader
        ReDim T(dbdr.VisibleFieldCount - 1, 0)
        While dbdr.Read()
            For i = 1 To dbdr.VisibleFieldCount
                If Not VarType(dbdr(i - 1)) = VariantType.Null Then
                    T(i - 1, j) = ReQuote(dbdr(i - 1))
                Else
                    T(i - 1, j) = "0"
                End If
            Next i
            j = j + 1
            ReDim Preserve T(dbdr.VisibleFieldCount - 1, j)
        End While
        T(0, j) = "EOF"
        dbdr.Close()
        dbco.Close()
        dbco.Dispose()
        dbco = Nothing
        dbdr = Nothing
        dbcmd = Nothing
        i = Nothing
        j = Nothing
End Function
Le probléme c'est qu'en faisant de la sorte, je n'arrive pas à faire une reqûete parametrée, car il faudrait que je puisse ajouter des parametres selon chaque cas (étant donné que la chaine arrive déja telle qu'elle, sans savoir ce qui est authentique de ce qui a pu être injecté).

Est il possible, depuis une autre fonction, de faire quelquechose de semblable à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
With cosql().dbcmd.Parameters
            .AddWithValue("@test1", test1)
            .AddWithValue("@test2", test2)
            .AddWithValue("@test3", test3)
End With
'Et appeller ma fonction:
cosql("SELECT ville_id, lib_ville FROM VILLE WHERE lib_ville in (@test1,@test2,@test3", t_ville)