[Access 2003 - VBA] Problème d'enregistrement

Résolu/Fermé
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 - 9 juil. 2008 à 15:12
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 - 11 juil. 2008 à 09:51
Bonjour,

j'explique rapidement la situation. J'ai un formulaire (formulaire commande) contenant les champs "nom_site" et "n_site" correspondant aun n° et au nom d'un site de travaux. Ensuite j'ai un sous-formulaire avec les champs "n_site", "annee", "mois" puis un bouton à chaque ligne d'enregistrement permettant d'incrémenter à un nouvel enregistrement d'un mois, et d'une année tout les 12 mois à chaque click.
Exemple:
2007 - Janvier  < On clique
2007 - Février 
Le code de ce bouton marche quasi-parfaitement. J'aimerais en fait que lorsqu'il n'y a pas encore de mois et d'année entrés, que le bouton n'agisse pu et du coup qu'on rentre année et mois manuellement. J'ai donc fai ça :

Private Sub bt_temps_Click()

Dim VarMois As Integer
Dim VarAnnee As Integer

'Vérifie préalablement si le nom du site est renseigné
If Forms![Formulaire Commande]!nom_site <> "" Then
Set db = CurrentDb()
Set res = db.OpenRecordset("SELECT date_calcul_commande.n_annee, date_calcul_commande.n_date_projet, date_calcul_commande.n_mois, date_calcul_commande.n_site FROM date_calcul_commande WHERE (((date_calcul_commande.n_site) = " & Forms![Formulaire Commande]!n_site & "))ORDER BY date_calcul_commande.n_annee DESC,date_calcul_commande.n_mois DESC;")
If res![n_annee] <> Null Then 'N'agit pas lorsque qu'il n'y a pas d'enregistrement mais PROBLEME

VarMois = res![n_mois]
VarAnnee = res![n_annee]

'Permet de passer de Décembre à Janvier de l'année suivante
If VarMois = 12 Then
VarAnnee = VarAnnee + 1
VarMois = 1
Else
VarMois = VarMois + 1
End If

'N'enregistre que si l'année n'est pas entrée
If n_annee = 0 Then
n_annee = VarAnnee
n_mois = VarMois
End If
End If
End If
End Sub

PROBLEME >>> il me met "Erreur d'exécution '3021'. Aucun enregistrement en cours" lorsque je clique sur le bouton et qu'aucun enregistrement sont présent. J'ai donc besoin de votre aide pour y remédier. Merci à ceux qui prendront le temps de répondre.

CaPiT

1 réponse

CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
10 juil. 2008 à 08:31
Un petit up car je galère et je n'arrive pas à résoudre ce problème.
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
10 juil. 2008 à 16:10
xdomxfr je vois que tu métrises bien Access. Peux tu m'aider sur ce problème ?
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51 > CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010
11 juil. 2008 à 09:51
Vu que personne ne m'a répondu, j'ai trouvé la solution tout seul, en bricolant un peu !

J'ai donc fait une 1ère requête au début de mon code pour compter les enregistrements :

Set res_debut = db.OpenRecordset ("SELECT COUNT(date_calcul_commande.n_date_projet) AS compteur FROM date_calcul_commande WHERE (((date_calcul_commande.n_site = & Forms![Formulaire Commande]!n_site & " ));")

If res_debut!compteur <> 0 then

...

'tout le code
...

End If

Et ça marche nickel. Problème résolu. A+
0