Problème de conversion VBA access 2007

Résolu/Fermé
Johny boy - 29 mai 2008 à 09:41
Désiré SOP Messages postés 5 Date d'inscription mardi 22 septembre 2009 Statut Membre Dernière intervention 22 septembre 2009 - 22 sept. 2009 à 19:11
Bonjour,

Je suis toujours en phase d'apprentissagesur access 2007 et j'aimerais savoir comment convertir une zone texte où il n'y a que des chiffres dans une variable. Voici mon code :

  DoCmd.Hourglass True

    Set db = CurrentDb()
    ' recherche par numéro de dossier
    
        Let nb_lg_liste_selection = 0

        Let query_def = "SELECT DOSS.num_dossier_DOSS, DOSS.nom_usuel_DOSS "
        Let query_def = query_def & "FROM DOSS "
        Let query_def = query_def & "WHERE DOSS.num_dossier_DOSS = [Text4]"
        Set curseur = db.OpenRecordset(query_def, DB_OPEN_DYNASET)
        curseur.MoveFirst

        a = [Text4]
        MsgBox a                              ==> pour vérifier la valeur
        Do Until (curseur.EOF)

            If (nb_lg_liste_selection > 199) Then
                Exit Do
            End If
            liste_selection(nb_lg_liste_selection, 0) = curseur!num_dossier_DOSS
            liste_selection(nb_lg_liste_selection, 1) = curseur!nom_usuel_DOSS

            nb_lg_liste_selection = nb_lg_liste_selection + 1

            curseur.MoveNext

        Loop
    DoCmd.Hourglass False


En gros quelqu'un doit entrer un numéro de dossier dans une zone de texte (Text4), puis par validation d'un bouton, afficher dans une liste le numéro et le nom de la personne.
Rien ne marche : MsgBox me renvoi 0 et rien ne s'affiche dans la liste (logique).
Merci a vous !
A voir également:

7 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 mai 2008 à 10:03
bonjour,
Récupère la valeur de Text4 dans une variable de type Integer avant de faire la requête.
Dim a As Integer
a = Cint(Text4)
....
        Let query_def = "SELECT DOSS.num_dossier_DOSS, DOSS.nom_usuel_DOSS "
        Let query_def = query_def & "FROM DOSS "
        Let query_def = query_def & "WHERE DOSS.num_dossier_DOSS = " & a
....


;o)
polux
0
Merci beaucoup Polux31, mais sa serais trop facile ... quand on sais pas programmer c'est jusqu'au bout !
En effet sa marche toujours pas ! une erreure est toujours là :

Dim a As Integer
a = CInt(Texte4)

On Error Resume Next

    DoCmd.Hourglass True

    Set db = CurrentDb()
    ' recherche par numéro de dossier
    
        Let nb_lg_liste_selection = 0
        
        
        Let query_def = "SELECT DOSS.num_dossier_DOSS, DOSS.nom_usuel_DOSS "
        Let query_def = query_def & "FROM DOSS "
        Let query_def = query_def & "WHERE DOSS.num_dossier_DOSS = " & a
        
        Set curseur = db.OpenRecordset(query_def, DB_OPEN_DYNASET)
        curseur.MoveFirst
        MsgBox a
        Do Until (curseur.EOF)

            If (nb_lg_liste_selection > 199) Then
                Exit Do
            End If
            liste_selection(nb_lg_liste_selection, 0) = curseur!num_dossier_DOSS
            liste_selection(nb_lg_liste_selection, 1) = curseur!nom_usuel_DOSS

            nb_lg_liste_selection = nb_lg_liste_selection + 1

            curseur.MoveNext

        Loop
    DoCmd.Hourglass False

End Sub


"Erreur d'execution '6'
Dépassement de capacité" qu'il me dit !

Le débogeur pointe alors sur "a = CInt(Texte4)";

Je sens que c'est une erreure de m**** !
Help-Me.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 mai 2008 à 10:59
lol ... faut rester zen surtout ...

je vois ça :
a = CInt(Texte4)"; alors que dans ton premier post c'était Text4 ...

;o)
0
Euh oui, qu'est-ce que tu veux dire ?
Qu'est-ce je doit modifier ?

je vois ça : 
a = CInt(Texte4)"; alors que dans ton premier post c'était Text4 ... 


... j'ai bien modifier cette ligne non ?
0
Johny boy > Johny boy
29 mai 2008 à 11:26
Autant pour moi je sais pas lire ...
C'est bien Texte4, et le problème est toujours présent ...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 mai 2008 à 12:02
je ne vois pas ... peut être : a = Clng(Texte4) ...

Quelle est le type du champ num_dossier_DOSS dans la table DOSS de la base de donnée ?
0
Je comprend pas, num_dossier_DOSS est de type entier long

Il arrive vraiment pas a coller ce qu'il y a dans "texte4" dans "a" c'est oppressant ... il renvoi toujours "0".

Je galère depuis mardi là-dessus. Quelqu'un a une corde ? :)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 mai 2008 à 14:09
Si le champ num_dossier_DOSS est de type entier long, il faut que la variable a soit également de type Long :
Dim a As Long

a = CLng(Texte4)


à voir ...

;o)
0
T'es vraiment un champion ! Merci, je m'en doutais c'étais une erreur de débutant ...
Merci beaucoup. Sujet terminé, enfin ! :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 mai 2008 à 14:21
de rien, content de t'avoir enfin dépatouillé ...

bonne continuation,

;o)

polux
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 mai 2008 à 14:22
n'oublie pas de mettre en résolu ;o)
0
Désiré SOP Messages postés 5 Date d'inscription mardi 22 septembre 2009 Statut Membre Dernière intervention 22 septembre 2009
22 sept. 2009 à 19:11
Je pense vouloir une documentation pour nul en visualbasic il fonctionne ce langage fonctionne dans une base de donnée access ainsi je pourrai évoluer avec les documents dont je dispose.
Merci d'avance
0