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

VBA Access Discussion :

[vba] Mon findfirst ne trouve aucune donnée.


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut [vba] Mon findfirst ne trouve aucune donnée.
    Bonjour, je programmes en Access 2003. Comme mon titre l'indique, lorsque je fais mon findfirst, il ne trouve aucune donnée et reste à la première. Voici un exemple du code qui ne fonctionne pas.
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            Dim vARechercher As String
            vARechercher = rstOld!NOSPEC
            rstDesc.FindFirst ("[NOSPEC] = " & vARechercher)
            If Trim(rstDesc!NOSPEC) = vARechercher Then
                rstGfCommande!PRONAM = rstDesc!PRNAME
            End If

    J'ai regarder dans le debugger, les valeurs qui sont rechercher sont bien dans la base de données. Le type de données de NOSPEC est Décimal de longueur 7. J'ai essayer de mettre
    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    rstDesc.FindFirst ( "[NOSPEC] = " & CDec(vARechercher))
    mais ca n'a pas fonctionnez non plus. Int n'a pas la capacité pour pouvoir avoir 7 caractère. CLng et CDbl ne fonctionnent pas non plus. Je pensais que le problème pouvait être un de compatibilite entre les String et Decimal, mais je ne sais pas j'aimerais avoir votre avis la-dessus. Ca ne me fais aucun message d'erreur. Il ne trouve simplement pas, même si les champs sont identique.

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Après un findFirst, la bonne commande à utiliser est NoMatch pas l'égalité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Dim vARechercher As String
    vARechercher = rstOld!NOSPEC
    rstDesc.FindFirst ("[NOSPEC] = " & vARechercher)
    If not rstDesc.noMatch Then
        rstGfCommande!PRONAM = rstDesc!PRNAME
    End If
    Vois ce que cela donne avec ce code.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Merci, pour le conseil du NoMatch, Je l'avais fais dans d'autres parties, mais pour cette partie je l'avais oublier.

    Mais ca ne rentre pas plus dans le If, si je regarde les données de ma variable vARechercher et les compares avec mes données dans la BD c'est que des valeurs équivalente.

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 039
    Par défaut
    Le type de données de NOSPEC est Décimal de longueur 7
    alors il faut une syntaxe appropriée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rstDesc.FindFirst ( "[NOSPEC] = '" & vARechercher & "'" )
    Hope this may be some help

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 18
    Par défaut
    Citation Envoyé par micniv
    alors il faut une syntaxe appropriée :

    Code :
    rstDesc.FindFirst ( "[NOSPEC] = '" & vARechercher & "'" )
    Je crois que les ' sont seulement pour les String, j'ai essayé de l'intégrer à mon code et j'obtient l'erreur. "Type de données incompatible dans l'expression du critère."

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Clairement c'est un nombre donc il ne faut pas de ' autours.

    Essaye de faire une requète select, pas en code mais dans l'éidteur de requète, et vois si tu peux avoir l'enr que tu désir.

    un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select [NOSPEC] from maTable where [NOSPEC]=maValeur
    Fait aussi afficher rstDesc.recordCount(), si il est à 0 c'est que tu as un pb à l'ouverture de rstDesc.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 039
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 039
    Par défaut
    le probleme est en fait la déclaration d'un décimal (aussi je ne les utilise jamais)

    Pour le pb ci-dessus, ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim vARechercher As Variant
    
    ....
    vARechercher = 3.444  (exemple)
    RecordsetClone.FindFirst ("[NOTTT] = " & Replace(vARechercher, ",", "."))
    ...
    cordialemnt

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/10/2012, 11h56
  2. ORA-01403: Aucune donnée trouvée
    Par MaRTy59 dans le forum PL/SQL
    Réponses: 9
    Dernier message: 10/08/2010, 11h26
  3. ERREUR Aucune donnée trouvée
    Par TheBlue dans le forum SQL
    Réponses: 1
    Dernier message: 20/05/2008, 23h05
  4. Réponses: 1
    Dernier message: 10/02/2008, 20h31
  5. Réponses: 2
    Dernier message: 29/01/2008, 20h20

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