Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2011, 11h35   #1
Invité de passage
 
Homme
Développeur Web
Inscription : juin 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 2
Points : 0
Points : 0
Par défaut Requête sur dates ASP-ACCESS

Bonjour,

J'ai cherché, sans succès, une solution à mon problème :

Je développe en ASP/IIS

J'ai une base Access contenant des évènements de toutes sortes. chaque évènement a une date de début et une date de fin.

Je dois afficher la liste des évènement qui ont lieu aujourd'hui ou/et demain.

Les champs dte (date de début) et dte_fin sont au format date jj/mm/aaaa

Voici ma requête telle qu'elle s'affiche avec un response.write :
Code SQL :
1
2
3
4
5
6
SELECT *
  FROM ARTICLES
 WHERE (  (ARTICLES.dte>=#09/06/2011# or (ARTICLES.dte<=#09/06/2011# and ARTICLES.dte_fin>=#09/06/2011#))
       OR (ARTICLES.dte =#10/06/2011# or (ARTICLES.dte<=#10/06/2011# and ARTICLES.dte_fin>=#10/06/2011#)))
   AND ARTICLES.categorie=1
 ORDER BY ordre;

et voici ma requête codée :
Code ASP :
req="SELECT * from ARTICLES where ((ARTICLES.dte>=#"&date&"# or (ARTICLES.dte<=#"&date&"# and ARTICLES.dte_fin>=#"&date&"#)) or (ARTICLES.dte=#"&dateAdd("d",date,1)&"# or (ARTICLES.dte<=#"&dateAdd("d",date,1)&"# and ARTICLES.dte_fin>=#"&dateAdd("d",date,1)&"#))) and ARTICLES.categorie="&cat&" order by ordre;"

Je n'ai pas d'erreur, le code ne plante pas, mais le filtre par date ne fonctionne pas, tous les évènements s'affichent.
Après avoir retourné ça dans tous les sens, je fais appel à vos éclairages.

Merci d'avance.
fatbulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 13h49   #2
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Salut

essaye comme ça :

Code SQL :
1
2
3
4
5
WHERE (  
    (ARTICLES.dte<='09/06/2011' AND ARTICLES.dte_fin>='10/06/2011') 
OR(ARTICLES.dte<='09/06/2011' AND ARTICLES.dte_fin='09/06/2011')
OR(ARTICLES.dte='10/06/2011' AND ARTICLES.dte_fin>='10/06/2011')
)

là j'ai bien les événements qui commencent avant aujourd'hui et se terminent après demain,
les événements qui commencent avant aujourd'hui et se terminent aujourd’hui et
événements qui commencent demain et se terminent après demain

je pense que tous les cas sont couverts
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 15h29   #3
Invité de passage
 
Homme
Développeur Web
Inscription : juin 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 2
Points : 0
Points : 0
Merci pour la réponse rapide.

...mais ton code ne fonctionne pas.
1- les dates doivent être encadrées de # sinon erreur de type
2- le code corrigé ne retourne rien
3- pire, en simplifiant au maximum, la requête
Code :
SELECT * FROM ARTICLES WHERE ( ARTICLES.dte>=#09/06/2011#)
me retourne :

Due partite( du 05/11/2011 au 30/06/2011 )
Résidence de la compagnie Arnica( du 05/11/2011 au 30/06/2011 )
alors qu'il y a un tas d'autres évènements entre le 9/06 et le 5/11.

J'AI REMARQUE que seuls les évènements dont le mois est supérieur à 9 sont retournés par la requête !!!

La, je ne saisis pas tout...
fatbulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 15h37   #4
Membre expérimenté
 
Avatar de tumoo
 
Homme
Développeur informatique
Inscription : janvier 2011
Messages : 309
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 22
Localisation : France, Charente Maritime (Poitou Charente)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2011
Messages : 309
Points : 550
Points : 550
Citation:
Envoyé par fatbulle Voir le message
1- les dates doivent être encadrées de # sinon erreur de type
2- le code corrigé ne retourne rien
3- pire, en simplifiant au maximum, la requete

SELECT * from ARTICLES WHERE ( ARTICLES.dte>=#09/06/2011#)

me retourne :

Due partite( du 05/11/2011 au 30/06/2011 )
Résidence de la compagnie Arnica( du 05/11/2011 au 30/06/2011 )


alors qu'il y a un tas d'autres évènements entre le 9/06 et le 5/11.

J'AI REMARQUE que seuls les évènements dont le mois est supérieur à 9 sont retournés par la requête !!!

La, je ne saisi pas tout...
ah. bah ça doit être un problème de format de date alors car Access a l'air d’interpréter ta date comme étant au mois de septembre (09/06/2011)
Essaye de voir les formats de date de Access, ça corrigera beaucoup de problèmes je pense
tumoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 14h34   #5
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 552
Points : 552
Bonjour,
ma proposition Tu te crée une fois pour toute un fonction de conversion de date en SQL comme celle ci que j'ai écrite il y a des années. pour envoyer la date au bon format au SGBD.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'*****************************************************
' But:  Formate un variant contenant une Date dans le format de date du SGBD 
'           yyyy-mm-dd
' Parametres: vTheDate variant représentant une date ou NULL
'Modifier cette fonction lors d'un changement de SGBD 
'*****************************************************
Public Function f_Datev2SGBD_S(ByVal vTheDate As Variant)
Dim sRetour As String
If IsNull(vTheDate) Then
    sRetour = " NULL "
Else
    sRetour = Format$(vTheDate , "yyyy-mm-dd")
End If
f_Datev2SGBD_S = sRetour
End Function
Tu peux aller sur ce post pour plus de détail
http://www.developpez.net/forums/d78...iversel-dates/
Edit: J'espère que tes dates sont bien stocké dans ta base de données comme étant des dates? et pas du texte:
Citation:
champs dte (date de début) et dte_fin sont au format date jj/mm/aaaa
Si la colonne dte est bien de type date, alors dans ACCESS uniquement son format indique comment elle est affichée, mais hors d'access cela n'a pas de sens!
A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h50.


 
 
 
 
Partenaires

Hébergement Web