VBA access probleme d'incompatibilité

bema93 -  
 Utilisateur anonyme -
Bonjour, toule monde
j'ai un probleme en VBA access
je souhaite recuperer le resultat d'une requete selection dans une variable et le manipuler comme un entier (notamment faire une operation de comparaison) mais il m'affiche "Icompatibilite de type"
quelqu'un a une idée de comment résoudre ce probème

'recuperation de la valeur de la requête
Dim qdfTmp As QueryDef
Dim res_req As String
REQ = CurrentDb.CreateQueryDef("Nom_requete", "SELECT max(entier) FROM import;")
Set qdfTmp = CurrentDb.QueryDefs("Nom_requete")
res_req = qdfTmp.SQL

Dim I As Long ' la valuer avec laquelle je vais comparer

Do While I <= CLng(res_req) <==CA COINCE ICI !!!!
###########
corps de la boucle
###########
Loop

A noter que la fonction Val ne fonctionne pas non plus.
Merci a tous ceux et celles qui peuvent m'aider.

1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    Sub Test()
    
        Dim I As Long
    
        Do While I <= CLng(res_req) '<==CA COINCE ICI !!!!
            '###########
            DoEvents
            'corps de la boucle
            '###########
        Loop
    
    End Sub
    '
    


    ' Dans votre exemple, I est déclaré mais pas initialisé !!!

    ' res_req est déclaré comme une chaine de caractère et est
    ' initialisé avec la chaine formant la requête SQL
    ' donc, ici vous récupéré la chaine de caractère qui forme
    ' la requête SQL et non le résultat de la requête.

    ' Si je comprends ce que vous tentez de faire :
    Sub Cherche()
    
        Dim rs As Recordset, Resultat As Long
        
        Dim qdfTmp As QueryDef
        Dim res_req As String
        REQ = CurrentDb.CreateQueryDef("Nom_requete", "SELECT max(entier) FROM import;")
        
        Set rs = CurrentDb.OpenRecordset("Nom_requete")
        rs.MoveLast
        rs.MoveFirst
        Resultat = rs.RecordCount
        
        Do While I <= Resultat
            DoEvents
        Loop
        
    End Sub
    '
    
    -1