VBA ACCESS
Résolu
PacomeBAD
Messages postés
5
Statut
Membre
-
pistol -
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'avance
10 réponses
il faut plutôt faire : On Error Resume Next et gérer l'erreur:
;o)
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)
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
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
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?
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lol ben oui si ta table est vide .... ta requete ne retourne rien :os
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
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
ç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)
;o)
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
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
qu'il continu sa boucle normalement à chaque fois qu'il croise une erreur qu'il ne connait pas...