Recherche d'enregistrement sur un formulaire Accéss

Messages postés
10
Date d'inscription
vendredi 2 septembre 2005
Statut
Membre
Dernière intervention
13 octobre 2011
- - Dernière réponse : cs_ShayW
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
- 11 déc. 2013 à 20:58
Bonjour,

Voila je reformule ma demande d'aide sur demande de notre ami Jack.

J'ai fait des formulaires sur Access de saisie, de maj et d'autres choses ayant rapport avec notre activité, mais au niveau de la maj des tables pour modifier un enregistrement je suis obliger d'utiliser la commande recherche pour chercher l'enregistrement au lieu de tapez directement la clé et que le système recherche automatiquement l'enregistrement et m'affiche les autres champs.

J'ai donc besoin d'un code pour faire cette recherche merci.

Je crois que je me suis bien expliqué cette fois, j'attends vos commentaires avec impatience merci.
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
10
Date d'inscription
vendredi 2 septembre 2005
Statut
Membre
Dernière intervention
13 octobre 2011
1
1
Merci
Ce que je veux c'est pouvoir dans mon formulaire introduire la clé de recheche et en validant avec la touche entrée, le système recherche dans ma table l'enregistrement correspondant et m'afficher tous les champs pour une modification on simple consultation.

Mes formulaires sont destinés à des utilisateurs finaux de notre société, qui doivent faire la saisie ou la modification des donnée, je prends l'exemple de la mise à jour d'une table produits, qd l'utilisateur veut modifier un produit existant il lui suffit de taper le code dans le champ approprié et aprés validation le système lui affiche la designation et tous les autres champs du formulaire et si le produit n'existe pas ds la table un message l'invite à créer le produit ou annulé la demande.

C'est le code qui peut faire tous cela dont j'ai besoin merci.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 216 internautes nous ont dit merci ce mois-ci

1
Merci
je croyais que acces était simple en fait c pas un gestionnaire de base de donnéées c'est un langage de programmation j arrive a rien avec ce truc moi

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 216 internautes nous ont dit merci ce mois-ci

ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
213 -
AcceS, un "langage" de "programmation" !
Ah bon ....
cs_ShayW
Messages postés
3251
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
16 octobre 2019
46 -
j arrive a rien avec ce truc moi
depuis 2006 ?
Messages postés
316
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
31 août 2006
1
0
Merci
Désolé mais je ne comprend pas ou est ton problème! si tu souhaite ouvrir un formulaire sur un enregistrement précis, tu peux le faire par code avec une commande du genre

Dim Criteria As String, valeur As String

valeur= "La valeur que tu recherche"
Criteria= "[Réf de ta table]=" & valeur
DoCmd.OpenForm "Nom du Formulaire", , , Criteria
Messages postés
316
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
31 août 2006
1
0
Merci
Alors je te conseillerais de passer soit par control combobox ou listbox avec deux colone dont la première est la clé de recherche et la seconde le texte significatif correspondant dans ta table
Je m'explique par un petit exemple. Un table commande contenant un premier champ Indexé de type Numéro Automatique et clé primaire. Un second champ contenant les numéro de commande et pleins d'autre champs pour les informations.

Dans mon formulaire commande je souhaite pouvoir filtrer sur une commande en particulier. Pour ce faire j'utilise au choix soit un combobox (champ à menu déroulant) soit une listebox. L'un comme l'autre sont construit pareille. A savoir qu'il n'affiche que mon numéro de commande, mais remonte aussi en colone caché la clé primaire corespondante à l'enregistrement.
Ce qui me permet d'inserer dans les évenements de mon combobox ou listbox le code vba du type

Private Sub Modifiable37_AfterUpdate()
' Rechercher l'enregistrement correspondant au contrôle sélectionné.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[RéfCommande] = " & Str(Nz(Me![Modifiable37], 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
rs.Close
End Sub

