Problème de requpete SELECT

Résolu
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008 - 12 nov. 2007 à 15:52
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008 - 13 nov. 2007 à 13:10
Bonjour à tous, j'ai un petit problème dans une des mes requêtes !!! Je vous explique ! J'ai deux tables une qui contient des professeurs avec leurs coordonées personnelles et une autre table qui contient les absences des professeurs. La relation est effectuée par un champs nommé matricule.

J'aimerais que lorsque je fais une recherche d'une date à une autre, il me donne les absences qui se sont produites dans ce délais.

Voci ma requête actuel : elle fonctionne avec certain choix de date et pas avec d'autres !!!!

Dim str_requete_sql As String
Dim date_de_depart As Date
Dim date_de_fin As Date

date_de_depart = DTPicker_date_depart.Value
date_de_fin = DTPicker_date_fin.Value
str_requete_sql "SELECT PERSONNELLES.nom, PERSONNELLES.prenom, ABSENCES.date_de_debut, ABSENCES.date_de_fin, ABSENCES.nombre_de_jour, ABSENCES.commentaire, ABSENCES.type FROM ABSENCES INNER JOIN PERSONNELLES ON ABSENCES.matricule PERSONNELLES.matricule WHERE date_de_depart.absences Between '" & date_de_depart & "' AND '" & date_de_fin & "'"

Set nom_ma_base_de_donnee = DBEngine.Workspaces(0).OpenDatabase(str_nom_de_la_base_de_donnees)
Set recorset_sql = nom_ma_base_de_donnee.OpenRecordset(str_requete_sql, dbOpenDynaset)
Set gestion_des_professeurs.Recordset = recorset_sql

Merci d'avance pour votre aide, car sans ceci je n'arrive pas à finaliser mon projet

Gilles

14 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
12 nov. 2007 à 18:56
Salut,

Regarde ce lien sur SQL, si cela peut t'aider...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
12 nov. 2007 à 19:11
Ah....C'est baloooo....Si tu as un format de type String dans ta table concernant les dates, je doute que l'opérateur Between fonctionne....!

Essaye comme cela :
Sql "SELECT PERSONNELLES.nom, PERSONNELLES.prenom, ABSENCES.date_de_debut, ABSENCES.date_de_fin, ABSENCES.nombre_de_jour, ABSENCES.commentaire, ABSENCES.type FROM ABSENCES INNER JOIN PERSONNELLES ON ABSENCES.matricule PERSONNELLES.matricule WHERE date_de_depart Between '" & CDate(Format(date_de_debut, "DD/MM/YYYY")) & "' AND '" & CDate(Format(date_de_fin, "DD/MM/YYYY")) & "'"

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
12 nov. 2007 à 16:06
Salut,

Pour info, les dates dans une requête SQL doivent être entourées de #

Exemple : '# TaDate #'

Puis il y a un format aussi à respecter :

Exemple : '# Format(TaDate,"MM\/DD\/YYYY") #'

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
12 nov. 2007 à 16:16
Salut Exploreur,

Merci de te soucier de mon problème ! Au fait dans ma base de données acces j'enregistre mes dates sous le format caractère !!!
est-ce que je dois absolument changer ????

Et comment je fois faire pour composer ma requête avec mes variables et avec ce style de formatage ?

Dans ce style-ci :



"SELECT PERSONNELLES.nom, PERSONNELLES.prenom, ABSENCES.date_de_debut, ABSENCES.date_de_fin, ABSENCES.nombre_de_jour, ABSENCES.commentaire, ABSENCES.type FROM ABSENCES INNER JOIN PERSONNELLES ON ABSENCES.matricule = PERSONNELLES.matricule WHERE date_de_depart Between '" & Format(date_de_debut,"DD/MM/YYYY") & "' AND '" & Format(date_de_fin,"DD/MM/YYYY") &"'"

Voila ce que je viens de penser !!! Par rapport à ce que tu m'as dis mais maintenant est-ce que je dois vraiment changer mes types de champs dans la BDD ou je peux laisser comme ça !!!

