OVH Cloud OVH Cloud

access - Champs code client calculé ?

16 réponses
Avatar
pachanours
Access 2007
J'ai une table client. Je souhaiterai créer un code client (clé primaire)
regroupant automatiquement les 3premières lettres du nom du client et les 3
premières lettres de son pays.
Est-ce possible ? je n'ai pas trouvé
Merci pour votre aide

6 réponses

1 2
Avatar
pachanours
Merci Jessy,

Je vois que le message que j'ai posté lundi soir n'a pas fonctionné.
Donc voici le résultat de mes tests

En fait lorsque je cliquais sur les 3 petits points, j'avais une fenêtre qui
me demandait Générateur de Macro, d'expression ou de code. Et là était mon
erreur. la syntaxe tapée avant se plaçait dans le générateur d'expression.

En tapant sur générateur de code, j'ai bien l'écrant suivant :
___________________________________________________________________
Option Compare Database
Option Explicit

Private Sub ClientNom_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(ClientNom,3) & Left(PaysClient,3),4)
End Sub

Private Sub ClientPays_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(ClientNom,3) & Left(PaysClient,3),4)
End Sub
__________________________________________________________________
Par contre ces deux syntaxes ressortent en rouge... (signe d'une erreur je
présume ?) et j'ai un message d'erreur qui me dit qu'il y a une erreur de
compilation
Lorsque je retourne sur mon formulaire, en créant une nvlle fiche, j'ai une
erreur de compilation et une erreur de syntaxe.
VB qui s'ouvre sur la 1ère ligne de la syntaxe qui est surlignée en jaune
(Private Sub ClientNom_AfterUpdate()) et le reste tjs en rouge


Que dois-je faire ???




Bonjour

Il ne s'agit pas d'écrire la synthaxe sur la propriété du formulaire mais
dans le code de la propriété de ce formulaire.

Quand tu es en création, lorsque tu vas dans la propriété, tu as à droite, 3
petit point pour générer, il te suffit de cliquer dessur et ensuite de
sélectionner générateur de code.

Ensuite, il te suffit de copier la synthaxe, et au final dans ton module,
comme le disais Eric, tu dois avoir :

Private Sub NomClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Private Sub PaysClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Par contre, j'ai vu que tu avais des espaces dans ton nom de tables, du coup
j'ai modifié le code de mon site...
La modif consiste à remplacer la ligne :
strRst = "Select [" & strFldAuto & "] From " & strTbl & " ORDER BY [" &
strFldAuto & "];"
par :
strRst = "Select [" & strFldAuto & "] From [" & strTbl & "] ORDER BY [" &
strFldAuto & "];"

Il manquait des crochets pour encadrer le nom des tables avec crochets.

@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"pachanours" a écrit dans le message
de news:
Oui oui bien sur, pour une fois, j'ai bien relu plusieurs fois,
dans mon formulaire, en mode création, j'ai cliqué sur le controle
nomclient, feuille de propriété, onglet évènement, après MAJ, j'ai rentré
la
syntaxe.

Je viens de vérifier à nouveau, et de créer une nouvelle fiche, j'ai tjs
le
mess d'erreur

Devant la syntaxe, il n'y a rien, aucun signe ou ponctuation ?




re,

Où mets-tu ce code ?
Bien sur l'évènement Après Mise à jour des contrôles NomClient et
PaysClient et pas dans le module où tu as copié le code de Jessy.

Tu devrais avoir une procédure du genre:
Private Sub NomClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Idem pour PaysClient

Merci Eric pour ton aide,

Donc j'ai bien tout rentré, mais maintenant j'ai ce message d'erreur
lors
de la mise à jour des champs :

access ne peut pas trouver la macro me

j'ai rentré la ligne suivante :
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(client Nom,3) & Left(client pays,3),4)

dans évenement, après maj.
Que dois-je faire d'autre ?
--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr











Avatar
Jessy Sempere
Bonjour

Ta synthaxe doit être écrite sur une seule ligne...
Sinon, as-tu vu ce que je disais sur les espaces dans le nom de ta table...
Je te disais qu'il fallait légèrement modifier le code (j'ai fait la modif
sur mon site...)

--
@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"pachanours" a écrit dans le message
de news:
Merci Jessy,

Je vois que le message que j'ai posté lundi soir n'a pas fonctionné.
Donc voici le résultat de mes tests

En fait lorsque je cliquais sur les 3 petits points, j'avais une fenêtre
qui
me demandait Générateur de Macro, d'expression ou de code. Et là était mon
erreur. la syntaxe tapée avant se plaçait dans le générateur d'expression.

En tapant sur générateur de code, j'ai bien l'écrant suivant :
___________________________________________________________________
Option Compare Database
Option Explicit

Private Sub ClientNom_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(ClientNom,3) & Left(PaysClient,3),4)
End Sub

