Access 2007 - ajout de données
Novice
-
Gaunts Messages postés 1125 Date d'inscription Statut Membre Dernière intervention -
Gaunts Messages postés 1125 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je ne sais pas comment éditer une table de données sous Access 2007 de la manière suivante:
J'ai une table listant des objets, contenant une colonne "nom", et une colonne "catégorie". Cette colonne est remplie pour les objets des catégories A,B,C et D, mais pas E et F.
J'ai une autre table listant les objets de la catégorie E, et encore une autre pour ceux de la catégorie F.
Comment faire pour compléter la colonne "catégorie" de la première table? Je ne veux pas créer une nouvelle colonne, mais juste remplir les trous de celle qui existe déjà.
Merci infiniment si vous pouvez m'aider!!!
Je ne sais pas comment éditer une table de données sous Access 2007 de la manière suivante:
J'ai une table listant des objets, contenant une colonne "nom", et une colonne "catégorie". Cette colonne est remplie pour les objets des catégories A,B,C et D, mais pas E et F.
J'ai une autre table listant les objets de la catégorie E, et encore une autre pour ceux de la catégorie F.
Comment faire pour compléter la colonne "catégorie" de la première table? Je ne veux pas créer une nouvelle colonne, mais juste remplir les trous de celle qui existe déjà.
Merci infiniment si vous pouvez m'aider!!!
A voir également:
- Access 2007 - ajout de données
- Fuite données maif - Guide
- Save as pdf office 2007 - Télécharger - Bureautique
- Supprimer les données de navigation - Guide
- Ajout rapide snap - Forum Snapchat
- Ajout rapide snap - Forum Snapchat
5 réponses
Bonjour,
Il faut que tu créées une requête qui va combiner les trois tables.
Pour cela dans ta requête, dans ton champ catégories, tu entres une condition qui dira : Si le champ catégorie de la table 1 n'est pas vide, alors on l'affiche, sinon on affiche le champ catégorie de la table 2, et de même pour celui de la table 3.
Si tu ne sais pas comment faire, pose tes questions et je te guiderai.
Il faut que tu créées une requête qui va combiner les trois tables.
Pour cela dans ta requête, dans ton champ catégories, tu entres une condition qui dira : Si le champ catégorie de la table 1 n'est pas vide, alors on l'affiche, sinon on affiche le champ catégorie de la table 2, et de même pour celui de la table 3.
Si tu ne sais pas comment faire, pose tes questions et je te guiderai.
Tu dois commencer par creer une requête, dans laquelle tu importes tes 3 tables. Tu devras ensuite lier ces tables grâce au champ qu'elles ont en commun, c'est à dire "nom" (pour faire ça, tire simplement un trait entre les tables).
Puis dans ta requête, affiche biensur la colonne nom, et une autre colonne appelée "catégorie".
Ici tu vas devoir utiliser une formulle qui vérifiera les conditions dont je t'ai parlé.
Pour ça tu utiliseras la fonction VraiFaux, sa syntaxe est la suivante:
Puis dans ta requête, affiche biensur la colonne nom, et une autre colonne appelée "catégorie".
Ici tu vas devoir utiliser une formulle qui vérifiera les conditions dont je t'ai parlé.
Pour ça tu utiliseras la fonction VraiFaux, sa syntaxe est la suivante:
VraiFaux(condition à verifier; action à effectuer si la condition est vraie; action à effectuer si la condition est fausse)
Merci Gaunts! Voilà où j'en suis:
J'ai créé ma requête et lié les tables. J'affiche la colonne nom. Pour la colonne catégorie j'ai entré:
Champ : Catégorie
Critère : VraiFaux (List_products.Categorie=""; VraiFaux (CategorieE???????; "E"; VraiFaux (CatégorieF ???????????? ; "F"; "") ; List_product.Categorie)
Ce qui veut dire :
- Condition : si la case de la colonne categorie est vide;
- Alors : il faut qu'il cherche dans la première liste, et si oui mettre la valeur E, sinon aller chercher dans la deuxième liste, et si oui mettre la valeur F, sinon mettre rien ;
- Sinon (si la case initiale n'est pas vide), je la copie (A, B, C ou D).
La formule est bien à mettre dans la colonne critère?
Et comment je peux lui demander de chercher que la valeur est dans les autres listes (partie ??????????)
Merci infiniment...
J'ai créé ma requête et lié les tables. J'affiche la colonne nom. Pour la colonne catégorie j'ai entré:
Champ : Catégorie
Critère : VraiFaux (List_products.Categorie=""; VraiFaux (CategorieE???????; "E"; VraiFaux (CatégorieF ???????????? ; "F"; "") ; List_product.Categorie)
Ce qui veut dire :
- Condition : si la case de la colonne categorie est vide;
- Alors : il faut qu'il cherche dans la première liste, et si oui mettre la valeur E, sinon aller chercher dans la deuxième liste, et si oui mettre la valeur F, sinon mettre rien ;
- Sinon (si la case initiale n'est pas vide), je la copie (A, B, C ou D).
La formule est bien à mettre dans la colonne critère?
Et comment je peux lui demander de chercher que la valeur est dans les autres listes (partie ??????????)
Merci infiniment...
Oui ta formule est juste, il manque juste une parenthèse fermante. Ensuite pour les critères de E et F, refait la même chose que là:
Si tu vérifies si E et F sont vides, il faudra juste inverser l'ordre des actions.
Tu rencontreras peut être un problême qui viendra du fait qu'un champ vide ne vaut pas forcément: "", si ça ne marche toujours pas donne moi ta formule qu'on modifiera, et si ça marche, bah tant mieux :)
List_products.Categorie="";en remplaçant List_products par le nom des tables E et F.
Si tu vérifies si E et F sont vides, il faudra juste inverser l'ordre des actions.
Tu rencontreras peut être un problême qui viendra du fait qu'un champ vide ne vaut pas forcément: "", si ça ne marche toujours pas donne moi ta formule qu'on modifiera, et si ça marche, bah tant mieux :)
Ma formule marche quand il y a déjà une catégorie d'entrée (A B C D), donc la partie "sinon" fonctionne.
Mais il ne me donne rien quand il faut ajouter E ou F. J'ai l'impression qu'il ne comprend pas où chercher quand je mets juste [List_Product_F] dans le deuxième VraiFaux.
Ma formule est la suivante :
Category: VraiFaux([List_products.Categorie]="",VraiFaux([List_Product_E]="",VraiFaux([List_product_F]="","","F"),"E"),[List_of_ports].[Cluster])
De plus quand je vais tourner la requête, il me demande une valeur pour List_product_E et List_product_F, à quoi est-ce que cela correspond?
Merci!
Mais il ne me donne rien quand il faut ajouter E ou F. J'ai l'impression qu'il ne comprend pas où chercher quand je mets juste [List_Product_F] dans le deuxième VraiFaux.
Ma formule est la suivante :
Category: VraiFaux([List_products.Categorie]="",VraiFaux([List_Product_E]="",VraiFaux([List_product_F]="","","F"),"E"),[List_of_ports].[Cluster])
De plus quand je vais tourner la requête, il me demande une valeur pour List_product_E et List_product_F, à quoi est-ce que cela correspond?
Merci!
Oui pardon, faute lors de la copie, c'est bien [List_products].[Categorie] à la fin.
Dans ma table [List_Product_E] je n'ai pas de champ disant la catégorie, c'est juste le fait que le produit soit dans la table qui me permet de dire de quelle catégorie il fait parti. Et c'est là où je ne sait pas comment le coder. Est-ce que ça ne devrait pas être le lien qui fasse ça?
Peut-être que je m'y prend mal, et qu'il faudrait une fonction qui vérifie juste si un lien existe avec la table [List_Product_E], dans quel cas il le classerait en catégorie E. Tu sais si ça existe comme fonction?
Dans ma table [List_Product_E] je n'ai pas de champ disant la catégorie, c'est juste le fait que le produit soit dans la table qui me permet de dire de quelle catégorie il fait parti. Et c'est là où je ne sait pas comment le coder. Est-ce que ça ne devrait pas être le lien qui fasse ça?
Peut-être que je m'y prend mal, et qu'il faudrait une fonction qui vérifie juste si un lien existe avec la table [List_Product_E], dans quel cas il le classerait en catégorie E. Tu sais si ça existe comme fonction?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Voila la fonction vb qui te permettra de vérifier si un champ contient une certaine valeur. Pour pouvoir utiliser cette fonction, va dans créér, macro, module et entre ceci:
Il faut l'appeler de la maniere suivante:
Elle renvoie True si la valeur est trouvée, sinon elle renvoit False.
Pour les habitués du vba, je suis désolé si ce code ne respecte pas les normes, n'est pas optimisé ou je ne sais quoi, je connais le vba depuis peu, et ne manipule les tables avec que depuis ce matin.
Tu devras donc faire:
Public Function isInTable(ByVal val As String, ByVal table As String) As Boolean Set bd = CurrentDb() Set base = bd.OpenRecordset(table) base.Edit base.MoveFirst While (base.EOF = False) If (base.[Champ à tester] = val) Then isInTable = True Exit Function End If base.MoveNext Wend isInTable = False End Function
Il faut l'appeler de la maniere suivante:
isInTable("valeur à tester"; "table dans laquelle est la valeur")et remplacer Champ à tester par le nom de ton champ.
Elle renvoie True si la valeur est trouvée, sinon elle renvoit False.
Pour les habitués du vba, je suis désolé si ce code ne respecte pas les normes, n'est pas optimisé ou je ne sais quoi, je connais le vba depuis peu, et ne manipule les tables avec que depuis ce matin.
Tu devras donc faire:
VraiFaux([List_products].[Categorie]="";VraiFaux(isInTable([List_products].[nom];"List_product_E") = False;VraiFaux(isInTable([List_products].[nom];"List_product_E") = False;"";"F");"E");[List_of_ports].[Categorie])
Pourrais-tu me guider un peu plus en détail??
Merci!