Requete sql
samsan -
on a créer une bdd sous access de gestion de client et on veut créer un formulaire qui permet de rechercher lles clients par leurs code national en se basant sur une requete sql qui permet de faire cette recherche(on fait entrer le code puis cliquer sur un boutton rechercher et les autres information doivent s'afficher )
svp aidez nous a trouver cette requette
merci
- Requete sql
- Logiciel sql - Télécharger - Bases de données
- Sql (+) - Forum Programmation
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Cherche des haricot vendez les moi ✓ - Forum DS
- Sql lister les tables ✓ - Forum Programmation
14 réponses
Le besoin porte sur la recherche de clients par code national via un formulaire Access qui exécute une requête SQL et affiche les informations associées.
La solution proposée repose sur la vérification d’existence du code client en comptant les enregistrements correspondants dans la table et en affichant un message si aucun enregistrement ne correspond.
Le code VBA utilise CurrentDb et OpenRecordset sur une requête du type SELECT COUNT(table_client.code_client) AS compteur FROM table_client WHERE Code_client = Formulaires!FormChoixClient!ChoixCode, puis teste le compteur et affiche « Le code client entré est mauvais » lorsque compteur vaut zéro.
Les éléments clés sont Code_client comme champ, table_client comme table et FormChoixClient!ChoixCode comme contrôle du formulaire.
C'est assez simple,il y a plusieurs solutions,je t'en explique une. Voilà les étapes.
- Tout d'abord tu crées une requête qui va te servir à lister les codes nationnaux (déjà présent dans une table j'imagine), en les regroupement pour ne pas avoir de doublon.
La requête est : SELECT [Code_nationnal] FROM [Table_client] GROUP BY [Code_nationnal]
- Ensuite tu crées un formulaire "FormChoixClient" en mode création.Tu crées une liste déroulante "ChoixCode" basé sur la requête précédente.
- Tu crées une nouvelle requête qui va lister toute tes infos clients:
SELECT [Code_nationnal],[Client] FROM [Table_client] WHERE [Client]=Formulaires!FormChoixClient!ChoixCode.
- Tu retourne à ton formulaire "FormChoixClient" et tu crées un bouton qui lance la dernière requête.
Tu peux évidement rajouter toutes les infos que tu as besoin dans la dernière requête et pourquoi pas créer un état pour que ce soit plus joli (sauf que le bouton devra executer le nouvel état et non la requête).
J'espère que ça t'as aider ;)
je te remercie infiniment c'est trés gentille de votre part
A un endroit tu verras "Afficher formulaire/Page", et là tu sélectionnes dans la liste ton formulaire en question.
Si tu ferme et réouvre ta base, ça marche (je viens de tester).
Bonne journée, n'hésite pas pour les questions.
Pour revenir au problème, tu fais "clique droit" sur la zone de texte en question et tu fais "remplacer par zone de texte"
Le problème qui peut se passer c'est que si tu ne tapes pas le code du clients EXACT et que tu clique sur le bouton, ça ne t'afficheras rien dans ton formulaire principal. A toi de voir.
Bonne journée.
2___dans le formulaire principal clients on a crée un bouton sauvegarder enregistrement est ce qu'il ya une façon qui permet de sauvegarder les informations et aprés vider toutes les cases automatiquement sans ajouter un autre bouton "nouveau"
désolé pour le derangement
Sur ton bouton "sauvegarder" , vas dans les proprités, ensuite sur"evenement" puis "sur click". Tu clique sur les 3 p'tits points |...| Et ça t'ouvre le vba, tu verra une ligne du style:
DoCmd.DoMenuItem ac FormBar, ac RecordsMenu, acSaveRecord, ...
En dessous, tu mets juste:
DoCmd.GotoRecord , , acNewRec
Voilà ;)
Set db = CurrentDb()
Set res = db.OpenRecordset("SELECT COUNT(table_client.code_client) AS compteur FROM table_client WHERE (((Code_client) = " & Formulaires!FormChoixClient!ChoixCode & "));")
If res![compteur] = 0 Then
MsgBox ("Le code client entré est mauvais")
End If
Le code_client c'est le nom du champs de ta table.
La table_client, c'est le nom de ta table ou il y a les codes client.
Formulaires!FormChoixClient!ChoixCode, c'est le nom du code client du formulaire.
En espérant que ça fonctionne ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionLe mieux c'est que tu ailles voir la personne qui te demandes de faire la base de données, en lui redemandant précisement ce qu'il veut concernant la recherche par personnes. Car là ce n'est pas clair du tout.
Pour moi le mieux est de faire deux listes comme je t'es dit plus haut. Au pire explique ça à la personne qui te demandes de faire la base de données.
Ensuite tu crées une requête "Choix Prénom" basée sur la même table. Là tu mets le champs "prénom" et le champs "nom". Dans les critères au niveau du champs "nom" tu mets Forms!Recherche!ChoixNom.
Tu crées ton formulaire recherche dans le quel tu mets deux zones de liste. La première est alimentée par les noms de ta requête (Choix Nom) (tu vas dans propriété>contenu) et la deuxième par les prénoms (Choix Prénom).
Si tu veux faire ça nickel:
Dans ta liste "nom": Propriété après MAJ, un p'tit clic sur le bouton à trois points, générateur de code... Tu met juste un Me!ChoixPrénom.Requery dans le VBA
Et bien sûr ensuite un bouton qui lance ton formulaire en choisissant les informations spécifiques.
voila ce que tu a dit"N'hésite pas à poser d'autres questions !"
je croi que tu doit relire la discussion pour voir ce que tu as dit
merci en tout cas je suis désolé pour le derangement
au revoir
Si tu veux juste protéger ta base par un mot de passe:
- tu vas dans "outils" puis "sécurité" puis "définir un mot de passe".
Si tu veux faire un système avec plusieurs login et mots de passe:
-tu vas dans "outils" puis "sécurité" puis "Assistant sécurité au niveau utilisateur"
Je te rapelle qu'avec l'aide d'Access tu trouvais directement cette info...bref.
il veux une zone de texte qui permet de saisire le nom et en cliquant sur rechercher (ex on a entré un nom qui commence par b) on doit afficher dans une lzone de liste tous les noms qui commencent par b et chaque nom est un lien quand on y clique les info de cette personne doivent s afficher dans le fomulaire principal c assez complex!!!!!!!!!!!!
c le dernier probléme!
merci bcp
En fait dans le formulaire_nom ou tu mets la zone de text "nom", tu mets juste un bouton qui renvoie vers le formulaire_tri_par_lettre.
Ce dernier tu le lie à une reqûete du style
SELECT Nom FROM table WHERE LIKE "[formulaires]![formulaire_nom]![nom]*";
Par contre, je pense que ça ne fonctionne que si tu ne tapes qu'une seule lettre au départ.
est ce que tu n'as pas de solution pour qu'on puisse faire le login et le mot de passe par le code vba
pcq on nous a demandé de créer un menu d'admiistration qui permet de choisir l'utilisateur(administrateur ou un autre utilisateur) et le mot de passe bien sur mais seul l'administrateur peut effectuer des modifications sdans la base de données
merci et désolé pour le dérangement
d accord je vais demander de l aide a quelqu'un d autre mais si tu as trouvé la solution ca serai un grand plaisir pour moi
merci bcp bcp et désolé pour le dérangement
Ce soir ce sera possible par contre. Sinon en attendant, explique moi ici plus en détail ta situation et je vais voir ce que je peux faire.
bon an créer 2 formaulaire le premier c'est le principale a partir de la table clients et on veut crée un autre formulaire qui contient une zone de texte permettant de saisir le code du client et en cliquant sur un bouton rechercher les autres informatines des clients s'affichent dans le formulaire principale
merci bcp pou ton aide
Donc je reprends.
Tu crées le formulaire avec la liste (basé sur la p'tite requête du début) comme je t'ai dis plus haut.
Dans ce formulaire tu crée un bouton, et là y'a un "assistant Bouton". tu fais donc:
- Opération sur formulaire > Ouvrir un formulaire (puis suivant)
- Tu choisis ton formulaire principal (puis suivant)
- Tu fais "Ouvrir le formulaire et trouver les infos spécifiques à afficher" (puis suivant)
- Tu choisis le champs code_nationnal des 2 côtés et tu appuie sur la flêche <->.
Voilà, ça devrait marcher !