|
|
|
|
Configuration: Windows XP Firefox 1.0.4
|
Bonjour,
C'est pas simple.... je résume se que je comprend: Un table avec champs : type de produit, année de souscription, année de résiliation, nombre de contrats ! Qestion: pourquoi nombre de contrats ? ...... Si vous ajoutez un nouveau contrat qu'elles sont les champs qui doivent être différents ?? Par principe on va ouvrir le formulaire pour ajouter un contrat et à se niveau on contrôle si oui ou non ? Salutations. Jean-Pierre |
Bonjour,
Merci de votre attention. C'est plutôt simple: imaginons qu'il y ait 2 types de produits, le produit A et le produit B. Si j'ai 3 contrats de type A (dans mon portefeuille ie dans ma table) qui ont été souscrits en 2002 et résiliés en 2005, j'aurai 3 dans la case "nombre de contrats" de la ligne correspondante. C'est pour éviter d'avoir une ligne par contrat (et donc d'avoir des tonnes de lignes !) Mettons que je veuille ajouter un contrat qui répond à ces même caractéristiques, je vais alors simplement passer le nombre de contrat à 4. Si par contre je veux ajouter un contrat A souscrit égalemment en 2002, mais résilié en 2006, et que mon portefeuille n'en contient aucun pour le moment , alors il n'y a aucune ligne dans ma table qui réponde à ces caractéristiques, et il faudra l'ajouter. Alors effectivement on pourrait à chaque ajout de contrat vérifier si la ligne existe déjà, mais j'aimerais justement qu'on n'ait pas besoin de le faire :-)
|
|
Bonsoir,
Si je vous comprends bien le contrôle se fait sur le type date souscription et date résiliation. Je pense qu'il est mieux pour vous de réaliser cela avec le tableur Excel, on dirait que c'est de la statistique ou je me trompe. Dans le cas ou vous désirez absolument passer par Access il faut créer un formulaire indépendant de la table ou vous entrez les valeurs pour les 3 champs : type de produit, année de souscription, année de résiliation et créer un code qui va prendre ces 3 valeurs et les comparer à votre table. le résultat de la comparaison vous donneras soit vers nouvel enregistrment soit augmentation du nombre de contrats. Salutations. Jean-Pierre |
Exactement ce que je veux faire (et je suis obligé d'utiliser Access ) !
C'est dans le code que j'ai des soucis justement, je n'arrive pas à mettre une condition sur l'exécution d'une requete ou d'une autre lors du clic sur le bouton du formulaire. J'ai déjà une requête pour tester si la ligne existe ou s'il faut l'ajouter, mais je n'arriver pas à coder tout ca.. (cf mon premier message où j'ai détaillé :-) ) Merci ! |
|
Bonsoir,
Pouvez-vous mettre une copie de votre base sur http://www.cjoint.com/ se sera plus simple ! Salutations. Jean-Pierre |
Ma base de données dépasse 500 ko je ne peux pas la mettre sur cjoint.. :(
Alors que pour l'instant elle ne contient pas grand chose ! Le formulaire est quasi vide, il ne s'agit que d'une maquette. J'ai cependant un autre problème (si vous les jugez débile, ce qui est probable vu mon niveau en access / vba, n'hésitez pas à me dire de trouver tout seul !) J'ai une table Choix qui contiendra les données remplies dans le formulaire, et je n'arrive pas à lier les zones de texte du formulaire avec les champs de la table Choix, pour que ces dernières se remplissent automatiquement lorsque l'on rempli le formulaire ! Ca doit être pourtant simple.. Mais là n'est pas le vrai problème: le principe est que la table choix soit remplie justement avec le nouveau contrat que l'ont veut ajouter. Ma requete VérificationPrésence vérifie si la table des contrats contient déjà une ligne similaire à celle de la table Choix. Si oui, au augmente le nombre de contrats, si non, on crée une ligne. La syntaxe que tu me proposes (fmvgld) ne marche malheureusement pas, j'ai le message d'erreur INVALID QUALIFIER si lje tape "If Vérif.RecordCount = 0 Then DoCmd.OpenQuery ajout, acNormal, acEdit" J'espère que je ne vous assomme pas avec la longueur de mes posts ! |
|
Bonsoir,
oui je vous comprend, essayez de compacter votre base de données, pour cela vous l'ouvrer et sur Outils / Utilitaires de la base de données et clic sur Compacter un base de données ..... La taille va diminuer et il vous sera possible de l'envoyer...... Ou passer par la concurence http://www.cijoint.fr/ Salutations. Jean-Pierre |
Bonjour !
Merci pour cette astuce: La base de données est là: http://cjoint.com/data/dnuAQs1qmV.htm Cordialement,
|
|
Bonsoir,
OK j'ai téléchargé votre base. Pouvez-vous me préciser quelle est la table et la requete à prendre en compte..! Merci. Salutations. Jean-Pierre |
Il s'agit dans notre exemple de l'ajout dun contrat dans la table AUTRE SORTIE
Les données seront rentrées dans la table CHOIX à l'aide du formulaire. La requete VERIFICATION PRESENCE affiche une table contenant la ligne si des contrats contenant le meme produit, la meme année de souscription et la meme année de résiliation existent déjà dans la table AUTRE SORTIE, et est vide sinon. Il faut donc effectuer le test sur cette requete VERIFICATION PRESENCE, si elle est vide, ajouter la ligne grace à la requete "ajout ligne dans autre sortie", sinon augmenter le nombre de contrat de la ligne existante avec une requete que je n'ai pas encore crée. :) |
Bonsoir fmgvld,
Le code a l'air de marcher ! Il m'a bien ajouté la ligne dans AUTRE SORTIE puisqu'elle n'existait pas. Si vous acceptez toujours de continuer à m'aider, je bloque sur l'autre requête, à savoir celle qui augmente le nombre de contrats de la ligne si elle existe déjà (le then..) Pas évident pour moi, car il faut ajouter le nombre de contrats figurant dans la ligne de la table CHOIX à la ligne correspondante de la table AUTRE SORTIE trouvée par la requête vérification présence.. Je n'ai absolument aucune idée de comment faire cela !
|
|
Bonsoir superbatto,
Merci pour les informations. Se soir je m'arrête et je reprendrai le tout dès demain. Bonne soirée. Salutations. Jean-Pierre
|
D'accord, merci beaucoup !
|
|
Bonjour superbatto,
Première étape : Vous dites : je n'arrive pas à lier les zones de texte du formulaire avec les champs de la table Choix Solution: vous ouvrez le formulaire "Form1" en mode création (Modifier) puis ouvrir les propriétés du formulaire, faire clic droit sur le petit carrée noir à gauche en haut juste au dessous du nom "Form1 : Formulaire" puis clic sur "Propriétés". Ensuite clic onglet "Données" et pour la propriété "Source" clic sur la flèche du menue déroulant (à droite de la case) et clic sur le nom de votre table. Une fenêtre s'affiche avec les noms des champs disponibles. Il vous suffit de faire un glisser/coller pour les mettre sur le formulaire. Note vous pouvez supprimer les autres champs déjà présents. Et voila pour cette partie. Salutations. Jean-Pierre |
|
Bonjour superbatto,
Merci de préciser la table contrat n'existe pas; alors ou j'enregistre "Si oui, au augmente le nombre de contrats, si non, on crée une ligne" ? Salutations. Jean-Pierre |
|
Bonjour superbatto,
J'ai admis que la table contrat est "AutreSortie". Dans un premier temps : le formulaire Fo_Choix" (ancien Form1) fonctionne. J'ai renommé la légende du bouton de commande, c'est plus explicite. Elle fonctionne pour le cas d'un ajout d'un contrat dans la table Ta_AutreSortie Pour le cumul du nombre de contrats elle ne fait rien pour l'instant. Votre table Ta_AutreSortie comporte une grande quantité de doublons (visible dans la requête "Rechercher les doublons pour Ta_AutreSortie") ---- que doit’ on faire ? Dans votre requête "Re_Vérification Présence" vous avez 4 critères d'égalités alors que dans vos textes vous parlez toujours de 3 ----- qu'est ce qui est correct ? En pièce jointe l'ébauche de votre BD http://cjoint.com/?dosVLQhiqB Merci de vos renseignements pour la suite Salutations. Jean-Pierre |
Bonsoir,
Merci grandement d'aider les néophytes comme moi ! Alors, la manip pour lier les champs de la table Choix avec les cases du formulaire marche nickel ! Pour ce qui est de la table contenant les contrats, il s'agit bien de la table AUTRE SORTIE, désole de ne pas l'avoir bien précisé. La distinction des contrats se fait quant à elle sur 4 critères distincts, et non pas 3 comme je l'ai malheureusement dit: Le type de produit L'année de souscription L'année de naissance (du souscripteur) L'année de sortie Il n'y a donc finalement pas de problème de doublon. La partie du boulot consistant à créer la ligne dans AUTRE SORTIE si aucun contrat existant n'a les mêmes caractéristiques que le contrat que l'on veut ajouter est donc réglée. Il faudrait maintenant une requete qui augmente le nombre de contrats de la ligne correspondante si elle existe déjà. Mettons que la ligne 26 de la table contienne des contrats ayant exactement les mêmes caractéristiques que ceux que je veux rajouter. Il convient donc de faire : AUTRESORTIE.ligne_26.NbContrats <- AUTRESORTIE.ligne_26.NbContrats + Choix.NbContrats Je n'arrive malheureusement pas à créer cette requete :( Je vous remercie sincèrement pour votre aide. A bientôt j'espère !
|
Bonjour fmvgld
Merci beaucoup pour tout ce travail ! Je vois que ça marche et j'en suis très content, mais j'aimerais quand même comprendre quelques trucs: (Je n'ai jamais programmé en SQL) Je comprends le principe de ce qui suit (requete selection dans la table AutreSortie selon les 4 critères rentrés dans le formulaire), mais j'aimerais savoir: Pourquoi ces guillemets partout ? pourquoi avoir séparé ainsi les bouts de la définition de s ? je veux dire, pourquoi ne pas avoir tout collé tout simplement ? est ce que c'est le langage sql qui l'oblige ? Const guillemet = """" Const bout1 = "SELECT AutreSortie.Produits, AutreSortie.AnnéeSouscrip, AutreSortie.AnnéeNaiss, AutreSortie.AnnéeSortie, AutreSortie.NbContrats FROM AutreSortie " Const bout3 = "WHERE (((AutreSortie.Produits) Like " & guillemet Const bout4 = ")AND ((AutreSortie.AnnéeSouscrip) Like " Const bout5 = ") AND ((AutreSortie.AnnéeNaiss) Like " Const bout6 = ") AND ((AutreSortie.AnnéeSortie) Like " s = bout1 & bout3 & [Forms]![form2]![type_produit] & guillemet & bout4 & [Forms]![form2]![dsous] & bout5 & [Forms]![form2]![anaiss] s = s & bout6 & [Forms]![form2]![asortie] & "));" |