Problème de conversion VBA access 2007

Résolu
Johny boy -  
Désiré SOP Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   1 204
 
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
Johny boy
 
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   Statut Membre Dernière intervention   1 204
 
lol ... faut rester zen surtout ...

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

;o)
0
Johny boy
 
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
 
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   Statut Membre Dernière intervention   1 204
 
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
Johny boy
 
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   Statut Membre Dernière intervention   1 204
 
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
Johny boy
 
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   Statut Membre Dernière intervention   1 204
 
de rien, content de t'avoir enfin dépatouillé ...

bonne continuation,

;o)

polux
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
n'oublie pas de mettre en résolu ;o)
0
Désiré SOP Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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