tapas64
Messages postés33Date d'inscriptionvendredi 27 février 2004StatutMembreDernière intervention14 novembre 2004
-
29 juil. 2004 à 10:24
cs_PhilippeE
Messages postés437Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention10 août 2010
-
29 juil. 2004 à 12:04
Bonjour,
Je programme un logiciel médical qui fonctionne avec une base de données Access
J'ai réalisé l'étape de connexion à l'aide d'une requete sql, qui parcoure les tables Medecin et Identification pour repérer le nom du médecin et voir si le mot de passe (stocké dans la table identification) est le bon.
Mais la table Médecin contient aussi ServiceM, le service auquel appartient le médecin, que je voudrais récupérer au moment de l'identification et afficher dans une textbox.
Voila comment j'ai fait, mais ca ne fonctionne pas. Est-ce que quelqu'un peut m'aider? Merci d'avance
'Recupérer le mot de passe pour établir la connexion Set rs db.OpenRecordset("SELECT * FROM [MEDECIN], [IDENTIFICATION] WHERE [MEDECIN].[NomM] '" + LeNomDuMedecin + "' AND [IDENTIFICATION].[MotDePasseI] = '" + LePasseSaisi + "';", , dbForwardOnly)
Do While Not rs.EOF
rs.MoveNext
Loop
Nb = rs.RecordCount
'Récupérer le nom du service correspondant à ce médecin Set rs1 db.OpenRecordset("SELECT [ServiceM] FROM [MEDECIN] WHERE [MEDECIN].[NomM] '" + LeNomDuMedecin + "';", , dbForwardOnly)
Do While Not rs1.EOF
Fenetre2.MP_Service.Text = rs1!ServiceM
rs1.MoveNext
Loop
'Traiter les cas d'erreur
If Nb = 0 Then
MsgBox ("L'utilisateur n'est pas déclaré!")
Exit Sub
Else
Fenetre2.Show
Unload Me
End If
cs_starfighter
Messages postés90Date d'inscriptionmardi 18 mars 2003StatutMembreDernière intervention28 février 2005 29 juil. 2004 à 10:40
Bonjour, je pense que la requete "SELECT * FROM [MEDECIN], [IDENTIFICATION] WHERE [MEDECIN].[NomM] = '" + LeNomDuMedecin + "' AND [IDENTIFICATION].[MotDePasseI] = '" + LePasseSaisi + "';" n'est pas correcte car la liaison ente [MEDECIN] et [IDENTIFICATION] n'est pas faites on devrais avoir quelque chose du genre :
"SELECT * FROM [MEDECIN] LEFT JOIN [IDENTIFICATION] ON [MEDECIN].[NomM] = [IDENTIFICATION].[NomM] WHERE [MEDECIN].[NomM] = '" + LeNomDuMedecin + "' AND [IDENTIFICATION].[MotDePasseI] = '" + LePasseSaisi + "';"
si bien sur [NomM] est la clé d'intégrité de tes tables.
de plus le nom du service du medecin est deja renvoye par la premiere requete (SELECT * FROM) donc tu n'a pas besoin de refaire un select.
Tu effectu des boucles pour le parcours de tes select, sa me semble incorrecte, normalement un medecin (Nom + Password) se trouve une seul fois dans tes tables, sinon il y a des doublons.
cs_PhilippeE
Messages postés437Date d'inscriptionmercredi 18 décembre 2002StatutMembreDernière intervention10 août 20102 29 juil. 2004 à 12:04
Fonctionnellement un médecin sans mot de passe ne devrait pas exister (à vérifier avec le cahier des charges), donc il faut faire une jointure interne et non externe (LEFT JOIN)