Formulaire ACCESS

Fermé
maylouz Messages postés 34 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 24 juin 2016 - 20 avril 2013 à 00:16
maylouz Messages postés 34 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 24 juin 2016 - 20 avril 2013 à 16:34
Bonjour,

je possède un formulaire Client et un formulaire Contrat sur Access , et je voudrais à partir du formulaire Client Accéder à l'enregistrement client correspondant dans le formulaire Contrat , c'est a dire depuis le formulaire client , si je suis dans le client 001 , j'accède au contrat qui correspond bien au contrat du client 001.

pour cela , j'ai créer un bouton a lequel j'ai associer le code vba ci-dessous


Private Sub Commande30_Click()
DoCmd.RunCommand acCmdSaveRecord
Dim cond1, cond2, cond3 , critere As String


cond1 = "[Nom]=" & "'" & Me![NOM] & "' AND"
cond2 = "[Prénom]=" & "'" & Me![PRÉNOM] & "' AND"
cond3 = "[Date_de_naissance]=" & "'" & Me![DATE_DE_NAISSANCE] & "'"
critere = cond1 + cond2 + cond3

DoCmd.OpenForm "6- Client", , , critere
End Sub



et donc quand j'exécute le bouton , j'ai un message d'erreur m'affichant :
Type de données incompatible

Cela vient de la condition 3 :

cond3 = "[Date_de_naissance]=" & "'" & Me![DATE_DE_NAISSANCE] & "'"


car on la mettant en commentaire , le bouton marche mais ça donne pas le bon client correspondant.

si quelqu'un peut m'aider svp à régler ce problème de syntaxe . merci d'avance.

Cordialement.

6 réponses

Bonsoir,
Si tu as un identifiant pour tes clients, utilise l'identifiant de tes clients, sinon à quoi bon. Ce sera bien plus simple pour toi comme pour Access qui est configuré pour fonctionné avec des Id. Le reste des informations de l'enregistrement suivra tout seul si tu demandes de le sortir.
Et pareil pour tes contrats, s'ils ont un Identifiant, pour ta sélection tu demandes le contrat N° Id , pas besoin d'ajouter en plus le client, la date, etc, c'est à Access de les sortir.
Bonne suite
0
maylouz Messages postés 34 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 24 juin 2016
20 avril 2013 à 01:50
Merci Tessel75 pour votre réponse , je suis en stage et je réalise une base de données pour une entreprise et le responsable ne veut pas saisir des identifiants pour les clients , c'est pour ça j'ai identifié les clients par leurs nom , prénom et dateNaissance.

Cordialement.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
20 avril 2013 à 10:13
Bonjour
Si tu as une relation entre la table client et la table contrat de 1 a plusieurs, tu fais un formulaire et et sous formulaire sur ces tables.
Lorsque tu choisiras un client dans le formulaire tu auras les informations du contrat dans le sous formulaire
0
Bonjour,
La préconisation de Castours me paraît tout à fait excellente: un formulaire principal "Client" et des sous-formulaires pour chacun des contrats signés.
Reste la question de la sélection du client pour retrouver les contrats classés par client.
Il me semble que le mieux (pour l'avoir mis en place moi-même) serait d'avoir 2 formulaires principaux, le premier pour l'inscription du client la 1ère fois, et le 2ème pour l'appel des clients déjà inscrits. Avec cette méthode, par un jeu de listes déroulantes de choix en cascade, "Nom "puis "prénom", éventuellement "Date de Naissance", tu arrives à sélectionner l'identifiant du client, lequel t'ouvre les sous-formulaires des contrats.
Une variante serait d'avoir un petit formulaire grâce auquel tu appellerais le client désiré, mais toujours avec le même système de listes déroulantes en cascade. Cette 2ème solution est peut être plus facile à mettre en place à cause des actualisations à assurer.
N'avoir qu'un seul formulaire peut poser des problèmes insolubles en mélangeant les clients déjà inscrits et les nouveaux qu'il faut inscrire comme "nouveau". Mais tout le monde ne partagera peut-être pas mon avis?
Bonne suite.
0
maylouz Messages postés 34 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 24 juin 2016
20 avril 2013 à 15:07
Bonjour , je remercie tout le monde d'avoir pris la peine de me répondre.

Concernant la réponse de castours , cela peut être une solution , mais après je me retrouve avec un formulaire assez long et trop chargé vu le nombre d'informations que j'ai dans le formulaire.

c'est pour ça je voulais qu'une fois les infos du client sont saisies .
à l'aide d'un bouton , je voudrais accéder à son contrat directement pour pouvoir continuer l'enregistrement du client.

Cela marche parfaitement avec d'autres formulaires ne possédant pas d'identifiant de type date, c'est pour ça je vous ai posté le code en VBA pour voir si c'est possible de corriger le problème d'incompatibilité de type.

Merci à vous.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re Bonjour,
Tu écris: cond3 = "[Date_de_naissance]=" & "'" & Me![DATE_DE_NAISSANCE] & "'"

Essaie: cond3 = "[Date_de_naissance]=" & Me![DATE_DE_NAISSANCE] sans les "'" encadrant la date de naissance qui est un nombre et non pas un texte. ça devrait tourner.
Ne pas confondre le nom du contrôle, par force un nom, et sa valeur, qui peut être plein de choses. Dans ton expression "Me. ___" Access tient compte de la valeur du contrôle.

Cela dit mes observations n'en sont pas moins valables, et même ce que tu dis me conforte dans l'idée que ce peut être une bonne solution d'avoir 2 formulaires Clients, un complet et un réduit.
Bonne suite
0
maylouz Messages postés 34 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 24 juin 2016
20 avril 2013 à 16:17
En enlevant les "'" , cela m'ouvre bien le formulaire contrat ( avant y avait une erreur ) mais par contre le formulaire est vide ( champ vide ) , cela n'a pas bien comparé les dates.

en fait si je mets que le nom et prénom , cela marche et me sort le bon contrat , mais après si j'identifie le client qu'avec son nom et prénom et que j'ai deux client qui porte le même nom , cela causera des problèmes.
0
maylouz Messages postés 34 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 24 juin 2016
20 avril 2013 à 16:34
Le problème à été résolu , vu que c'est le type "Date" qui causait problème , j'ai remplacé le type du champ date_de_naissance de type date en type String avec un masque de Saisi 00/00/0000;0;_

et donc ça marche parfaitement.

Merci beaucoup à vous.

Cordialement.
0