|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Bonjour
J'essaye de créer une SGBD sous Access et me heurte à des dificultés sans doute dues à mon manque d'expérience. Soient : une table Clients avec RéfClient clé primaire ( numéroAuto ) au format "CL/"00000, une table Chiens avec RéfChien clé primaire ( numéroAuto ) au format "CH/"00000, une table Véto avec RéfVéto clé primaire ( numéroAuto ) au format "VE/"00 Formulaire Clients avec sous-formulaire Chiens. Formulaire Véto renseigné par bouton macro dans Formulaire Chiens et champs NomVéto en liste de choix dans Chiens . Tout est OK Maintenant je veux facturer des prestations Table Facture avec NumFacture clé primaire ( numéroAuto ) au format "FA/"00000 et RéfClient ( Numérique ) au format ci dessus Table Prestations avec CodePrestations clé primaire ( numéroAuto ) au format "PR/"oo Table Détails facture avec NumFacture et CodePrestation clés primaires pour éviter relation plusieurs à plusieurs Toutes les tables sont en relation "un à plusieurs": Clients ( RéfClient ) avec Factures (RéfClient), Factures ( NumFacture ) avec Détails facture ( NumFacture ), Détails facture ( CodePrestation ) avec Prestations ( CodePrestation ) Requête Facture ( Tables clients et Factures ) Réquête Détails facture ( Tables Détails facture et Prestations ) Formulaire Factures client ( requête Facture ) avec Sous-formulaire Détails facture ( Requête Détails facture ). D'abord je renseigne les clients et leur chien et le véto pas de problèmes mais ensuite si je veux facturer comment appeler dans le formulaire Facture la Réfclient concernée. J'ai tenter avec une requête et une macro de copier et coller la RéfClient de la table Clients mais j'ai un message d'erreur car il copie le "CL/" avec et le champs est numérique. je ne epeux pas changer le type de champs car il sert de relation. Peux-t-on transformer CL/00000 en 00000 pour le coller dans le champs numérique RéfClient du Formulaire Facture client. Merci Comment faire lorsque les renseignements ( champs ) sur les Clients, les Chiens et les vétos sont enregistrés dans les tables respectives pour acceder au formulaire Facture |
|
|
00
|
|
|
#2 | |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 941 ![]() |
Bonjour,
Concernant Citation:
Dans ta requête tu aura le champ RéClient et un champ calculé (une expression) basé sur RefClient comme suit: NumClient : 0 + [RéfClient] NumClient est un alias de nom de champ pour faire référence à 0 + [RéfClient]. Pour accéder au formulaire Facture depuis un autre formulaire, un bouton me semble tout indiqué. Il faut gérer l'évènement 'Sur Clic' et y associer une procédure évènementielle ou une macro qui ouvrira le formulaire Facture, filtré sur le numéro de client. Le filtrage se fait avec la 'condition where' qui dans ton cas devrait être Bon courage |
|
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() |
Bonjour et bienvenue à toi sur ce forum.
Je ne sais pas si je me trompe dans ma compréhension mais, dans tes références et liaisons, je ne vois que des champs "NuméroAuto". Or tu sais que si d'un côté tu as un champ de ce type, il doit être référencé de l'autre par un champ "Numérique, Entier Long". A mon humble avis, le problème est posé par le format de tes champs Ref... et - à priori - il n'y a pas d'utilité à ce format. Si tu en as tout de même besoin tu peux, en suivant les conseils avisés de LedZepII, dédoubler ces champs et :
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Bonsoir
Merci à LedzeppII et bernardmichel pour leurs réponses. La "condition Where " n’a pas fonctionnée mais je l’ai remplacée par une macro avec un copier-coller. Grace à la modification de la requête que vous m’avez donnée tout fonctionne bien. J’aurai aimé avoir quelques précisions au sujet du format de mes tables. Si j’ai bien compris dans les tables et les requêtes il faut utiliser pour les références un type numéroAuto clé primaire et de format 00000 dans la première et un type numérique de même format dans celle qui est en relation et dans les formulaires et les états je peux utiliser pour ces mêmes champs un format "LL /"00000 . Quels en sont les avantages et les inconvénients par rapport à utiliser le format "LL /"00000 partout ? Bon maintenant que j’ai ma base de données Clients et que je suis en mesure de facturer Je vais essayer de compléter en y ajoutant les paiements avec les modes de paiements, n° des chèques et les arrhes. Encore merci à vous et à bientôt sur ce forum.. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Rebonsoir
Un petit conseil de plus s’il vous plait : Je me souviens avoir vu quelque part qu’il y avait une astuce concernant le prix unitaire d’un article pour ne pas affecter les anciennes factures lorsqu’il y a un changement de tarif mais je ne me rappelle plus très bien ce qu’il faut faire, pouvez vous me renseigner ? Lorsqu’on utilise le menu de demarrage pour obtenir l’ouverture de la base sur le « menu principal » par exemple comment peut-on remodifier ce mode d’ouverture puisqu’on ne peut plus accéder à « outils » ni à beaucoup d’autres choses d’ailleurs ( encore une de mes mauvaises expériences ). |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() |
Hello
Alors, me concernant, je préfère - et de loin - n'utiliser que des NuméroAuto pour tous mes champs de références. Si j'ai besoin d'un numéro de facture (par exemple), je défini la valeur de ce numéro à chaque fois que je crée une facture. A mon avis, cela me garanti une intégrité parfaite dans mes liaisons entre différentes tables (mais peut-être est-ce un leurre et le format n'influence en rien... ?) Toujours est-il que, systématiquement j'attribue le NuméroAuto d'un côté et Numérique (Entier long) de l'autre. Ceci d'autant plus que je n'ai jamais rencontré l'utilité de modifier ce format mais... Concernant ta question concernant les factures et les PU, j'ai toujours réglé ce problème de mise à jour en important le prix auquel je facturais les prestations dans une table "tblFactures". Le problème ne se pose en effet pas seulement en cas de modification générale de prix mais également en cas de modification ponctuelle, relative par exemple à une ristourne spéciale pour un client ou pour un autre. Et enfin, pour ta dernière question, il suffit de presser sur la touche Shift (majuscule) lors du démarrage de ton application. |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Bonjour
La raison que je souhaite avoir des formats spécifiques et que dans ma base il y a plusieurs champs Références, 1 à chaque table et que je veux les différencier lors des sorties d'états ( factures ou statisitques) ainsi, au premier coup d'oeil, on voit de quelle référence il s'agit. Pour le PU j'ai une table PRESTATIONS qui contient les PU mais si je sors une facture pour un client X aujourd'hui, comment faire si demain je change les PU pour ressortir ensuite cette facture à X ( en cas de perte par exemple) si les PU ont changé? En ce qui concerne les ristournes ou autres , j'ai prévu dans la table DETAILS DES FACTURES un champs Remise . Excuse moi mais je n'ai peut-être pas tout saisi dans ton dernier message , je taquine Access depuis peu de temps et je ne comprends pas tout le temps ce qu'il faut faire.Au départ je voulais trouver une base toute faite que j'aurai adaptée mais je n'en ai pas trouvée une, même dans les exemples du logiciel Access, qui me convienne alors je prends le taureau par les cornes et je m'attèle à la tâche. Là où j'ai des difficultés notamment ( et j'y passe beaucoup de temps) c'est quand j'ai une table par exemple FACTURES qui contient des factures non soldées pour un client X : comment faire lorsque X veut me payer pour retrouver la facture en question sans avoir besoin de lister toute la table FACTURES et être positionné directement à l'ouverture de la facture en question sur le contrôle qui doit recevoir le montant du règlement? Est-il possible que ce paiement soit également enregistré dans une table PAIEMENTS qui me serait utile pour la "comptabilité"? Merci et à bientôt |
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() |
Bonjour !
Afin d'éviter des confusions (il y a plusieurs questions dans ton post...), j'ai simplement commenté en bleu quelques réponses possibles à ces questions. Citation:
|
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Bien compris pour les formats
Dans mon formulaire Factures ( créer à partir d'une requête sur les tables CLIENTS et FACTURES) j'ai déja un sous-formulaire Détails facture ( créer à partir d'une requête sur les tables DETAILS FACTURE - pour éviter une relation plusieurs à plusieurs - et PRESTATIONS ) |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Salut , c'est encore moi
J'ai un souci d'automatisation Soient les tables ( avec leur relation r1 et r2) et la requête : FACTURES NumFacture (r1=1)– NuméroAuto – Clé primaire RéfClient - Numérique DateFacture Etc. DETAILS FACTURE NumFacture (r1=∞)– Numérique – Clé primaire CodeSéjour (r2=∞)– Numérique – Clé primaire Quantité Remise ( liste de choix entrée à la main ) SEJOURS CodeSéjour (r2=1)– NuméroAuto - Clé primaire Description PrixUnitaire REQUETE DETAILS FACTURE NumFacture – Numérique CodeSéjour – Numérique Description PrixUnitaire Quantité Sous total : [PrixUnitaire]*[Quantité] Remise ( liste de choix sur table REMISES ) Total ligne : [Sous total]*(1-[Remise]/100) Soit un Formulaire FACTURATION contenant un Sous-formulaire DETAILS FACTURE crée à partir de la requête ci-dessus avec CodeSéjour en liste de choix. Comment puis-je faire pour que lorsque je choisis un CodeSéjour dans la liste de choix, Les champs PrixUnitaire et Description soient renseignés automatiquement ? Merci |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() |
Attention à ne poster qu'une seule question par post...
Dans ta liste déroulante "CodeSéjour" que je nomme "lstCodeSéjour", tu affiches les trois champs : CodeSéjour PrixUnitaire Description Cela implique que (pour autant que tu n'aies que ces trois champs) CodeSéjour = lstCodeSéjour.Column(0) PrixUnitaire = lstCodeSéjour.Column(1) Description = lstCodeSéjour.Column(2) Donc : Me!PrixUnitaire = Me!lstCodeSéjour.Column(1) et bien sûr... Me!Description= Me!lstCodeSéjour.Column(2) Est-ce que cela répond à ta question ? |
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Bonjour et merci à toi
Heu! Où je dois écrire les 5 expressions contenant le "=" citées dans ton post? je te l'ai dit je suis un bleu . Il y a un Hic dans ce que j'ai fait: J'arrive à rappeler une facture par la RéfClient donc à ouvrir le Formulaire FACTURATION contenant le sous-formulaire DETAILS FACTURE et à afficher la bonne RéfClient grace à une requête et une macro contenant un copier-coller mais le NumFacture contenu dans FACTURATION ne change pas et reste le même que l'ouverture précédante et donc ne correspond pas à ce client; je ne comprends pas car ces deux champs (NuméroAuto) sont les clés primaires de leur table respective et la table CLIENTS est en relation un à plusieurs avec la table FACTURATION sur un Champs RéfClient (numérique). Y a un truc ! |
|
|
00
|
|
|
#13 | |||
|
Membre Expert
![]() |
Hello !
J'ai un peu peur que tu te sois fourvoyé dans la conception de ton formulaire.C'est pour cela que j'ai insisté déjà à plusieurs reprises pour te dire que tu dois faire tes liaisons qu'entre un champ NuméroAuto d'un côté et un champ Numérique(Entier long) de l'autre... Citation:
Code :
P.S. Si tu le souhaites, tu peux joindre ta BD compressée à ton prochain post, j'y jetterai un oeil afin d'éviter que tu ne "partes faux"... Bien sûr, si elle contient des données, n'oublies pas de les supprimer |
|||
|
|
00
|
|
|
#14 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Bonjour,
Voici le fichier de ma Base compressé. Les tables ne possèdent que quelques enregistrements pour la mise au point de la base, je les complèterais ensuite . Mes problèmes : 1) Si on rentre un nouveau client par le Menu général , je ne sais pas à partir du formulaire Clients comment ouvrir le formulaire de facturation afin de facturer : je n’arrive pas à trouver un chemin à associer à un bouton. 2) Si on rentre un nouveau client par le Menu général sans le facturer de suite, quand on veut le facturer plus tard par le Menu général avec le bouton « Facturer un client », le formulaire s’ouvre sur une fenêtre vide ( exemple client 32 qui n’a pas encore de commande) 3) Si on veut facturer un client ( qui possède déjà d’autres factures) par le Menu général avec le bouton « Facturer un client », le formulaire s’ouvre bien avec la bonne référence client mais le numéro de facture ne s’incrémente pas et reste sur ne ancienne facture ( exemple client 31 ou 27) Voilà ou j’en suis actuellement je passe beaucoup de temps sans trop de résultat et je n’ai pas terminé car ensuite j’aimerai rentrer les paiements ( avec modes de paiements chèques et espèces ) avec leurs affectations et n° des chèques. Viendra enfin la mise au point des états . Merci et à bientôt |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
J'ai pas vu la pièce jointe, je ne suis pas certain qu'elle soit partie
Je la remets . YES cette fois fois elle y est |
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() |
Hello,
Je disposais d'un peu de temps ce matin ... je t'ai donc concocté un petit exemple (dans le frmFactures) Je pense que tu trouveras là-dedans des exemples pour de nombreuses questions que tu aurais aujourd'hui, voire demain... Voilà, je me suis même permis un petit clin d'oeil sur le menu principal..., si jamais, c'est le mien et c'est un berger australien...
|
|
|
00
|
|
|
#17 |
|
Invité de passage
![]() Inscription : février 2007 Messages : 17 ![]() |
Bonsoir
Comment fait-on pour réinitialiser tous les NuméroAuto des différentes tables. J'ai essayé ,comme indiqué ,en recréant dans chaque table sur une nouvelle ligne un enregistrement pour remplacer celui contenant le NuméroAuto avec les mêmes caractéristiques mais la numérotation n'est pas revenue à 1. Merci |
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() |
Hello !
La seule technique que je connaisse consiste à vider tes tables (tu peux bien entendu les exporter dans une autre base) puis compresser ta base via le menu : Outils | Utilitaire de base de données | Compacter.... Cordialement |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com