[VBA - Access 2003] 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 - 10 juil. 2008 à 11:25
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 - 11 juil. 2008 à 09:52
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 >>>A cette ligne, 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.
Je rappelle que mon but est de désactiver le bouton lorsqu'il n'y a pas d'enregistrement.
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
11 juil. 2008 à 09:52
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