Hello tout le monde,

Depuis ce matin j'essaie de parametrer une requête SQL en vain.

Apres avoir lu de nombraux posts sans aucun résultat probant , je m'en remets à vous ;-)

voici le code de ma méthode :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
Public Sub getQlqCh()

        Dim oOleDbConnection = New OleDb.OleDbConnection(Me.getConnectionString())
        oOleDbConnection.Open()

        If oOleDbConnection.State <> ConnectionState.Open Then
            Throw New DBException("La connection à la base de données n'a pas été correctement ouverte")
        End If

        Dim psql As String

        psql = " SELECT dbradio.ressph.NDS, dbradio.ressph.NDS, dbradio.ressph.SEQP, medcpofb.sprphm.PRNM, dbradio.ressph.QTPR, medcpofb.sprphm.PRNA "
        psql += "From dbradio.RESSPH, medcpofb.SPRPHM "
        psql += "WHERE dbradio.ressph.NDS In ( "
        psql += "                      SELECT DISTINCT (dbradio.sdsm.NDS) "
        psql += "                      FROM dbradio.SDSM, dbradio.RESSSI "
        psql += "                      WHERE dbradio.sdsm.NDS = dbradio.resssi.NDS "
        psql += "                      and dbradio.sdsm.DVIS >='10/26/2009' "
        psql += "                      and dbradio.sdsm.DVIS <='11/01/2009' "
        psql += "                      and dbradio.resssi.CSIT=@p "
        psql += "                    ) "
        psql += "and  medcpofb.sprphm.PRKO = dbradio.ressph.PRKO "
        psql += "order by dbradio.ressph.NDS asc"

        Dim cmd = New OleDbCommand()
        cmd.CommandText = psql
        cmd.Parameters.Add(New OleDbParameter("@p", OleDbType.VarChar, 2))
        cmd.Parameters("@p").Value = "PP"
        cmd.Connection = oOleDbConnection


        cmd.Prepare() ' L'exception se produit a cette instruction

        Dim dr As OleDbDataReader = cmd.ExecuteReader()

        While dr.Read()

            Dim listItem As New String("")
            listItem = dr.GetName("0")
            MsgBox(listItem)
            listItem = dr.GetValue("0").ToString()

            MsgBox(listItem)
            Dim values(dr.FieldCount) As Object
            dr.GetValues(values)
        End While
j'ai une OleDBConnection avec comme message :
SQL0206: La colonne @P ne se trouve pas dans les tables indiquées.
Cause . . . . . : La colonne @P ne se trouve pas dans la table *N de *N. Si le nom de table est *N, @P ne se trouve dans aucune des tables ou vues pouvant être référencées. Que faire . . . : Procédez de l'une des façons suivantes, puis renouvelez votre demande : - Assurez-vous que les noms de colonnes et de tables sont corrects. - Dans le cas d'une instruction SELECT, vérifiez que toutes les tables requises figurent bien dans la clause FROM. - Si vous souhaitez établir une corrélation, qualifiez le nom de colonne à l'aide de l'indicateur de table adéquat.
Et tant qu'on y est : Existe-il une méthode permettant de récupérer la valeur d'une colonne en fonction de du nom de la colonne (ex : MonOleDbDataReader.getValue("LeNomDeMaColonne"))

Merci pour votre aide les gars.