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

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
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
Polux31 Messages postés 7219 Statut Membre 1 204
 
Bonjour,

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

;o)

polux
0
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
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

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

Posez votre question
PacomeBAD Messages postés 5 Statut Membre
 
Ca marche pas...
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
lol ben oui si ta table est vide .... ta requete ne retourne rien :os
0
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
PacomeBAD Messages postés 5 Statut Membre
 
Merci lol
0
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
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
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
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
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