Et ce qui a pour effet de filtrer mon formulaire sur l'enregistrement sélectionné
Messages postés
10
Date d'inscription
vendredi 2 septembre 2005
Statut
Membre
Dernière intervention
13 octobre 2011
1
0
Merci
Ok merci
je vais faire l'essai et je te tiendrai au courant.
Messages postés
10
Date d'inscription
vendredi 2 septembre 2005
Statut
Membre
Dernière intervention
13 octobre 2011
1
0
Merci
Je reviens toujours sur mon problème de recherche d'enregistrement, pour te dire que, sois j'ai mal mis ton code sois ce code ne convient pas, en toute état de cause j'aimerai pouvoir t'envoyer ma base de données avec le formulaire en question tu feras toi même le test, mais je ne sais pas comment faire.

Peux-tu m'indiquer la marche à suivre merci. J'espère aussi que je ne te dérange pas.
Messages postés
316
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
31 août 2006
1
0
Merci
Met là au niveau de ton compte code source en compréssé
mais bon je pourrais pas regarder avant la semaine prochaine, je prend quelques jours de congé
Messages postés
10
Date d'inscription
vendredi 2 septembre 2005
Statut
Membre
Dernière intervention
13 octobre 2011
1
0
Merci
c'est fait, repose toi bien.

merci
Messages postés
5
Date d'inscription
mardi 17 août 2004
Statut
Membre
Dernière intervention
10 mars 2006
0
Merci
Inserrer un champ indépendant : zone de liste modifiable
Cocher: rechercher un enregistrement dans mon formulaire....
Choisir le champ.
C'est terminer
J'espére que j'ai répondu à votre besoin
Messages postés
10
Date d'inscription
vendredi 2 septembre 2005
Statut
Membre
Dernière intervention
13 octobre 2011
1
0
Merci
Merci <vermeeren>,
C'est gentil à vous, cela marche mais ne me permet pas d'ajouter des enregistrements en cas de non trouvé, vous comprenez, je sais qu'il y a un code à introduire (AfterUpdate) de la clé dans mon cas c'est le code produit, je veux, quand je donne la référence d'un produit, le système doit chercher cette référence et m'afficher les autres champs, si elle n'existe pas il doit passé aux champs en mode ajout.

J'ai déjà fait un code mais ne marche pas, si vous pouvez y jeter un coup d'oeil et me le corriger si nécessaire, je vous rappel que je travail avec Office 2003.

voici le code:

Private Sub ref__AfterUpdate()

Dim db As Database
Dim rs As Recordset
Dim critere As String

Set db = CurrentDb()
Set rs = db.OpenRecordset("produits", dbOpenDynaset) 'Table produits
critere "Ref '" & mref & "'"

rs.FindFirst critere 'Rechercher la 1ere clé correspondante
mdesig.Value = rs("designation") 'Designation de l'article
mimp.Value = rs("imprimante")

End Sub
Messages postés
316
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
31 août 2006
1
0
Merci
Bonjour med rab,

alors voilà, j'ai téléchargé ton appli. Mes première remarque sont pour la structure de tes tables.

Pour les clés primaires il est préférable (pas obligatoire) que ces clés primaires soit de type numérique plutot que texte. D'autant plus d'ailleurs que tu souhaite les utiliser dans le cadre de recherche. Pour les manipelations, c'est plus rapide et plus efficace si tes clés primaires sont de type numérique. En générale, on utilise même des champs de type numéroAuto

Pour ton code ci-dessus, je ne comprend pas bien l'interêt d'ouvrir un second recordset que tu ne va pas refermer en plus (Acces n'aime pas trop jongler avec plusieurs recordsets en mémoire)
je conseillerais plutot quelque chose de moins lourd qui déplace le curseur dans le recordset du formulaire.

Dim rs As Object


Set rs = Me.Recordset.Clone
rs.FindFirst "[Ref] = '" & Me![mref ] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Messages postés
10
Date d'inscription
vendredi 2 septembre 2005
Statut
Membre
Dernière intervention
13 octobre 2011
1
0
Merci
Bonjour "Tunin max",

j'ai ton code dont je te remercie vivement, j'espère aussi que tu t'es bien reposé.

Aussi, je vais tester le code des que je fini un travail en cours, et je te tiendrai au courant.

merci encore et à la prochaine.