Merci Exploreur c'est super...
0

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

Posez votre question
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
12 nov. 2007 à 16:29
Re,

Ben si on veut faire les choses bien, faudrait dans ta base déclarer les champs date : de type Date....Perso j'utilise les deux, l'avantage de travailler directement en date, cela évite peut-être de faire des ficelles...(lol) avec les String !!

Par contre il me semble, quand tu déclares dans acces un champ en date, il est de ce format là(à vérifier) : MM/DD/YYY

C'est toi qui choisi....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
12 nov. 2007 à 17:26
Re,

Justement je n'aime pas le format Acces donc c'est pour cela que j'utilise le type String !

Au fait ma requête elle ne fonctionne toujours ! Pas je comprends pas ! Elle ne m'affiche pas toujours mes données... Snif snif

Au fait j'aimerais que lorsque je sélectionen une date de départ et une date de fin, elle effectue la recherche dans la base de données me sortes les absences qui sont comprises dans cette plage la...

Je sais pas si je dois modifier quelques chose ou pas mais je trouve pas !
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
12 nov. 2007 à 19:20
Eploreur, je n'ai qu'une chose à te dire, mille merci maintenant il y a l'air que ça fonctionne !!! Mias ce qui est dommage c'est que si je fais des recherches à cheval sur deux mois ça va pas enfin c'est pas grave, la personne qui va l'utiliser soirt logiquement que des listings toutes les semaines...

Mais bon si jamais la fin de mois tombe en plein milieu de la semaine ben c'est dommage lol

Mais merci pour l'avancement de ce sujet !!! C'est super gentil de ta part...

Gilles
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
12 nov. 2007 à 19:22
Ha oui au fait merci pour ton site, il va m'aider pour un autre programme qui est mon Travail de fin d'étude !!! Car je le fais en ADO sur une base de données MySQL qui tourne sur EasyPhp 1.8 !

Ici j'ai justement des problèmes pour faire mes UPDATE donc je vais aller jeter un oeil

Encore merci
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
13 nov. 2007 à 09:44
Salut Exploreur,

Voilà j'ai encore des problèmes mdr !!!! Et oui ça n'en fini pas lol mais bon je débute dans les ADO et le SQl !

Au fait lorsque j'effectue un UPDATE mes champs sont bien modifié dans ma base de données mais j'ai une erreur qui me dit : Dépassement de capacités, Erreur d'éxecution 6.

Voci mon code pour la requête :



'Déclaration des variables

Dim str_nom_modifier_compte_utilisateur As String                   'Variable qui va contenir le nom
Dim str_prenom_modifier_compte_utilisateur As String              'Variable qui va contenir le prénom
Dim str_login_modifier_compte_utilisateur As String                  'Variable qui va contenir le login
Dim str_password_modifier_compte_utilisateur As String           'Variable qui va contenir le password
Dim str_niveau_acces_modifier_compte_utilisateur As String      'Variable qui va contenir le nivea d'accès

'Affectation des variables aux controls
str_nom_modifier_compte_utilisateur = txt_modifier_utilisateur(0).Text
str_prenom_modifier_compte_utilisateur = txt_modifier_utilisateur(1).Text
str_login_modifier_compte_utilisateur = txt_modifier_utilisateur(2).Text
str_password_modifier_compte_utilisateur = txt_modifier_utilisateur(3).Text
str_niveau_acces_modifier_compte_utilisateur = combobox_niveau_acces_modifier_utilisateur.Text

'Appel des procédures suivantes procédure qui ouvre la base de donnée MySQL
Call PROCEDURE_OUVRIR_CONNEXION_MYSQL
   
'Affectation de la requête à la variable
str_requete_sql = "UPDATE user SET nom='" & str_nom_modifier_compte_utilisateur & "', prenom='" & str_prenom_modifier_compte_utilisateur & "', login='" & str_login_modifier_compte_utilisateur & "', password='" & str_password_modifier_compte_utilisateur & "', niveau_acces='" & str_niveau_acces_modifier_compte_utilisateur & "' " 'WHERE nom='" & str_nom_modifier_compte_utilisateur & "' AND prenom='" & str_prenom_modifier_compte_utilisateur & "'"