Private Sub ClientPays_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(ClientNom,3) & Left(PaysClient,3),4)
End Sub
__________________________________________________________________
Par contre ces deux syntaxes ressortent en rouge... (signe d'une erreur je
présume ?) et j'ai un message d'erreur qui me dit qu'il y a une erreur de
compilation
Lorsque je retourne sur mon formulaire, en créant une nvlle fiche, j'ai
une
erreur de compilation et une erreur de syntaxe.
VB qui s'ouvre sur la 1ère ligne de la syntaxe qui est surlignée en jaune
(Private Sub ClientNom_AfterUpdate()) et le reste tjs en rouge


Que dois-je faire ???




Bonjour

Il ne s'agit pas d'écrire la synthaxe sur la propriété du formulaire mais
dans le code de la propriété de ce formulaire.

Quand tu es en création, lorsque tu vas dans la propriété, tu as à
droite, 3
petit point pour générer, il te suffit de cliquer dessur et ensuite de
sélectionner générateur de code.

Ensuite, il te suffit de copier la synthaxe, et au final dans ton module,
comme le disais Eric, tu dois avoir :

Private Sub NomClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Private Sub PaysClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Par contre, j'ai vu que tu avais des espaces dans ton nom de tables, du
coup
j'ai modifié le code de mon site...
La modif consiste à remplacer la ligne :
strRst = "Select [" & strFldAuto & "] From " & strTbl & " ORDER BY [" &
strFldAuto & "];"
par :
strRst = "Select [" & strFldAuto & "] From [" & strTbl & "] ORDER BY [" &
strFldAuto & "];"

Il manquait des crochets pour encadrer le nom des tables avec crochets.

@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"pachanours" a écrit dans le
message
de news:
Oui oui bien sur, pour une fois, j'ai bien relu plusieurs fois,
dans mon formulaire, en mode création, j'ai cliqué sur le controle
nomclient, feuille de propriété, onglet évènement, après MAJ, j'ai
rentré
la
syntaxe.

Je viens de vérifier à nouveau, et de créer une nouvelle fiche, j'ai
tjs
le
mess d'erreur

Devant la syntaxe, il n'y a rien, aucun signe ou ponctuation ?




re,

Où mets-tu ce code ?
Bien sur l'évènement Après Mise à jour des contrôles NomClient et
PaysClient et pas dans le module où tu as copié le code de Jessy.

Tu devrais avoir une procédure du genre:
Private Sub NomClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Idem pour PaysClient

Merci Eric pour ton aide,

Donc j'ai bien tout rentré, mais maintenant j'ai ce message d'erreur
lors
de la mise à jour des champs :

access ne peut pas trouver la macro me

j'ai rentré la ligne suivante :
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(client Nom,3) & Left(client pays,3),4)

dans évenement, après maj.
Que dois-je faire d'autre ?
--

A+
Eric
http://www.mpfa.info/
Archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr













Avatar
pachanours
Salut Jessy,

Alors effectivement, la syntaxe était sur deux lignes ...
donc premier pb résolu,
j'ai fait un test, et là nveau message d'erreur :

SUB OU FONCTION NON DEFINIE (fNumTxtAuto)

donc je suppose que l'erreur est dans l'autre module ... copié ci dessous
___________________________________________________________________
Option Compare Database

Function fNumAutoTxt(strTbl$, strFldAuto$, strTxtStart$, intLenId%) As String
'** La référence "Microsoft DAO x.x Object Library est nécessaire
'** sur l'événement "Après mise à jour" qui consitue "strTxtStart"

Dim rst As DAO.Recordset
Dim strRst As String
Dim lngId As Long

strRst = "Select [" & strFldAuto & "] From [" & strTbl & "] ORDER BY ["
& strFldAuto & "];"
Set rst = CurrentDb.OpenRecordset(strRst, dbOpenDynaset)

With rst
If Not .BOF Then
.FindLast "[" & strFldAuto & "] like """ & strTxtStart & "*"" " _
& " AND Len([" & strFldAuto & "]) = " & Len(strTxtStart) +
intLenId
If .NoMatch = True Then
lngId = 1
Else
lngId = CLng(Mid(.Fields(strFldAuto), Len(strTxtStart) + 1))
+ 1
End If
End If
End With

rst.Close: Set rst = Nothing

fNumAutoTxt = strTxtStart & Format(lngId, String(intLenId, "0"))

End Function
______________________________________________________________






Bonjour

Ta synthaxe doit être écrite sur une seule ligne...
Sinon, as-tu vu ce que je disais sur les espaces dans le nom de ta table...
Je te disais qu'il fallait légèrement modifier le code (j'ai fait la modif
sur mon site...)

--
@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"pachanours" a écrit dans le message
de news:
Merci Jessy,

Je vois que le message que j'ai posté lundi soir n'a pas fonctionné.
Donc voici le résultat de mes tests

En fait lorsque je cliquais sur les 3 petits points, j'avais une fenêtre
qui
me demandait Générateur de Macro, d'expression ou de code. Et là était mon
erreur. la syntaxe tapée avant se plaçait dans le générateur d'expression.

En tapant sur générateur de code, j'ai bien l'écrant suivant :
___________________________________________________________________
Option Compare Database
Option Explicit

