A voir également:
- Access, valeur automatique étiquette
- Réponse automatique thunderbird - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Réponse automatique gmail - Guide
- Sommaire automatique word - Guide
7 réponses
Salut.
Voici un bout de code à créer en mode VBA dans Access. C du DAO et non ADO. A vérifier ce que ta base utilise.
Function Get_Compteur() As Long
Dim db As Database
Dim enr As Recordset
Dim compteur As Long
Set db = CurrentDb
Set enr = db.OpenRecordset("Societe", dbOpenDynaset)
If enr.RecordCount > 0 Then
enr.MoveLast
compteur = enr.RecordCount + 1
End If
enr.Close
db.Quit
Set enr = Nothing
Set db = Nothing
End Function
end sub
Cette fonction te retoune le nb d'enregistrement dans la table demandée (ici société) incrémenté de 1
Il ne te reste plus qu'à créer un événement sur le chargement de ton formulaire et dans le code de cet événement faire une ligne du genre
NomEtiquette.caption = Get_Compteur
Cdlt
IC
Voici un bout de code à créer en mode VBA dans Access. C du DAO et non ADO. A vérifier ce que ta base utilise.
Function Get_Compteur() As Long
Dim db As Database
Dim enr As Recordset
Dim compteur As Long
Set db = CurrentDb
Set enr = db.OpenRecordset("Societe", dbOpenDynaset)
If enr.RecordCount > 0 Then
enr.MoveLast
compteur = enr.RecordCount + 1
End If
enr.Close
db.Quit
Set enr = Nothing
Set db = Nothing
End Function
end sub
Cette fonction te retoune le nb d'enregistrement dans la table demandée (ici société) incrémenté de 1
Il ne te reste plus qu'à créer un événement sur le chargement de ton formulaire et dans le code de cet événement faire une ligne du genre
NomEtiquette.caption = Get_Compteur
Cdlt
IC
Merci pour votre réponse rapide.
J'ai introduit le code (adapté à ma base) comme vous l'avez indiqué:
Function Get_Compteur() As Long
Dim db As Database
Dim enr As Recordset
Dim compteur As Long
Set db = CurrentDb
Set enr = db.OpenRecordset("COUPLE", dbOpenDynaset)
If enr.RecordCount > 0 Then
enr.MoveLast
compteur = enr.RecordCount + 1
End If
enr.Close
db.Close
Set enr = Nothing
Set db = Nothing
End Function
Cependant, quand j'apelle "Get_Compteur", il me retourne systhématiquement "0"; que la table "COUPLE" soit vide ou non.
précision: je travaille avec access 2007
merci d'avance pour votre aide,
J'ai introduit le code (adapté à ma base) comme vous l'avez indiqué:
Function Get_Compteur() As Long
Dim db As Database
Dim enr As Recordset
Dim compteur As Long
Set db = CurrentDb
Set enr = db.OpenRecordset("COUPLE", dbOpenDynaset)
If enr.RecordCount > 0 Then
enr.MoveLast
compteur = enr.RecordCount + 1
End If
enr.Close
db.Close
Set enr = Nothing
Set db = Nothing
End Function
Cependant, quand j'apelle "Get_Compteur", il me retourne systhématiquement "0"; que la table "COUPLE" soit vide ou non.
précision: je travaille avec access 2007
merci d'avance pour votre aide,
Salut.
Ce code fonctionne bien avec Access 2000, mais avec 2007, je ne sais pas du tout.
Par contre, il faut que tu vérifies que tu as bien inclus la référence à DAO dans le menu Outils -->Reférences. Sinon les méthodes permettant d'utiliser les recordset ne marcheront pas. Par défaut ADO est utilisé car jugé plus récent.
Tu peux aussi remplacer les méthodes DAO par leur équivalent ADO. Mais je ne me suis jamais penché sur cette question pour le moment.
Cdlt
IC
Ce code fonctionne bien avec Access 2000, mais avec 2007, je ne sais pas du tout.
Par contre, il faut que tu vérifies que tu as bien inclus la référence à DAO dans le menu Outils -->Reférences. Sinon les méthodes permettant d'utiliser les recordset ne marcheront pas. Par défaut ADO est utilisé car jugé plus récent.
Tu peux aussi remplacer les méthodes DAO par leur équivalent ADO. Mais je ne me suis jamais penché sur cette question pour le moment.
Cdlt
IC
C'est probablement le problème; seulement, en access 2007 je ne trouve pas comment inclure/changer la référence; et encore moins comment remplacer les méthodes DAO, étant donné que je suis assez novice dans la programmation de bases de données.
Quequ'un aurait une idée comment résoudre le problème?
Merci d'avance,
Quequ'un aurait une idée comment résoudre le problème?
Merci d'avance,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai trouvé la solution; une bonne nuit de casse-tête a suffit d'introduire le code directement au chargement du formulaire, sans faire appèl à une fonction; là cela fonctionne à merveille!
je ne sais pas pourquoi le même code ne donnait rien en l'appelant la fonction?
aussi j'ai ajouté "DAO." à "database" et "recordset"
Ma solution est sans doute moins élégante; si jamais qq'un pourrait l'améliorer?
Merci
je ne sais pas pourquoi le même code ne donnait rien en l'appelant la fonction?
aussi j'ai ajouté "DAO." à "database" et "recordset"
Ma solution est sans doute moins élégante; si jamais qq'un pourrait l'améliorer?
Merci
Salut.
Je pense savoir où est le problème. C spécifique à VBA et je me souviens que j'avais au début pas mal galéré à cause de cela.
En VBA pour qu'une fonction renvoie son résultat, le resultat doit être associé au nom de la fonction. De fait le code que je t'ai donné est faux dans la mesure où au lieu de stocker le résultat dans Compteur, il aurait fallu le stocker dans le nom même de la fonction : Get_Compteur
Voici le code modifié. J'en ai aussi profité pour la rendre utilisable avec n'importe quelle table. Elle prend le nom de la table en paramètre.
Function Get_Compteur(nomTable as string) As Long
Dim db As Database
Dim enr As Recordset
Set db = CurrentDb
Set enr = db.OpenRecordset(nomTable, dbOpenDynaset)
If enr.RecordCount > 0 Then
enr.MoveLast
Get_compteur = enr.RecordCount + 1
End If
enr.Close
db.Close
Set enr = Nothing
Set db = Nothing
End Function
Et normalement, cela devrait marcher. Tu peux donc normalement l'appeler comme une fonction :
monEtiquette.caption = Get_Compteur("Couple");
Désolé pour l'erreur initiale, mais dans tous les autres langages que je connais, le renvoi de résultats est indépendant du nom de la fonction.
Cdlt,
IC
Je pense savoir où est le problème. C spécifique à VBA et je me souviens que j'avais au début pas mal galéré à cause de cela.
En VBA pour qu'une fonction renvoie son résultat, le resultat doit être associé au nom de la fonction. De fait le code que je t'ai donné est faux dans la mesure où au lieu de stocker le résultat dans Compteur, il aurait fallu le stocker dans le nom même de la fonction : Get_Compteur
Voici le code modifié. J'en ai aussi profité pour la rendre utilisable avec n'importe quelle table. Elle prend le nom de la table en paramètre.
Function Get_Compteur(nomTable as string) As Long
Dim db As Database
Dim enr As Recordset
Set db = CurrentDb
Set enr = db.OpenRecordset(nomTable, dbOpenDynaset)
If enr.RecordCount > 0 Then
enr.MoveLast
Get_compteur = enr.RecordCount + 1
End If
enr.Close
db.Close
Set enr = Nothing
Set db = Nothing
End Function
Et normalement, cela devrait marcher. Tu peux donc normalement l'appeler comme une fonction :
monEtiquette.caption = Get_Compteur("Couple");
Désolé pour l'erreur initiale, mais dans tous les autres langages que je connais, le renvoi de résultats est indépendant du nom de la fonction.
Cdlt,
IC