IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] [ADO] Like sur base Access


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 12
    Points : 10
    Points
    10
    Par défaut [VB6] [ADO] Like sur base Access
    Bonjour,

    J'ai une requête à faire sur une table avec un like.
    Pour trouver les champs commençant par A, je fais un filter sur le recordset :
    RS.Filter "Champ like 'A*'"

    Par contre, si je recherche les champs se terminant par A
    RS.Filter = "Champ like '*A'"
    ça ne fonctionne pas.

    J'ai également le même problème avec le filter suivant :
    RS.Filter = "Champ like '*A*'"

    Quelqu'un a-t-il la solution ?
    Écrivez vos messages dans un langage clair parce que c pô cool d'avoir a pi G le sens 2 la phrase avt 2 pouvoir i répondre.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    J'ai eu le même problème que toi : le LIKE ne fonctionne pas tout à fait comme sous VBA :

    - Essaie de tout mettre en majuscules
    - Remplace * par %

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE UCase(Champ) LIKE '%" & UCase(A) & "%' "

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Réponse
    J'ai trouvé la solution :
    le like 'A*' et le like '*A*' fonctionnent tous les deux en VB en faisant un filter.
    Il reste donc le like '*A' à résoudre :
    Il suffit pour cela de remplacer le like '*A' par like '*A*' et de faire ensuite un filtre avec quelques lignes de code pour afficher uniquement les lignes dont le champ se termine par A.

    Voici ce que j'ai fait dans mon programme :
    Rs est le Recordset
    libellé est le nom d'un champ
    txtlibelle est la zone de texte où j'ai entré mes critères de sélection.

    If InStr(1, TxtLibelle.Text, "*") = 1 Then 'si la zone recherchée commence par une étoile (recherche du type *A)
    If InStr(2, TxtLibelle.Text, "*") > 1 Then 'si la zone recherchée se termine par une étoile (recherche du type *A*)
    Tb.Filter = "libelle like '" & TxtLibelle.Text & "'"
    If Not Tb.EOF Then
    Tb.MoveFirst
    Do While Not Tb.EOF
    'Affichage des données
    Tb.MoveNext
    Loop
    Exit Sub
    Else
    Screen.MousePointer = 0
    MsgBox "Aucun résultat !", vbApplicationModal + vbInformation
    End If
    Else 'recherche du type *A
    Tb.Filter = "libelle like '" & TxtLibelle.Text & "*'"
    If Not Tb.EOF Then
    Tb.MoveFirst
    Do While Not Tb.EOF
    If Mid$(Tb!libelle, Len(Tb!libelle) - (Len(TxtLibelle.Text) - 1) + 1, Len(TxtLibelle.Text) + 1) = Mid$(TxtLibelle.Text, 2, Len(TxtLibelle.Text) - 1) Then
    'affichage des données
    End If
    Tb.MoveNext
    Loop
    Exit Sub
    Else
    Screen.MousePointer = 0
    MsgBox "Aucun résultat !", vbApplicationModal + vbInformation
    End If
    End If
    Else 'recherche du type A ou du type A*
    Tb.Filter = "libelle like '" & TxtLibelle.Text & "'"
    If Not Tb.EOF Then
    Tb.MoveFirst
    Do While Not Tb.EOF
    'affichage des données
    Tb.MoveNext
    Loop
    Exit Sub
    Else
    Screen.MousePointer = 0
    MsgBox "Aucun résultat !", vbApplicationModal + vbInformation
    Exit Sub
    End If
    End If

    Et voilà
    Écrivez vos messages dans un langage clair parce que c pô cool d'avoir a pi G le sens 2 la phrase avt 2 pouvoir i répondre.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Ton code est un peu compliqué avec un recordset ... personnellement, j'aurais fait une requête select. (cf tutoriel de Cafeine dans la section Access ...).
    M'enfin, si ça marche ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    C'est peut être normal que tu trouve cela difficile car c'est du VB et pas du VBA !

    D'autre part, le RecordSet est une requête Select défini de la manière suivante :

    Dim RS as adodb.recordset
    dim rSQL AS String
    set RS=new ADODB.Recordset
    rSQL="SELECT * from Table "
    RS.Open rSQL, Base, adOpenStatic, adLockReadOnly

    Écrivez vos messages dans un langage clair parce que c pô cool d'avoir a pi G le sens 2 la phrase avt 2 pouvoir i répondre.

  6. #6
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    et ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rSQL="SELECT * from Table WHERE Libelle Like '*A'"
    Ca ne amrche pas ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Voilà, c'est ce que je voulais dire, Zem.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    rSQL="SELECT * from Table WHERE Libelle Like '*A'"

    fonctionne très bien en DAO mais pas en ADO !!!

    et c'est là tout le problème
    Écrivez vos messages dans un langage clair parce que c pô cool d'avoir a pi G le sens 2 la phrase avt 2 pouvoir i répondre.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 87
    Points : 68
    Points
    68
    Par défaut
    Pourtant la requête que je t'ai donné plus haut :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rSQL = "SELECT * FROM Table WHERE UCase(Champ) LIKE '%A'; "
    fonctionne nickel chez moi, en ADO ... on a peut être pas le même VB6 ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Ok, ça marche. Je n'avais pas mis le % et j'avais laissé l'étoile.

    Je te remercie beaucoup. C'est génial. Ça faisait longtemps que je faisais des bidouilles pour arriver à mes fins. ENCORE MERCI.
    Écrivez vos messages dans un langage clair parce que c pô cool d'avoir a pi G le sens 2 la phrase avt 2 pouvoir i répondre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Connexions ADO simultanées sur base ACCESS et sur feuille Excel
    Par zardoz45 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/03/2015, 17h22
  2. connexion ado sur base access
    Par olibara dans le forum ADO.NET
    Réponses: 6
    Dernier message: 01/05/2011, 14h33
  3. verrou sur base access 2003
    Par pascale86 dans le forum Access
    Réponses: 1
    Dernier message: 18/09/2006, 14h49
  4. Réponses: 1
    Dernier message: 04/04/2006, 11h28
  5. Jointure Externe sur base ACCESS par Query Excel
    Par marie10 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/03/2006, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo