Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/06/2011, 10h36   #1
Invité de passage
 
Homme
Étudiant
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 1
Points : 1
Par défaut Probléme automatisation d'un numéro de produit.

Bonjour

Actuellement en BTS informatique , au cours de mon stage je dois effectuer une base de données sous Access 2007/vba.
J'ai un formulaire produit rattaché à une table produit , ce formulaire permet de se déplacer entre les enregistrements de la table produit, il possède plusieurs boutons 1 ajouter, 1 enregistrer, 1 supp, 1 quitter et ensuite deux boutons pour se déplacer entre les différents enregistrements qui sont stockés dans deux champs du formulaire. les boutons sont programmés en VBA. Dans ma table j'ai deux champs numprodet libellé qui sont dans le formulaire.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 Private Sub cmdajouter_Click()      
         Dim nummax As Integer
              flag = False
              rstprod.AddNew
               afficher
        Dim RSTMAX As Recordset
        Dim requete As String
         requete = "SELECT MAX(numprod) as maxi FROM Produit;"
        Set RSTMAX = CurrentDb().OpenRecordset(requete)
         If RSTMAX.EOF Then
            nummax =  1
        Else
            nummax = RSTMAX![maxi] + 1
        End If
            RSTMAX.Close
            txtnum.Value = nummax
            txtnom.SetFocus
 
            MsgBox "Aprés avoir complété les zones de texte, n'oubliez pas d'appuyer sur le bouton enregistrer", vbOKOnly, "Message"
            cmdenreg.Visible = True
End Sub
Alors voici mon problème, lorsque la table produit est vide et que j'appuie sur le bouton ajouter il me met une erreur de "NULL" au niveau de nummax = RSTMAX![maxi] + 1, et il ne prend pas en considération le fait qu'il n'y est rien dans la table et commencé par 1 , mais lorsque je rajoute directement un enregistrement dans la table la il incrémente. Est-ce que quelqu'un a une solution ?
Darkbabar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 11h08   #2
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Bonjour,

Je pense que le problème vient du fait que justement tu n'ai rien dans ta base, donc lorsque tu fais ta requête, tu ne sélectionne que NULL du coup tu stock rien dans RSTMAX.

Tu devrais faire un test avec Isnull et Dlookup sur ta table avant de lancer ton If.
Ou bien simplement un test sur RSTMAX avec Isnull du genre :

Code :
1
2
If Isnull(RSTMAX) then
RSTMAX = 0
Ou quelque chose comme ça, si tu ne vois vraiment pas ce que je veux dire, je pourrais encore t'apporter d'autres précisions.
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 19h40   #3
Invité de passage
 
Homme
Étudiant
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 1
Points : 1
merci de ta réponse

Oui je veux bien des précisions. Parce que j'ai essayé en fessant un IS null mais cela me renvoie le même résultat. Il ne prend pas en considération le premier IF il passe directement au else ce qui provoque l'erreur du "null" et le nummax = 1 est censé remédier à ça. Le programme croit toujours qu'il y a quelque chose dans la table.
Darkbabar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h28   #4
Membre actif
 
Homme Quentin D.
Étudiant
Inscription : avril 2011
Messages : 175
Détails du profil
Informations personnelles :
Nom : Homme Quentin D.
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : avril 2011
Messages : 175
Points : 165
Points : 165
Essaye ça :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub cmdajouter_Click()      
         Dim nummax As Integer
              flag = False
              rstprod.AddNew
               afficher
        Dim RSTMAX As Recordset
        Dim requete As String
         requete = "SELECT MAX(numprod) as maxi FROM Produit;"
        Set RSTMAX = CurrentDb().OpenRecordset(requete)
         If Isnull(Dlookup("[numprod]","Produit") then
            nummax =  1
        Else
            nummax = RSTMAX![maxi] + 1
        End If
            RSTMAX.Close
            txtnum.Value = nummax
            txtnom.SetFocus
 
            MsgBox "Aprés avoir complété les zones de texte, n'oubliez pas d'appuyer sur le bouton enregistrer", vbOKOnly, "Message"
            cmdenreg.Visible = True
End Sub
__________________
Pourquoi faire aujourd'hui ce que l'on peut remettre à demain ?
Nitromard est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/06/2011, 13h54   #5
Invité de passage
 
Homme
Étudiant
Inscription : juin 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 3
Points : 1
Points : 1
Ah oui d'accord j'avais pas vu les choses comme ça

Je te remercie de ton aide.
Darkbabar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h31.


 
 
 
 
Partenaires

Hébergement Web