VBA ACCESS

Résolu/Fermé
PacomeBAD Messages postés 5 Date d'inscription mercredi 2 avril 2008 Statut Membre Dernière intervention 4 avril 2008 - 2 avril 2008 à 12:06
 pistol - 6 févr. 2013 à 11:25
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 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 14:21
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
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 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 avril 2008 à 12:27
Bonjour,

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

;o)

polux
0
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 Date d'inscription mercredi 2 avril 2008 Statut Membre Dernière intervention 4 avril 2008
2 avril 2008 à 17:35
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 Date d'inscription mercredi 2 avril 2008 Statut Membre Dernière intervention 4 avril 2008
2 avril 2008 à 17:39
Ca marche pas...
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
2 avril 2008 à 19:18
lol ben oui si ta table est vide .... ta requete ne retourne rien :os
0
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 Date d'inscription mercredi 2 avril 2008 Statut Membre Dernière intervention 4 avril 2008
4 avril 2008 à 16:39
Merci lol
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 15:11
ç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
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 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
16 juin 2008 à 16:05
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
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
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