Access- pb de calcul dans un champs
Résolu
mod77
Messages postés
1284
Date d'inscription
Statut
Membre
Dernière intervention
-
mod77 Messages postés 1284 Date d'inscription Statut Membre Dernière intervention -
mod77 Messages postés 1284 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une table "T-Plat" avec un champs "N°client" et un champs "N°plat" entre autres.
J'ai créé un champs "nombre de plat" car j'aimerai, lorsqu'un client prend un plat, que son plat soit compter, et afficher ce nombre en même temps que le champs "N°client" en permanence sur mon formulaire.
Or, je ne sais pas comment faire pour incrémenter le champ "nombre de plat" qui est dans ma table.
Quelqu'un peut-il m'aider SVP?
Merci
J'ai une table "T-Plat" avec un champs "N°client" et un champs "N°plat" entre autres.
J'ai créé un champs "nombre de plat" car j'aimerai, lorsqu'un client prend un plat, que son plat soit compter, et afficher ce nombre en même temps que le champs "N°client" en permanence sur mon formulaire.
Or, je ne sais pas comment faire pour incrémenter le champ "nombre de plat" qui est dans ma table.
Quelqu'un peut-il m'aider SVP?
Merci
A voir également:
- Access- pb de calcul dans un champs
- Calcul moyenne excel - Guide
- Calcul km marche à pied gratuit - Télécharger - Sport
- Word mettre à jour tous les champs - Forum Word
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Echec mise à jour champs Word ✓ - Forum Word
43 réponses
dans la source du textbox:
select count(*) from t_table where date=[textbox_date] and num_table=[textbox_num_table] and num_client=[textbox contenant le numéro du client pour le calcul du nombre de réservation]
s'il y a autre chose, pourrai tu nous fournir le fichier carrément ?
select count(*) from t_table where date=[textbox_date] and num_table=[textbox_num_table] and num_client=[textbox contenant le numéro du client pour le calcul du nombre de réservation]
s'il y a autre chose, pourrai tu nous fournir le fichier carrément ?
blux
Messages postés
27122
Date d'inscription
Statut
Modérateur
Dernière intervention
3 360
Dans ce cas précis, un dcount ira plus vite, à mon avis...
Merci les gars j'essaie de suite la formule de garion28 et je reviens!
J'ai déjà voulu transmettre ma base mais c'est trop lourd, déjà que pour l'image de l'écran c'est compliqué pour moi.
A+
J'ai déjà voulu transmettre ma base mais c'est trop lourd, déjà que pour l'image de l'écran c'est compliqué pour moi.
A+
blux> je ne suis pas vraiment un utilisateur des fonctions propre a ms office, donc je réagi avec le sql de base, la fonction dcount serai en effet plus approprié
Bon; je n'y arrive pas alors je joins le fichier:
https://www.cjoint.com/?ctmORQ1LIu
Merci pour votre aide
https://www.cjoint.com/?ctmORQ1LIu
Merci pour votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ya quelques truc qui me chiffone:
on prend le cas où il n'y a qu'un service par jour
- nb resa: je suppose que un client peut faire plusieurs réservation ans le cas ou il invite plusieurs personne au restau ? dans ce cas il ne doit pas y avoir les champs entree,plat,dessert puisque ca suppose qu'1 ligne = 1 client servi.
- admettons qu'un client peut inviter sur son compte, plusieurs personnes: si 1 client = 1 table il faudrai que pour 1 client et 1 date donné, il y ai autant de ligne dans la table de réservation qu'il y a d'invité (du coup le nb resa devien inutile du fait qu'on peu calculer le nombre de réservation pour 1 client enregistré et 1 date donné)
- tu as mis des objet OLE dans ta table plat, ca sert a quoi exactement ?
- et la table plat est sensé contenir quoi si on garde les champs du repas dans la table de réservation (noté t_table dans ton fichier) ?
on prend le cas où il n'y a qu'un service par jour
- nb resa: je suppose que un client peut faire plusieurs réservation ans le cas ou il invite plusieurs personne au restau ? dans ce cas il ne doit pas y avoir les champs entree,plat,dessert puisque ca suppose qu'1 ligne = 1 client servi.
- admettons qu'un client peut inviter sur son compte, plusieurs personnes: si 1 client = 1 table il faudrai que pour 1 client et 1 date donné, il y ai autant de ligne dans la table de réservation qu'il y a d'invité (du coup le nb resa devien inutile du fait qu'on peu calculer le nombre de réservation pour 1 client enregistré et 1 date donné)
- tu as mis des objet OLE dans ta table plat, ca sert a quoi exactement ?
- et la table plat est sensé contenir quoi si on garde les champs du repas dans la table de réservation (noté t_table dans ton fichier) ?
J'ai introduis le champs "nbrésa" pour essayer de m'aider dans comptage des tables réservées mais je ne l'ai pas vraiment exploité.
Car le "N°table" est juste là pour créer une clé (d'ailleurs j'ai l'impression que vous le confondez avec un numéro de table réel) car sinon j'aurais attribué moi même le numéro de la table où est le client.
Si tu regardes bien, quand tu lances mon formulaire client il y a 5 "N°tables" rien que pour le client N°1, alors que les autres clients n'en ont qu'une de réservé/prise. c'est ce que tu lis sur le bouton de déplacement et que j'ai entouré. Et si tu clic sur le bouton tu peux accéder aux autres tables et ainsi voir si les clients ont pris
une entrée seulement ou avec un plat ou avec un dessert.
J'ai créé la troisième table "T-Repas" pour y stocker mes questionnaires que j'ai fait sous Excel. Ils sont spécifiques à chacun des choix (entrée, plat ou dessert). Attention !! si je coche entrée et plat alors dans mon formulaire "f_repas" j'aurai accès au questionnaires Excel "Question sur Entrée" et "Question sur Plat" c'est tout!
(En fait, c'est ce que j'aimerai pouvoir faire, mais j'ai un pb à ce sujet dont j'ai déjà posté la question sur le site sans avoir eu de réponse pour l'instant, je verrai après!).
Ma remarque est la suivante: si access sait combien de table sont liées au client N°1, c'est qu'il y a forcément un moyen d'afficher cette info dans une zone texte, non?!
Sinon, est-ce qu'il y a moyen de déplacer les boutons de déplacement du formulaire pour les mettre en haut du formulaire plutôt qu'en bas?
Car le "N°table" est juste là pour créer une clé (d'ailleurs j'ai l'impression que vous le confondez avec un numéro de table réel) car sinon j'aurais attribué moi même le numéro de la table où est le client.
Si tu regardes bien, quand tu lances mon formulaire client il y a 5 "N°tables" rien que pour le client N°1, alors que les autres clients n'en ont qu'une de réservé/prise. c'est ce que tu lis sur le bouton de déplacement et que j'ai entouré. Et si tu clic sur le bouton tu peux accéder aux autres tables et ainsi voir si les clients ont pris
une entrée seulement ou avec un plat ou avec un dessert.
J'ai créé la troisième table "T-Repas" pour y stocker mes questionnaires que j'ai fait sous Excel. Ils sont spécifiques à chacun des choix (entrée, plat ou dessert). Attention !! si je coche entrée et plat alors dans mon formulaire "f_repas" j'aurai accès au questionnaires Excel "Question sur Entrée" et "Question sur Plat" c'est tout!
(En fait, c'est ce que j'aimerai pouvoir faire, mais j'ai un pb à ce sujet dont j'ai déjà posté la question sur le site sans avoir eu de réponse pour l'instant, je verrai après!).
Ma remarque est la suivante: si access sait combien de table sont liées au client N°1, c'est qu'il y a forcément un moyen d'afficher cette info dans une zone texte, non?!
Sinon, est-ce qu'il y a moyen de déplacer les boutons de déplacement du formulaire pour les mettre en haut du formulaire plutôt qu'en bas?
Pour synthétiser: Je veux afficher toutes les tables d'un client dans une zone texte . C'est tout!
ainsi chaque fois que j'affiche un client je sais combien de tables il a.
ainsi chaque fois que j'affiche un client je sais combien de tables il a.
pour les boutons de déplacement je ne crois pas qu'ils soit déplacable
ensuite pour compter le nombre de table pour 1 client tu utilise le count(*).
voila une syntaxe qui pourrai t'aider pour tes requètes en vba:
- alt+f11 pour ouvrir l'éditeur vba
- outils->préférence
- cocher microsoft DAO 2.5/3.5 compatibility library ou supérieur
syntaxe (le formulaire table est appellé frm_table et doit etre activé dans l'éditeur par clic droit sur le controls qui actionnera la macro->créer code évenement->générateur de code):
dim db as dao.database
dim rst as dao.recordset
dim req as string
req="ta requète pour compter tes champs exemple: select count(*) from t_table where date='" & Form_frm_table.txt_date.value & "';"
set db=currentdb()
set rst=db.openrecordset(req)
ensuite tu récupere la valeur par rst.fields(0) (0 étant la premiere colonne extraite, cette colonne n'ayant que le résultat du count(*) de ma requète)
et tu fini ta macro par:
set rst=nothing
set db=nothing
ce systeme sert seulement pour les requètes select.
si j'ai pas tout dis pour récupérer le nombre de table réservé pour 1 client tu le dis
ensuite pour compter le nombre de table pour 1 client tu utilise le count(*).
voila une syntaxe qui pourrai t'aider pour tes requètes en vba:
- alt+f11 pour ouvrir l'éditeur vba
- outils->préférence
- cocher microsoft DAO 2.5/3.5 compatibility library ou supérieur
syntaxe (le formulaire table est appellé frm_table et doit etre activé dans l'éditeur par clic droit sur le controls qui actionnera la macro->créer code évenement->générateur de code):
dim db as dao.database
dim rst as dao.recordset
dim req as string
req="ta requète pour compter tes champs exemple: select count(*) from t_table where date='" & Form_frm_table.txt_date.value & "';"
set db=currentdb()
set rst=db.openrecordset(req)
ensuite tu récupere la valeur par rst.fields(0) (0 étant la premiere colonne extraite, cette colonne n'ayant que le résultat du count(*) de ma requète)
et tu fini ta macro par:
set rst=nothing
set db=nothing
ce systeme sert seulement pour les requètes select.
si j'ai pas tout dis pour récupérer le nombre de table réservé pour 1 client tu le dis
Excuse moi mais j'ai recopié texto ce que tu as écris mais ça ne fait rien.
L'as-tu appliqué à ma base? et ca marche ?
Voici ce que j'ai écrit
Option Compare Database
Private Sub Nbre_Résa_BeforeUpdate(Cancel As Integer)
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim req As String
req = "ta requète pour compter tes champs exemple: select count(*) from t_table where date='" & Form_frm_table.txt_date.Value & "';"
Set db = CurrentDb()
Set rst = db.OpenRecordset(req)
rst.Fields (0)
Set rst = Nothing
Set db = Nothing
End Sub
Mais j'ai pas vu ça:
le formulaire table est appellé frm_table et doit etre activé dans l'éditeur par clic droit sur le controls qui actionnera la macro.
Moi, le formulaire s'appelle: form_F-Table sous-formulaire
c'est quoi le controls qui actionnera la macro? il faut que je crée un bouton ? j'avais une zone texte, c'est pas bon?
L'as-tu appliqué à ma base? et ca marche ?
Voici ce que j'ai écrit
Option Compare Database
Private Sub Nbre_Résa_BeforeUpdate(Cancel As Integer)
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim req As String
req = "ta requète pour compter tes champs exemple: select count(*) from t_table where date='" & Form_frm_table.txt_date.Value & "';"
Set db = CurrentDb()
Set rst = db.OpenRecordset(req)
rst.Fields (0)
Set rst = Nothing
Set db = Nothing
End Sub
Mais j'ai pas vu ça:
le formulaire table est appellé frm_table et doit etre activé dans l'éditeur par clic droit sur le controls qui actionnera la macro.
Moi, le formulaire s'appelle: form_F-Table sous-formulaire
c'est quoi le controls qui actionnera la macro? il faut que je crée un bouton ? j'avais une zone texte, c'est pas bon?
Les boutons standards de déplacement ne sont pas déplaçables, mais on peut les supprimer de l'affichage et les remplacer par des boutons de formulaire avec le code vba qui fait le déplacement.
Pour l'histoire du comptage, point n'est besoin d'ouvrir un recordset, la fonction dcount fait cela...
Tiens, jette un oeil à ça :
https://www.cjoint.com/?ctpDfGGynS
J'ai mis un champ de comptage, des boutons de déplacement.
Je n'ai rien cassé, juste ajouté deux forms, il faut ouvrir F1_Client.
Pour l'histoire du comptage, point n'est besoin d'ouvrir un recordset, la fonction dcount fait cela...
Tiens, jette un oeil à ça :
https://www.cjoint.com/?ctpDfGGynS
J'ai mis un champ de comptage, des boutons de déplacement.
Je n'ai rien cassé, juste ajouté deux forms, il faut ouvrir F1_Client.
en faite tu fait un copier coller sans relire Oo ?
req = "ta requète pour compter tes champs exemple: select count(*) from t_table where date='" & Form_frm_table.txt_date.Value & "';"
j'espère que tu n'as pas recopier ca tel quel sinon ca ne sert a rien que tu fasse de la programmation (même si c'est sur access)
req = "ta requète pour compter tes champs exemple: select count(*) from t_table where date='" & Form_frm_table.txt_date.Value & "';"
j'espère que tu n'as pas recopier ca tel quel sinon ca ne sert a rien que tu fasse de la programmation (même si c'est sur access)
Blux, ton fichier est déjà en .mdb mais bien qu'en faisant ce que tu dis c'est une base vide qui s'ouvre et en plus j'ai du choisir le programme avec lequel je dois l'ouvrir.
Est-ce que garion28 a pu l'ouvrir, lui?
Est-ce que garion28 a pu l'ouvrir, lui?
quand tu envoi ta base sur cijoint, le lien a enregistré est celui en haut de la page, celui qui se fini par .mdb
sur cijoint ca met le fichier en texte (donc ya les hiéroglyphe) mais au dessus du texte il y a un lien pour le télécharger (clic droit->enregistrer sous)
Bon désolé les gars !
J'arrête là, je galère trop pour ouvrir le fichier, tant pis pour moi, mais ça m'énerve!
La base s'ouvre mais maintenant un message s'affiche en disant que "le fichier ne peut être ouvert car il n'est pas sur le bon réseau, et pour des raisons de sécurité"
merci de votre aide et désolé pour le temps perdu!
J'arrête là, je galère trop pour ouvrir le fichier, tant pis pour moi, mais ça m'énerve!
La base s'ouvre mais maintenant un message s'affiche en disant que "le fichier ne peut être ouvert car il n'est pas sur le bon réseau, et pour des raisons de sécurité"
merci de votre aide et désolé pour le temps perdu!