Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
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 29/06/2007, 10h24   #1
Invité de passage
 
Inscription : juin 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 7
Points : 1
Points : 1
Par défaut Comment définir comme valeur par défaut, la valeur de la ligne précédente

Bonjour,
Nous voulons créer une table pour laquelle la valeur par défaut d'un champ serait la valeur de la ligne précédente pour le même champ.(avec initialisation )
Est-ce possible ? Et si oui comment procéder ?

Merci d'avance
Stagiaireparc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 10h54   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 301
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 301
Points : 7 940
Points : 7 940
bjr,

Il n'y a pas de notion de ligne précédente dans une table.

Tu peux essayer de faire ça au niveau du formulaire à l'insertion d'un nouvel enregistrement en VBA.

Code :
1
2
3
4
5
6
7
8
 
Private Sub Form_BeforeInsert(Cancel As Integer)
on error goto Gestion_erreurs
Me.RecordsetClone.AbsolutePosition = Me.CurrentRecord - 1
Me!MonChamp= Me.RecordsetClone!MonChamp
Gestion_erreurs:
if err.number <>0 then msgbox err.description
End Sub
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 12h16   #3
Invité de passage
 
Inscription : juin 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 7
Points : 1
Points : 1
Rebonjour,

On a mis ce programe dans le code mais ca fonctionne pas.

En fait, on avait penser passer par valeur par défaut qu'on maitriserai mieux que VBA,

Peut on mettre dans la définition de la valeure:

=[non du champ]( "et la on mait le numero de la ligne (avec le num auto) -1)

Je sais pas si c'est possible.
Stagiaireparc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 13h37   #4
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 301
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 301
Points : 7 940
Points : 7 940
Je ne pense pas qu'on puisse faire ça avec une valeur par défaut sans VBA.

Avec Access il arrive toujours un jour où on doit faire un choix :
- soit utiliser VBA pour programmer de nouvelles fonctionnalités
- soit abandonner la fonctionnalité voulue...

J'explique un peu plus ma solution.

Pour mettre en place le code VBA :
- ouvrir le formulaire en mode création
- aller dans ses propriétés
- dans l'onglet événements, choisir [procédure événementielle] sur l'événement "Avant insertion"
- cliquer sur les trois petits points [...] à droite de [procédure événementielle]
- le module de code s'ouvre avec la définition de la procédure pré-remplie
- il suffit ensuite d'ajouter les lignes à l'intérieur pour avoir le code ci-dessous

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
' Code s'exécutant à chaque insertion d'un nouvel enregistrement
Private Sub Form_BeforeInsert(Cancel As Integer) 
' En cas d'erreur, l'exécution "saute" à l'étiquette Gestion_erreurs: en bas
on error goto Gestion_erreurs
' Me.RecordsetClone est un clone du jeu de données affiché sur le formulaire
' On se déplace dans ce clone à la ligne courante - 1
Me.RecordsetClone.AbsolutePosition = Me.CurrentRecord - 1
' On remplace le contenu du champ MonChamp dans la ligne courante (celle en cours d'insertion)
'   par le contenu de la ligne du clone (donc la dernière ligne du jeu de données du formulaire)
' Il faut remplacer ici MonChamp par le nom du champ qui doit être mis à jour par défaut
Me!MonChamp= Me.RecordsetClone!MonChamp
' Ci dessous on affiche un message en cas d'erreur
Gestion_erreurs:
if err.number <>0 then msgbox err.description
End Sub
J'ai commenter le code pour l'expliquer un peu.
Si le nom du champ comporte des espaces il faudra l'encadrer avec des crochets.
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 14h23   #5
Invité de passage
 
Inscription : juin 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 7
Points : 1
Points : 1
En fait, pour être précis :
cela fonctionne à moitié : c'est-à-dire que lors de la saisie dans le formulaire, la date précédente est bien notée. Le hics c'est qu'ensuite la date n'est pas enregistrée dans la table. enfin c'est du moins ce que je constate.
j'ai regardé sur de nombreux site et de tutoriels et je n'ai rien sur ce sujet, c'est pourquoi je me permet de le poster.
Je suis dailleurs étonner de ne rien de trouver dessus, car ça pourrait être très pratique lors de la saisie de données (par exemple pour lequels un certains nombres de données se répètent).
Peut-être y a t-il un autre moyen ?

Merci encore

DELPHINE
Stagiaireparc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 14h25   #6
Invité de passage
 
Inscription : juin 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 7
Points : 1
Points : 1
eXCUSE MOI J4AVAIS PAS VU TON POSTE !
je vais essayé et te tiens au courant ! Merci pour ton aide

Delphine
Stagiaireparc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 14h51   #7
Invité de passage
 
Inscription : juin 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 7
Points : 1
Points : 1
Voilà, apres avoir procédé de la manière que tu as précisée, lorsqu'on ajoute un élément grâce au formulaire, rien ne se passe.
De plus en ajoutant un MsgBox dans ce bout de code pour verifier qu'il est bien executé, rien ne se passe non plus. J'en déduis donc que le code n'est pas interprété.

Y a-t'il une procédure supplémentaire pour forcer access à le lire? (de meme j'ai tenté de mettre un point d'arret dans le code pour débugger, mais une fois de plus aucune réaction?)


En te remerciant de ton aide !!!
Delphine
Stagiaireparc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 15h39   #8
Invité de passage
 
Inscription : juin 2007
Messages : 7
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 7
Points : 1
Points : 1
Okay, après bidouillage, Merci pour ton aide si précieuse. Ton code marche très bien. C'est juste moi qui faisait de mauvaises manipulations !(désolé je débute totalement dans l'utilisation d'Access...)

Merci encore et bonne continuation

Delphine
Stagiaireparc 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 19h42.


 
 
 
 
Partenaires

Hébergement Web