none
Clause Like avec parametres sur base access RRS feed

  • Question

  • Bonjour,

     

    Je suis sous XP Pro, je travaille en VB Net 2005 PRO, j'utilise une base access 2003.

     

    J'ai un problème pour créer une requête sur une base access cette requête est normalement simple, voici le code

    SELECT     NoAuto, RefBoite, DescriptifContenu
    FROM         Contenu
    WHERE     (DescriptifContenu LIKE @valeur + '%')

    @valeur est un paramètre, le problème est que le générateur de requête de VB Net me refuse cette syntaxe et remplace systématiquement @valeur par '@valeur'

     
    Compte tenu que le générateur place mon paramètre entre apostrophes, ma requête est complètement dénaturée.

     

    Je n'ai pas réussi à trouver sur les forums, alors si quelqu'un peut m'aider, je l'en remercie d'avance.

     

    Jean-Michel

    mercredi 5 mars 2008 10:19

Toutes les réponses

  • Bonjour,

    Le plus simple serait d'ajouter '%' directement à la valeur de ton paramètre :

     

    Code Snippet
    SqlParameter param = new SqlParameter("@valeur", maValeur + "%");

     

     

    Guillaume

    mercredi 5 mars 2008 10:28
  • onjour,

     

    C'est ce que je fais, mais le problème est que le générateur de requête refuse mon paramètre, apparament @valeur lui pose problème, je me demande s'il n'ay a pas une syntaxe particulière pour access.

     

    Jean-Michel

     

    mercredi 5 mars 2008 10:41
  •  

    Bonjour

    Ca fait plusieurs années que je n'ai pas bossé avec Access, mais le caractère générique pour like n'était pas * au lieu de %?

    mercredi 5 mars 2008 10:46
  • onjour,

     

    Ou alors autre éventualité, le générateur de requête VB Net n'est pas fait pour être utilisé avec Access ?

     

    Mais ça me paraîtrait surprenant.

     

    Jean-Michel

     

    mercredi 5 mars 2008 10:54
  • Bonjour,

    Désolé je me suis trompé de type de paramètre et donc de syntaxe. Si vous accédez à Access, vous utilisez normalement des OleDbXXX. Dans le cas des OleDbCommand et OldDbParameter, la syntaxe est la suivante :

     

    Code Snippet

    Dim cmd As New OleDbCommand("SELECT NoAuto, RefBoite, DescriptifContenu FROM Contenu WHERE DescriptifContenu LIKE ?")

    cmd.Parameters.Add(New OleDbCommand("@valeur", maValeur & "%")

     

     

    OLE DB .Net ne gère pas les paramètres nommés, vous devez donc utilisez dans votre requète des "?" pour indiquer vos paramètres et ensuite ajouter dans l'ordre les OleDbParameter avec le nom que vous voulez.

     

    Guillaume

    mercredi 5 mars 2008 10:59
  • Ok Guillaume,

     

    Je vais essayer par le code parce qu'avec le générateur de requête de Visual Studio, je ne peux pas donner de paramètres, ou plus exactement je ne sais pas comment faire.

     

    Merci pour tes réponses.

     

     

    mercredi 5 mars 2008 11:46
  •  Guillaume ROUCHON A écrit:

    Bonjour,

    Désolé je me suis trompé de type de paramètre et donc de syntaxe. Si vous accédez à Access, vous utilisez normalement des OleDbXXX. Dans le cas des OleDbCommand et OldDbParameter, la syntaxe est la suivante :

     

    Code Snippet

    Dim cmd As New OleDbCommand("SELECT NoAuto, RefBoite, DescriptifContenu FROM Contenu WHERE DescriptifContenu LIKE ?")

    cmd.Parameters.Add(New OleDbCommand("@valeur", maValeur & "%")

     

     

    OLE DB .Net ne gère pas les paramètres nommés, vous devez donc utilisez dans votre requète des "?" pour indiquer vos paramètres et ensuite ajouter dans l'ordre les OleDbParameter avec le nom que vous voulez.

     

    Guillaume

     

    OleDbParameter et non OleDbCommand dans le code non?

     

    Jean-Michel, pourrait-on voir ton code tel que tu l'utilises? Histoire de comprendre pourquoi tu as des ''...

    lundi 21 avril 2008 18:56