Access, valeur dans le premier enregistrement

spiritspy Messages postés 120 Statut Membre -  
Jean_Jacques Messages postés 1048 Statut Membre -
Bonjour,
En créant ma base access, j'ai un numéro d'ordre a donner à chaque enregistrement, mais il se trouve que lorsque je valide la fonction suivante, elle se place sur le premier enregistrement et pas sur l'enregistrement courant, quelle est la modif à faire svp?

Num_Affaire = "Dossier" & Format([Date_Ouverture], "yyyy") & "-" & [N_Annuel]

N_Annuel est mon numéro à ajouter a cette concaténation, Num_Affaire est mon champs, mais apparemment il me manque quelque chose de façon à lui préciser que c'est celui de l'enregistrement en cours.

Merci d'avance.
A voir également:

9 réponses

LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
Ou es tu quand tu lances cette fonction? Un formulaire? Dis STP exactement dans quel contexte.
0
spiritspy Messages postés 120 Statut Membre 7
 
J'explique mieux:
Je viens de créer un dossier (enregistrement) avec des données principales comme un nom de client, une adresse et ce que j'ai indiqué avant [qui est un numéro d'ordre annuel (dynamique)] Num_Affaire que j'ai créé, et une requête de calcul sur le nombre d'enregistrement depuis le début de l'année pour N_Annuel.
Je suis dans mon formulaire principal, avec la valeur Num_Affaire non modifiable manuellement, que ma ligne de commande ci-dessus modifie lorsque j'appuie sur mon bouton "créer Dossier".
Il compte très bien le nombre d'enregistrement mais me l'inscrit dans le champ du premier enregistrement et non dans le champ de l'enregistrement en cours de création.

Suis je assez clair pour que tu m'aide ?
Merci d'avance.
0
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
C'est très bizarre, ce que tu me dis. Ca ne devrait pas faire ça.
On est bien d'accord que la ligne que tu as écrite plus haut est dans la propriété Sur clic du bouton qui se trouve dans le formulaire?
Si oui, y a-t-il d'autres lignes de commande avant cette ligne-là???
0
spiritspy Messages postés 120 Statut Membre 7
 
Effectivement il est sur le clic du bouton, je peux même t'indiquer les lignes précédemment écrites sous cette même fonction:

Private Sub Creation_Dossier_Click()

Me.Requery

' Vérif et incrémentation de N_Annuel

If DLookup("[NbEnr]", "R_Dossier") + 1 >= 1 Then
N_Annuel = DLookup("[NbEnr]", "R_Dossier") + 1
Else
N_Annuel = 1
End If

' Affectation de la valeur à Num_Affaire qui est mon numéro de dossier

Num_Affaire = "Dossier" & Format([Date_Ouverture], "yyyy") & "-" & [N_Annuel]

' Création de la box affichant le numéro de dossier sous la forme "Dossier2008-24"

MsgBox "Le Dossier créé est le " & Num_Affaire, vbInformation, "Dossier Créé"

End Sub

La fonction est bonne, elle calcule très bien en fonction du nombre d'enregistrements depuis le début de l'année (ou plutôt le nombre d'enregistrement dont l'année est la même) et me l'affiche.
Mais mon problème c'est que ça ne sauvegarde pas dans le champ de l'enregistrement en cours dans mon formulaire.

Est-ce que je dois définir que ce champs est celui de l'enregistrement en cours? et comment faire?
Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jean_Jacques Messages postés 1048 Statut Membre 112
 
Bonsoir,

Il semble nécessaire de désigner l'enregistrement cible explicitement
A essayer sans garantie :

Dim StLinkCriteriA As String

StLinkCriteriA = "[<Table.Champ>]=" & Me![<Table.champ>]

Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
0
spiritspy Messages postés 120 Statut Membre 7
 
Ca change effectivement quelque chose, ça me met bien le num de dossier mais je suis décalé de 1, j'explique :

dès que j'ouvre mon formulaire je suis sur un enregistrement neuf, avec le numéro créé juste avant en fait ... et ma box ne m'affiche plus le bon numéro de dossier, ça devient compliqué .....

donc je remplis le bon formulaire avec un numéro déjà affecté et quand je valide, ça m'affiche le numéro du dossier suivant ...

C'est en très bonne voie mon truc .... un dernier soutient et je me rapproche de quelque chose de sympa ...

Merci d'avance.
0
Jean_Jacques Messages postés 1048 Statut Membre 112
 
Bonjour,

En fouinant sur internet, j'ai trouvé cette solution.
- Dans ce cas de figure, le lien se fait avant d'activer le formulaire. J'ose supposer que ça devrait marcher ?

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "<Nom_Formulaire"

stLinkCriteria = "[<champ>]=" & "'" & Me![champ] & "'"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Bonne journée

La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
0
spiritspy Messages postés 120 Statut Membre 7
 
Bonjour,

J'ai mis cette commande dans un formulaire "d'accueil' sur un bouton pour ouvrir mon formulaire

J'ai modifié et simplifié en faisant

stLinkCriteria = "[<Table.champ>]=" & Me![<Table.champ>]

Le reste m'était apparemment inutile ...
Mais il ne trouve pas le Champ de référence.

Le <champ> est bien mon numéro auto ? ou j'ai rien compris ?
0
Jean_Jacques Messages postés 1048 Statut Membre 112
 
Bonjour,
stLinkCriteria ne semble pas convaincant dans le cas présent.

J'ai trouvé cette solution qui fonctionne (au moins chez moi sous ACCESS 2000)

- Après adaptation saisir dans l'évènement après mise à jour :

With CodeContextObject
DoCmd.GoToControl "[<Champ>]"
DoCmd.FindRecord <Champ>, , True, , True

If <champ> <> <Champ>, Then
MsgBox "Ce code est inconnu : " & Me!<Champ>
Me!<Champ> = ""

End If

End With

Cordialement
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
0