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 08/02/2012, 10h45   #1
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Valeur d'un champ du dernier enregistrement.

Bonjour à tous,

Quel code écrire pour récupérer la valeur d'un champ du dernier enregistrement.

Plus précis:

J'ai un formulaire basé sur la table "tblFin" avec les champs:

DateFin
NumExtrait
Solde

Je voudrais que sur l'événement DateFinBeforeUpdate, s'affichent dans les champs "NmExtrait" et "Solde", les valeurs du dernier enregistrement.

Merci pour votre aide.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 22h36   #2
Membre éclairé
 
Avatar de tee_grandbois
 
Inscription : novembre 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 216
Points : 321
Points : 321
Bonsoir,
Voici une fonction qui permet de récupérer la valeur des champs du dernier enregistrement de n'importe quelle table :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function RecupDernierChamp(pTbl As String, pChp As Integer) As Variant
' Récupération des valeurs des champs du dernier enregistrement d'une table
' paramètres  : pTbl = nom de la table
'             : pChp = index du champ
 
 Dim oRs As Recordset
 
 Set oRs = CurrentDb.OpenRecordset("select * from " & pTbl, dbOpenSnapshot)
 
    If Not (oRs.EOF) Then
    oRs.MoveLast
        If pChp < oRs.Fields.Count Then
            RecupDernierChamp = oRs.Fields(pChp).Value
        End If
 
    End If
 
End Function
et tu l'utilises comme ceci :
Code :
1
2
NumExtrait = RecupDernierChamp("tblFin",1)
Solde = RecupDernierChamp("tblFin",2)
tee_grandbois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 04h40   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il faudrait préciser si le dernier enregistrements est par rapport à une date, un NumAuto, etc..

En effet, le code proposé n'est pas valable si avant je change l'ordre de tri de la table, donc une un Order By serait un plus dans la requête.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 13h34   #4
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut Valeur des champs du dernier enregistrement

Merci pour vos réponses.

C'est vrai que "dernier" n'était pas assez précis. Les enregistrements sont triés par date. La table contient cependant aussi bien les enregistrements du financier banque (01) que ceux du financier caisse (07).

Il faudrait donc que les valeurs soient récupérées en fonction du financier choisi.

Merci pour vos aides précieuses.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 19h50   #5
Membre régulier
 
Homme Marcel
Directeur technique
Inscription : avril 2011
Messages : 100
Détails du profil
Informations personnelles :
Nom : Homme Marcel
Localisation : Belgique

Informations professionnelles :
Activité : Directeur technique
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 100
Points : 97
Points : 97
Par défaut valeur de champs du dernier enregistrement

Bonjour tee_granbois,

C'est bon ton code. J'ai un peu fouillé pour comprendre les grandes lignes (chacun son niveau), et voici comment je l'ai inséré dans mon application.

1. Je n'ai pas besoin de remplir les champs lorsqu'il s'agit d'un financier banque, mais seulement pour le financier caisse.

J'ai donc créé une requête avec le numéro du financier caisse comme critère pour le premier paramêtre de la fonction.

2. Je pense qu'une requête, c'est bien mieux qu'une table parce que en réalité, dans ma table j'ai une douzaine de champs, et si j'en intercale un, lorsque je voudrai attribuer la valeur du champ 2, ça risque quand même de déraper.

Si je voulais donner les dernières valeurs pour deux financiers différents, je pourrais écrire deux fonctions, et avec une instruction "If" choisir le résultat de l'une ou de l'autre suivant le financier dans lequel je travaille.

Si j'ai écrit l'une ou l'autre ineptie, n'hésite pas à le signaler.

En tout cas, j'ai ce que je souhaitais, je t'en remercie, ainsi que Philippe qui a attiré notre attention sur la précision.
Marcello5255 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h00.


 
 
 
 
Partenaires

Hébergement Web