[Access]création de valeur à partir de 2 autr
Fermé
babouone
Messages postés
19
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
21 juillet 2008
-
5 déc. 2007 à 11:36
hervelot Messages postés 535 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 mars 2008 - 7 déc. 2007 à 15:46
hervelot Messages postés 535 Date d'inscription mardi 18 septembre 2007 Statut Membre Dernière intervention 20 mars 2008 - 7 déc. 2007 à 15:46
A voir également:
- [Access]création de valeur à partir de 2 autr
- Creation compte gmail - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Recherche a partir de photo - Guide
- Création compte google - Guide
- Word numéro de page 1/2 - Guide
13 réponses
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
6 déc. 2007 à 16:52
6 déc. 2007 à 16:52
dans une texte box non liés tapes :
=[Numéro] & " - " & [indice]
=[Numéro] & " - " & [indice]
babouone
Messages postés
19
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
21 juillet 2008
1
7 déc. 2007 à 10:11
7 déc. 2007 à 10:11
Merci Phil232 pour la synthaxe !
Par contre cette valeur est dans une table et l'affichage est fait par un sous-formulaire. Ou je peux indiquer =[Numéro] & " - " & [indice] alors ?
Par contre cette valeur est dans une table et l'affichage est fait par un sous-formulaire. Ou je peux indiquer =[Numéro] & " - " & [indice] alors ?
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
7 déc. 2007 à 11:11
7 déc. 2007 à 11:11
Fait tomber une texte box (champ de saisie ?) sur la forme. En mode Design tape directement dans ce champ "=[Numéro] & " - " & [indice]" (attention, les deux champs doivent être present dans la requête pour la forme). Alternativement tu utilise une requête et dans la grille où tu définis les champs à afficher tu va sur une colonne vide et au lieu de choisir un champ dans la liste tu tape [Numéro] & " - " & [indice]. Les deux opérations générent un champ appelé "champ calculé". Logiquement il ne peut pas être modifié (je crois c'est ce que tu cherche).
hervelot
Messages postés
535
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
20 mars 2008
123
7 déc. 2007 à 11:45
7 déc. 2007 à 11:45
Bonjour,
Je reprends, tu as 2 valeurs numéro et indice à partir desquelles tu veux créer n° plan. Ces 3 valeurs sont dans la même table.
Ton but : dans un formulaire quand on saisie numéro et indice la valeur de n° plan est généré automatiquement
Ai-je bien résumé
C'est pour que je sois sur de la solution à apporter
Je reprends, tu as 2 valeurs numéro et indice à partir desquelles tu veux créer n° plan. Ces 3 valeurs sont dans la même table.
Ton but : dans un formulaire quand on saisie numéro et indice la valeur de n° plan est généré automatiquement
Ai-je bien résumé
C'est pour que je sois sur de la solution à apporter
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
7 déc. 2007 à 11:57
7 déc. 2007 à 11:57
D'accord. Mais c'est redondant de stocker n° plan vu qu'il peut etre généré à n'importe quel moment.
Ceci demande donc d'utiliser des évenements, mais attention : vu que ce sont 2 champs ça va etre rigolo de gérer ça. Je te fournirait donc pas toute la soluce car ça prend un peu de temps d'implementer ça de façon que ce soit "fool proof"
txtIndex_OnExit
if txtIndex = "" then Exit sub
if txtNumber <> "" then
txtPlan = txtNumber & " - " & txtIndex
endif
end sub
txtNumber_OnExit
if txtNumber = "" then Exit sub
if txtIndex <> "" then
txtPlan = txtNumber & " - " & txtIndex
endif
end sub
Après on doit éventuellement jouer avec OnLostFocus, OnChange, OnKeyPress etc. Mais pour un début ça devrait déjà marcher.
Ceci demande donc d'utiliser des évenements, mais attention : vu que ce sont 2 champs ça va etre rigolo de gérer ça. Je te fournirait donc pas toute la soluce car ça prend un peu de temps d'implementer ça de façon que ce soit "fool proof"
txtIndex_OnExit
if txtIndex = "" then Exit sub
if txtNumber <> "" then
txtPlan = txtNumber & " - " & txtIndex
endif
end sub
txtNumber_OnExit
if txtNumber = "" then Exit sub
if txtIndex <> "" then
txtPlan = txtNumber & " - " & txtIndex
endif
end sub
Après on doit éventuellement jouer avec OnLostFocus, OnChange, OnKeyPress etc. Mais pour un début ça devrait déjà marcher.
hervelot
Messages postés
535
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
20 mars 2008
123
7 déc. 2007 à 13:00
7 déc. 2007 à 13:00
D'accord. Mais c'est redondant de stocker n° plan vu qu'il peut etre généré à n'importe quel moment.
Oui mais cela peut-être très utile pour faire des recherches
Oui mais cela peut-être très utile pour faire des recherches
babouone
Messages postés
19
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
21 juillet 2008
1
7 déc. 2007 à 12:02
7 déc. 2007 à 12:02
@ Hervelot :
Mon but : dans un formulaire, lorsque l'on crée une nouvelle ligne (ajout de donnée), le n°plan est généré automatiquement.
Mon autre numéro étant un numéro d'affaire (un numéro d'affaire peut contenir plusieurs n°plan pour donner un exemple).
L'indice doit etre etre unique par numéro de plan.
Mon numéro de plan et numéro d'affaire sont dans la meme table, l'indice peut y etre ajouter pour facilité le probleme.
Exemple
Numéro d'affaire : A8
le premier numéro de plan sera égal à : A8 - 1
le deuxième " " " " : A8 - 2
etc.
j'espère que l'exemple vous aidera dans la compréhension.
@Phil232, je verais cette aprem après mangé.
Mon but : dans un formulaire, lorsque l'on crée une nouvelle ligne (ajout de donnée), le n°plan est généré automatiquement.
Mon autre numéro étant un numéro d'affaire (un numéro d'affaire peut contenir plusieurs n°plan pour donner un exemple).
L'indice doit etre etre unique par numéro de plan.
Mon numéro de plan et numéro d'affaire sont dans la meme table, l'indice peut y etre ajouter pour facilité le probleme.
Exemple
Numéro d'affaire : A8
le premier numéro de plan sera égal à : A8 - 1
le deuxième " " " " : A8 - 2
etc.
j'espère que l'exemple vous aidera dans la compréhension.
@Phil232, je verais cette aprem après mangé.
hervelot
Messages postés
535
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
20 mars 2008
123
7 déc. 2007 à 14:36
7 déc. 2007 à 14:36
Cela veut dire que pour une meme affaire tu as plusieurs plans
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
7 déc. 2007 à 12:08
7 déc. 2007 à 12:08
donc txtIndex se rempli aussi automatiquement si je comprends bien dans ce cas il faudrait faire une requête du genre
SELECT ISNULL(Max(Index) + 1, 1) FROM MyTable WHERE N°Affaire = 'A8'
et puis transférer le resultat dans txtIndex
SELECT ISNULL(Max(Index) + 1, 1) FROM MyTable WHERE N°Affaire = 'A8'
et puis transférer le resultat dans txtIndex
babouone
Messages postés
19
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
21 juillet 2008
1
7 déc. 2007 à 13:46
7 déc. 2007 à 13:46
Merci pour votre aide à tous les deux. Comme je suis un jeune adpete de Access, je ne comprend malheuresement pas tout à vos explications. Je comprend bien la logique adopté pour conclure ce probleme,mais la réalisation peine. J'ai pour habite de travailler sur le mode "création", que sa soit sur les requêtes ou les actions (le moins de VB possible et SQL).
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
7 déc. 2007 à 14:05
7 déc. 2007 à 14:05
Dans
SELECT ISNULL(Max(Index) + 1, 1) FROM MyTable WHERE N°Affaire = '" & Forms!MyFormDeSaisie!MonChampAvecLeNuméroDAffaire
& "'"'
il suffit de remplacer "Index" par le nom de champ qui contient l'Indice, "N°Affaire" par le nom de champ qui contient ce numéro et "MyTable" c'est le nom de la table (n'est ce pas ? :). Bien sur "MyFormDeSaisie" c'est le nom de la forme avec le champ automatique, et (faut-il que je le dise ?) "MonChampAvecLeNuméroDAffaire" c'est bein sur le nom du champ qui contien le numéro d'affaire.
Puis dans la requête tu va en mode SQL et tu copie/paste le select adapté à ta bdd. Ca devrait marcher du coup
SELECT ISNULL(Max(Index) + 1, 1) FROM MyTable WHERE N°Affaire = '" & Forms!MyFormDeSaisie!MonChampAvecLeNuméroDAffaire
& "'"'
il suffit de remplacer "Index" par le nom de champ qui contient l'Indice, "N°Affaire" par le nom de champ qui contient ce numéro et "MyTable" c'est le nom de la table (n'est ce pas ? :). Bien sur "MyFormDeSaisie" c'est le nom de la forme avec le champ automatique, et (faut-il que je le dise ?) "MonChampAvecLeNuméroDAffaire" c'est bein sur le nom du champ qui contien le numéro d'affaire.
Puis dans la requête tu va en mode SQL et tu copie/paste le select adapté à ta bdd. Ca devrait marcher du coup
babouone
Messages postés
19
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
21 juillet 2008
1
7 déc. 2007 à 14:49
7 déc. 2007 à 14:49
Phil232 je te remercie beacoup pour les explications, mais j'ai pas tout compris *honte* . Donc résumons.
SELECT ISNULL(Max(Index) + 1, 1) FROM MyTable
ça, c'est bon, j'ai compris :)
WHERE N°Affaire = '" & Forms!MyFormDeSaisie!MonChampAvecLeNuméroDAffaire
& "'"'
N°Affaire, je l'ai remplacé, y'a pas de problème la dessus.
Par contre la, sa se complique : '" & Forms!MyFormDeSaisie!MonChampAvecLeNuméroDAffaire & "'"'
Le MyFormDeSaisie correspond au nom de mon formulaire ?
MonChampAvecLeNuméroDAffaire correspond aux nom du champ N°Affaire ?
J'ai bien C/C le tout et adapter (comme je pense), mais j'ai une erreur une erreur de syntaxe.
Pour expliquer au mieux, et pour éviter de te faire perdre de temps surtout. Voila un petit dessin résumant au mieux le probleme.
N°Affaire| N°plan|Bla Bla|indice (facultatif a l'affichage
...A42....|A42 - 1| ...... |......... 1
...A42....|A42 - 2| ...... |......... 2
Ceci est un sous-formulaire :)
Si l'utilisateur rajoute une ligne dans le sous-formulaire (la ligne d'écriture avec une petite "*"), le N°plan doit y etre affiché.
Le N°Affaire est sélétionné via une liste de choix par l'utilisateur. Donc suivant son choix le N°d'affaire changera (A 82 etc..)
En espérant avoir été le plus clair possible avec mes maigres qualité de dessin :)
SELECT ISNULL(Max(Index) + 1, 1) FROM MyTable
ça, c'est bon, j'ai compris :)
WHERE N°Affaire = '" & Forms!MyFormDeSaisie!MonChampAvecLeNuméroDAffaire
& "'"'
N°Affaire, je l'ai remplacé, y'a pas de problème la dessus.
Par contre la, sa se complique : '" & Forms!MyFormDeSaisie!MonChampAvecLeNuméroDAffaire & "'"'
Le MyFormDeSaisie correspond au nom de mon formulaire ?
MonChampAvecLeNuméroDAffaire correspond aux nom du champ N°Affaire ?
J'ai bien C/C le tout et adapter (comme je pense), mais j'ai une erreur une erreur de syntaxe.
Pour expliquer au mieux, et pour éviter de te faire perdre de temps surtout. Voila un petit dessin résumant au mieux le probleme.
N°Affaire| N°plan|Bla Bla|indice (facultatif a l'affichage
...A42....|A42 - 1| ...... |......... 1
...A42....|A42 - 2| ...... |......... 2
Ceci est un sous-formulaire :)
Si l'utilisateur rajoute une ligne dans le sous-formulaire (la ligne d'écriture avec une petite "*"), le N°plan doit y etre affiché.
Le N°Affaire est sélétionné via une liste de choix par l'utilisateur. Donc suivant son choix le N°d'affaire changera (A 82 etc..)
En espérant avoir été le plus clair possible avec mes maigres qualité de dessin :)
phil232
Messages postés
607
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
31 janvier 2008
178
7 déc. 2007 à 15:07
7 déc. 2007 à 15:07
faudrait savoir un peu plus à propos de l'erreur. Malheureusement, je n'ai pas d'Access au boulot.
Donc, j'avais oublié qu'il s'agit d'un sous-formulaire
Forms!MyMainFormDeSaisie!MySubFormDeSaisie.Form!MonChampAvecLeNuméroDAffaire
https://support.microsoft.com/en-us/help/113352
Mais bien sur l'utilisateur doit d'abord choisr dans la liste et seulement après il peut ajouter une ligne dans la subform sinon logiquement il y a un grand risque la requête utilise le mauvais n° d'affaire. On pourrait éventuellement mettre la création de la nouvelle ligne et la recherche d'indice sur un event OnClick/OnChange
Donc, j'avais oublié qu'il s'agit d'un sous-formulaire
Forms!MyMainFormDeSaisie!MySubFormDeSaisie.Form!MonChampAvecLeNuméroDAffaire
https://support.microsoft.com/en-us/help/113352
Mais bien sur l'utilisateur doit d'abord choisr dans la liste et seulement après il peut ajouter une ligne dans la subform sinon logiquement il y a un grand risque la requête utilise le mauvais n° d'affaire. On pourrait éventuellement mettre la création de la nouvelle ligne et la recherche d'indice sur un event OnClick/OnChange
hervelot
Messages postés
535
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
20 mars 2008
123
7 déc. 2007 à 15:45
7 déc. 2007 à 15:45
Vu sous cet angle, tu ne dois pas stocker le n° Affaire et le n° de plan dans la même table (base d'un SGBDR - redondance n° affaire)
Cré une table affaire dans laquelle tu mets les infos concernant l'affaire - tu peux mettre en clé le n°affaire (unique)
Cré une table plan dans laquelle tu mets les infos concernant le plan (n° de plan + clé étrangère sur n°affaire)
Ton formulaire principal aura en source la table Affaire, ton sous formulaire aura en source la table plans
Cré une table affaire dans laquelle tu mets les infos concernant l'affaire - tu peux mettre en clé le n°affaire (unique)
Cré une table plan dans laquelle tu mets les infos concernant le plan (n° de plan + clé étrangère sur n°affaire)
Ton formulaire principal aura en source la table Affaire, ton sous formulaire aura en source la table plans
hervelot
Messages postés
535
Date d'inscription
mardi 18 septembre 2007
Statut
Membre
Dernière intervention
20 mars 2008
123
7 déc. 2007 à 15:46
7 déc. 2007 à 15:46
j'ai fait une maquette que je peux t'envoyer et tu pourras me dire si c'est dans l'esprit de ton projet