Private Sub ClientNom_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(ClientNom,3) & Left(PaysClient,3),4)
End Sub

Private Sub ClientPays_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(ClientNom,3) & Left(PaysClient,3),4)
End Sub
__________________________________________________________________
Par contre ces deux syntaxes ressortent en rouge... (signe d'une erreur je
présume ?) et j'ai un message d'erreur qui me dit qu'il y a une erreur de
compilation
Lorsque je retourne sur mon formulaire, en créant une nvlle fiche, j'ai
une
erreur de compilation et une erreur de syntaxe.
VB qui s'ouvre sur la 1ère ligne de la syntaxe qui est surlignée en jaune
(Private Sub ClientNom_AfterUpdate()) et le reste tjs en rouge


Que dois-je faire ???




Bonjour

Il ne s'agit pas d'écrire la synthaxe sur la propriété du formulaire mais
dans le code de la propriété de ce formulaire.

Quand tu es en création, lorsque tu vas dans la propriété, tu as à
droite, 3
petit point pour générer, il te suffit de cliquer dessur et ensuite de
sélectionner générateur de code.

Ensuite, il te suffit de copier la synthaxe, et au final dans ton module,
comme le disais Eric, tu dois avoir :

Private Sub NomClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Private Sub PaysClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Par contre, j'ai vu que tu avais des espaces dans ton nom de tables, du
coup
j'ai modifié le code de mon site...
La modif consiste à remplacer la ligne :
strRst = "Select [" & strFldAuto & "] From " & strTbl & " ORDER BY [" &
strFldAuto & "];"
par :
strRst = "Select [" & strFldAuto & "] From [" & strTbl & "] ORDER BY [" &
strFldAuto & "];"

Il manquait des crochets pour encadrer le nom des tables avec crochets.

@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"pachanours" a écrit dans le
message
de news:
Oui oui bien sur, pour une fois, j'ai bien relu plusieurs fois,
dans mon formulaire, en mode création, j'ai cliqué sur le controle
nomclient, feuille de propriété, onglet évènement, après MAJ, j'ai
rentré
la
syntaxe.

Je viens de vérifier à nouveau, et de créer une nouvelle fiche, j'ai
tjs
le
mess d'erreur

Devant la syntaxe, il n'y a rien, aucun signe ou ponctuation ?




re,

Où mets-tu ce code ?
Bien sur l'évènement Après Mise à jour des contrôles NomClient et
PaysClient et pas dans le module où tu as copié le code de Jessy.

Tu devrais avoir une procédure du genre:
Private Sub NomClient_AfterUpdate()
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(NomClient,3) & Left(PaysClient,3),4)
End Sub

Idem pour PaysClient

Merci Eric pour ton aide,

Donc j'ai bien tout rentré, mais maintenant j'ai ce message d'erreur
lors
de la mise à jour des champs :

access ne peut pas trouver la macro me

j'ai rentré la ligne suivante :
me.CodeClient = fNumTxtAuto ("Table Liste Clients", "CodeClient",
Left(client Nom,3) & Left(client pays,3),4)

dans évenement, après maj.
Que dois-je faire d'autre ?
--

A+
Eric
http://www.mpfa.info/
Archives :
http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


















Avatar
3stone
Salut,

"pachanours"
|
| SUB OU FONCTION NON DEFINIE (fNumTxtAuto)
|
| Function fNumAutoTxt(...


Normal ?? Erreur de frappe ??


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
pachanours
OH OH OH MILLES EXCUSES ....

j'étais tellement axée sur les syntaxes, que ça c'était vraiment trop gros
pour que je m'en rende compte ..

le problème est que je ne connais pas les fonctions par coeur, sinon,
j'aurai relevé l'erreur plus facilement !


Donc, je viens de réessayer... et ça marche !!!!
Je vous remercie donc tous pour votre aide précieuse
a bientôt




Salut,

"pachanours"
|
| SUB OU FONCTION NON DEFINIE (fNumTxtAuto)
|
| Function fNumAutoTxt(...


Normal ?? Erreur de frappe ??


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
Jessy Sempere
Bonjour

Et ben dis donc...
Ce fut long mais bon, ... le tout c'est d'y arriver.

Bon courage pour la suite.

@+
Jessy Sempere

------------------------------------
Site @ccess : http://access.fr.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"pachanours" a écrit dans le message
de news:
OH OH OH MILLES EXCUSES ....

j'étais tellement axée sur les syntaxes, que ça c'était vraiment trop gros
pour que je m'en rende compte ..

le problème est que je ne connais pas les fonctions par coeur, sinon,
j'aurai relevé l'erreur plus facilement !


Donc, je viens de réessayer... et ça marche !!!!
Je vous remercie donc tous pour votre aide précieuse
a bientôt




Salut,

"pachanours"
|
| SUB OU FONCTION NON DEFINIE (fNumTxtAuto)
|
| Function fNumAutoTxt(...


Normal ?? Erreur de frappe ??


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/






1 2