Recherche d'enregistrement sur un formulaire Accéss
med_rab
Messages postés10Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention13 octobre 2011
-
8 mars 2006 à 12:22
cs_ShayW
Messages postés3258Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 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.
A voir également:
Code vba access pour rechercher un enregistrement
Recherche enregistrement - Meilleures réponses
Formulaire de recherche access - Meilleures réponses
med_rab
Messages postés10Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention13 octobre 20112 8 mars 2006 à 13:36
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.
Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 août 20061 8 mars 2006 à 12:52
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
Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 août 20061 8 mars 2006 à 15:26
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é
Vous n’avez pas trouvé la réponse que vous recherchez ?
med_rab
Messages postés10Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention13 octobre 20112 8 mars 2006 à 17:50
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.
VERMEEREN
Messages postés5Date d'inscriptionmardi 17 août 2004StatutMembreDernière intervention10 mars 2006 10 mars 2006 à 10:35
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
med_rab
Messages postés10Date d'inscriptionvendredi 2 septembre 2005StatutMembreDernière intervention13 octobre 20112 10 mars 2006 à 11:47
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")
Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 août 20061 14 mars 2006 à 09:28
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