VBA ACCESS

Résolu
PacomeBAD Messages postés 5 Statut Membre -  
 pistol -
Bonjour,

Je suis en train d'établir un programme sur VBA mais je débute et je rencontre pas mal de difficultés.
La j'ai un gros problement avec les "MoveFirst" et "MoveNext" dans ma fonction. Un message d'erreur apparait: "Aucun enregistrement en cours". 

Voici ma fonction:
_________________________________________________________________________________________
Sub MeF_Gale()

DoCmd.SetWarnings False

Dim CSQL As String
Dim ReqTemp As Recordset
Dim TableTemp As Recordset
Dim CsqlTemp As Recordset
Dim VarID As String
Dim VarClasse As Integer

Set db = DBEngine(0)(0)
Set ReqTemp = db.OpenRecordset("R_Import_Vols_MaJ_Classe_2")
Set TableTemp = db.OpenRecordset("T_Import_Temp_4_Classe")

    ReqTemp.MoveFirst        '''-----C'est ici que ca bloq

'''ETC.----------------------


End sub
____________________________________________________________________________________________

Voila, si vous pouvez m'aider, je vous en remercie d'av
ance

10 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    il faut plutôt faire : On Error Resume Next et gérer l'erreur:

    On Error Resume Next
    .....
    ....
    
    If Err.Number <> 0 Then
      'code en cas d'erreur ex: un message d'alerte
      Exit Sub  ' on sort de la procédure
    Else     'sinon
      'code à exécuter si pas d'erreur
    End If


    ;o)
    1
    1. Hystic
       
      Et si je ne veux pas sortir de ma procédure et je veut juste qu'il insert element = ""
      qu'il continu sa boucle normalement à chaque fois qu'il croise une erreur qu'il ne connait pas...
      0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    As-tu essayé avec un "Select *" sur une table ?

    ;o)

    polux
    0
  3. amigo
     
    Bonjour

    jec rois que la syntaxe est:
    Set ReqTemp = db.OpenRecordset("R_Import_Vols_MaJ_Classe_2", dbOpenTable)
    Set TableTemp = db.OpenRecordset("T_Import_Temp_4_Classe", dbOpenTable)

    Ciao
    0
  4. PacomeBAD Messages postés 5 Statut Membre
     
    OK. j vais essayer ta syntaxe pour voir si ca marche.
    Sinon j ai pas essayé avec un select*, mais ca sert a quoi?

    Ect ce que mon probleme peut venir du fait que ma table est vide?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PacomeBAD Messages postés 5 Statut Membre
     
    Ca marche pas...
    0
  7. Polux31 Messages postés 7219 Statut Membre 1 204
     
    lol ben oui si ta table est vide .... ta requete ne retourne rien :os
    0
    1. Hystic
       
      Et si la base est vide(dans certain cas) justement comment on fait pour éviter ce message d'erreur ?
      Pourtant j'ai bien mis un On error Goto .....
      voilà le bout de code :
      entrée :
      Set DB = CurrentDb

      Dim test2 As DAO.Recordset

      On Error GoTo entrée2
      Set test2 = DB.OpenRecordset("SELECT SP2.elementmachine AS element1 FROM SP2 WHERE (((SP2.errorcode) Like '" & coderror & "'));")
      Element = test2!element1

      Or il arrive qu'un Code erreur trouvé ne soit pas dans la base de donné et donc je voudrais que élément soit = ""

      moi le On error Goto ne fonctionne pas j'ai toujours le message d'erreur : Aucun enregistrement en cours ...


      Merci de vos réponse
      0
  8. PacomeBAD Messages postés 5 Statut Membre
     
    Merci lol
    0
  9. Polux31 Messages postés 7219 Statut Membre 1 204
     
    ça veut dire qu'il faut que tu fasses une récursive ... et enlever Exit Sub ... tu peux également tester le recordset par RecordSet.Count qui renvoie le nombre d'enregistrement. Si = 0 alors élément ="" ...

    ;o)
    0
    1. Hystic
       
      je ne suis pas sur d'avoir bien compris le Recordset.Count

      sSQL4 = "Select elementmachine From SP2 Where errorcode Like '" & coderror & "';"

      'Ouverture du recordset -> execution de la requête
      Set rst5 = DB2.OpenRecordset(sSQL4, dbOpenForwardOnly, dbReadOnly)
      If rst5.Count = 0 Then
      GoTo entrée2
      End If
      'si le code existe, définition de l'élément et du descriptif
      Element = rst5.Fields("elementmachine")

      Il me met membre de méthode ou de données introuvable
      0
  10. Polux31 Messages postés 7219 Statut Membre 1 204
     
    fait :
    Dim nb As Long

    et après l'exécution de la requête :

    nb = rst5.RecordSet.Count
    If nb = 0 then
    ....

    ;o)
    0
    1. Hystic
       
      Erreur de compilation : Membre de méthode ou de données introuvable :-/

      Set rst5 = DB2.OpenRecordset(sSQL4, dbOpenForwardOnly, dbReadOnly)
      nb = rst5.Recordset.Count
      If nb = 0 Then
      GoTo entrée2
      End If
      0
  11. pistol
     
    Sujet ancien mais pour répondre, la syntaxe est du type:

    dim ReqTemp as recordset

    Set ReqTemp = db.OpenRecordset("R_Import_Vols_MaJ_Classe_2")

    if(ReqTemp.RecordCount>0)then
    ReqTemp.MoveFirst
    'code ici
    else

    end if
    0