objet_recordset.Open str_requete_sql, objet_de_connexion 'Ouverture et exécution de la requête
   
'Vidage de l'objet connexion et recordset
Set objet_recordset = Nothing
Set objet_de_connexion = Nothing
   
'Vide la variable
str_requete_sql = ""

J'ai cherché sur le forum mais rien de concluant car j'ai vérifié mes variables et je vois pas si ça pourrait venir de la !!!!

J'ai un deuxième problème c'est pour affecter le résultat de ma requête à un DbGrid en dur sans forcément passer par un ControlData ou ControlADOC ! Car cette requête me permet d'afficher un listing des comptes utilisateurs ! J'ai tout de même essayé de passer par un ControlData mais ça ne fonctionne par dans l'affectation de mes données j'ai parfois l'erreur "L'objet ne gère pas l'automation ou l'action" ou  "Cette propriété n'accepte pas ce type d'affection" en gros !

Je sais pas si tu sais m'aider mais si oui c'est super génial ! Donc voici le code concernant cette partie....

Call PROCEDURE_OUVRIR_CONNEXION_MYSQL

str_requete_sql = "SELECT * FROM user"

objet_recordset.Open str_requete_sql, objet_de_connexion

'Vidage de l'objet connexion et recordset
Set objet_recordset = Nothing
Set objet_de_connexion = Nothing

'Remet la variable à vide
str_requete_sql = ""

Un grand merci Exploreur

Gilles
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
13 nov. 2007 à 10:53
Salut,

En ce qui concerne l'erreur, elle point sur quoi dans le code ?

Essaye ta requête comme cela :

str_requete_sql = "UPDATE user SET nom='" & str_nom_modifier_compte_utilisateur & "', prenom='" & str_prenom_modifier_compte_utilisateur & "', " & _
                  "login='" & str_login_modifier_compte_utilisateur & "', password='" & str_password_modifier_compte_utilisateur & "', " & _
                  "niveau_acces='" & str_niveau_acces_modifier_compte_utilisateur & "' WHERE nom='" & str_nom_modifier_compte_utilisateur & "' AND prenom='" & str_prenom_modifier_compte_utilisateur & "'"

Puis dans tes champs est-ce que tu peux avoir des apostrophes ?

Regarde une de mes sources : Base de données pour "débutant", je pense qu'elle pourrait t'aider.

En ce qui concerne le DbGrid, je n'utilise pas ce contrôle et préfère utiliser une ListView(voir ma source).


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
13 nov. 2007 à 11:14
Salut exploreur,

Non dans mes champs je fais des filtres pour éviter d'avoir des apostrophes !!!!

Je vais aller voir ta source on ne sait jamais !

Je te remercie de ton aide ! Heureusement que tu es la car il 'ny a pas bcp de gens qui ont voulu m'aider...

Bonne journée
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
13 nov. 2007 à 11:20
Voilà Exploreur j'ai toruvé la solution pour le DBGrid, on a signalé qu'il ne fonctionnait pas avec tout donc j'ai changé par un DataGrid et tout fonctionne j'arrive à balancer ma requête dedans !!! Donc pour ça c'est fait ! merci quand même
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
13 nov. 2007 à 13:00
Re,

Pour info si tu veux prendre en compte les apostrophes dans une requête, voici la syntaxe et éviter si cela est lourd à gérer les filtres :

"login='" & Replace(str_login_modifier_compte_utilisateur, "'", "''") & "' .........

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
13 nov. 2007 à 13:10
Merci je pense que ça pourrait être utile dans la suite de mon TFE car par la suite j'aurais des phrases à sauvegarder ton surement des apostrophes..

A+

Gilles

P.S : merci
0
Rejoignez-nous