[ASP] Problème de date dans requête SQL

Problème de date dans requête SQL [ASP] - ASP - Programmation

Marsh Posté le 15-03-2003 à 19:33:31    

Je suis en train de coder un partie pour voir les personnes qui ont relaodé une page dans les 2 dernières minutes, basé sur une table dans Access.
 
j'ai d'abord essayé la requête suivante, mais cela semblait fonctionner une fois sur 2 (mon brower ne me faisait pas d'erreur, mais celui d'un ordinateur juste à coté oui (les 2 fois internet explorer)).
 

Code :
  1. oConnection.Execute "DELETE * FROM t_adop_connectes WHERE connectes_date < #" & CDate(replace(DateAdd("n", -2, Now),".","/" )) & "#"


 
j'ai donc remplacé par le code-spagettis suivant:

Code :
  1. <!-- Procédure personnes connectées -->
  2. <% Set oRs = oConnection.Execute ("SELECT connectes_id,connectes_date FROM t_adop_connectes WHERE connectes_code = 1" )
  3.    IF NOT oRs.EOF THEN
  4.     oRs.MoveFirst
  5.     DO WHILE NOT oRs.EOF
  6.     IF oRs("connectes_date" ) < DateAdd("n", -2, Now) THEN
  7.      oConnection.Execute "DELETE * FROM t_adop_connectes WHERE connectes_id = " & oRs("connectes_id" )
  8.     END IF
  9.     oRs.MoveNext
  10.     LOOP
  11.    END IF
  12.    oRs.Close


le gros problème, c'est que à présent j'ai des problèmes de temps. ce bout de code est lui aussi accompagné de "veaux" qui font ensembles que ça en devient inacceptable au niveau du temps.
 
Alors si qqun a la moindre idée de comment arriver à qqch d'autre que l'équivalent d'un émulateur modem 33,1, ca me serait vraiment utile!
 
merci d'avance  :jap:


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 15-03-2003 à 19:33:31   

Reply

Marsh Posté le 15-03-2003 à 20:29:44    

salut,
 
c'est ADO que tu utilises pour accéder aux données?  Tu devrais alors avoir une expression date qui ressemble plutôt à ceci: '2003-03-15' (avec les quotes au lieu des #).


Message édité par drasche le 15-03-2003 à 20:30:06

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 15-03-2003 à 20:46:48    

avec les quotes il me fait une erreur (syntaxe error, ou je ne sais plus quoi). avec le dièse + les quote aussi. avec rien aussi... c'est désespérant
j'utilise une connexion ado (avec fichier dsn)


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 15-03-2003 à 21:08:11    

ça c'est bizarre, parce que je l'ai testé avant de poster.   Je suis certain que le format de date universel passe sur ADO quelque soit la config [:gratgrat]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 15-03-2003 à 21:40:38    

le problème vient peut-etre des minutes, car en utilisant seulement la date du jour je n'avais aucun problème. tout ces embetements surgissent en utilisant la date et l'heure dans un meme champ ('10.02.2003 12:23:21';)


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 15-03-2003 à 21:47:22    

t'as encore mis des points :D
 
essaie les tirets pour la date ;)


Message édité par drasche le 15-03-2003 à 21:47:43

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 15-03-2003 à 21:52:49    

déjà testé avec le replace (voir première requête tout en haut)


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 15-03-2003 à 21:55:35    

ben d'après ta requête en haut tu finis toujours par un CDate donc ton replace ne sert en fait à rien [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 15-03-2003 à 21:57:57    

oConnection.Execute "DELETE * FROM t_adop_connectes WHERE connectes_date < '" & Format(DateAdd("n", -2, Now), "yyyy-mm-dd hh:mm:ss" ) & "'"


 
à vue de nez c'est comme ça que j'écrirais ta première requête.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 15-03-2003 à 22:18:40    

je viens de regarder et tu as raison, en enlevant le CDate ca fonctionne. il me semblait pourtant avoir testé sans et que cela foirait, je l'avais ajouté par dépit sans penser qu'il reformattait (je croyais qu'il précisait juste le type de variable).
en tout cas ca a l'air de fonctionner cette fois, et le temps d'exécution s'en voit diminué ouf!
merci  :jap:


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 15-03-2003 à 22:18:40   

Reply

Marsh Posté le 15-03-2003 à 22:23:40    

oui, quand tu renvoies une variable de type date à une string (donc la requête ici), VB/ASP va traduire ça dans le format par défaut ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 03-04-2003 à 21:45:14    

mon script fonctionnait parfaitement jusqu'à avant-hier, mais depuis lundi matin ca ne fonctionne plus! Voici une liste de tout ce que j'ai essayé, avec les messages d'erreurs ou commentaires:
 

Code :
  1. "DELETE * FROM t_adop_connectes WHERE connectes_date < #" & replace(DateAdd("n", -2, Now),".","/" ) & "#"
  2. ne trouve aucun enregistrement
  3. "DELETE * FROM t_adop_connectes WHERE connectes_date < #" & DateAdd("n", -2, Now) & "#"
  4. erreur: Syntax error in date in query expression 'connectes_date < #03.04.2003 21:42:00#'.
  5. "DELETE * FROM t_adop_connectes WHERE connectes_date < '" & replace(DateAdd("n", -2, Now),".","/" ) & "'"
  6. erreur: Data type mismatch in criteria expression.
  7. "DELETE * FROM t_adop_connectes WHERE connectes_date < '" & DateAdd("n", -2, Now) & "'"
  8. erreur: Data type mismatch in criteria expression.
  9. "DELETE * FROM t_adop_connectes WHERE connectes_date < '" & Format(DateAdd("n", -2, Now), "yyyy-mm-dd hh:mm:ss" ) & "'"
  10. erreur: Type mismatch: 'Format'
  11. response.write now
  12. 03.04.2003 21:46:43
  13. un enregistrement dans la base (champ connectes_date)
  14. 03.04.2003 21:27:59


 
j'ai envoyé un email à mon hébergeur mais ils n'ont fait aucune modifs, j'ai également purgé ma table de connectes (j'ai pensé que le problème venait peut-etre du changement horaire?)
Bref, je ne sais plus quoi faire  [:jocenbsp]


Message édité par urd-sama le 03-04-2003 à 21:45:45

---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 03-04-2003 à 21:50:24    

Tu pas faire un truc propre genre :
 

DELETE t_adop_connectes WHERE connectes_date < Now()


 
:sarcastic:

Reply

Marsh Posté le 03-04-2003 à 21:51:03    

non, je dois supprimer les personnes qui ont reloadé la page il y a 2min et + (c'est pour un chat tout moisi)


Message édité par urd-sama le 03-04-2003 à 21:51:19

---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 03-04-2003 à 22:05:09    

Hé ben...
 

DELETE t_adop_connectes WHERE connectes_date < DateAdd("n", -2, Now())


 
Sans passer par la construction de la date depuis l'ASP...
 
Access utilise la syntaxe VBA (donc la même qu'ASP) pour toutes les fonctions de date et de chaînes...

Reply

Marsh Posté le 03-04-2003 à 22:12:18    

réponse à ta requête:
 

Code :
  1. "DELETE t_adop_connectes WHERE connectes_date < DateAdd(""n"", -2, Now())"
  2. Syntax error (missing operator) in query expression 't_adop_connectes WHERE connectes_date < DateAdd([n], -2, Now())'.


 [:spamafote]


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 03-04-2003 à 22:25:24    

DELETE * FROM t_adop_connectes WHERE connectes_date < DateAdd("n", -2, Now())


 
En fait, il lui faut une liste de champs et FROM (c débile mais bon)

Reply

Marsh Posté le 03-04-2003 à 22:28:22    

en effet c'est mieux.
 
"DELETE * FROM t_adop_connectes WHERE connectes_date < DateAdd(""n"", -2, Now())"
 
erreur: Too few parameters. Expected 1.


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 03-04-2003 à 22:29:53    

c quelle version d'access qu'il utilise ton hébergeur :??:
 
access 2.0 ?

Reply

Marsh Posté le 03-04-2003 à 22:30:15    

essaie de virer les () à Now()

Reply

Marsh Posté le 03-04-2003 à 22:31:55    

j'ai enlevé et j'ai la meme erreur
je ne sais pas la version, je peux le savoir comment?
 
edit: je vais au dodo si jamais, je continuerai demain  [:jocenbsp]


Message édité par urd-sama le 03-04-2003 à 22:33:07

---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 03-04-2003 à 22:33:25    

je sais pas.
 
en tout cas, ça marche sous access xp, et sous access 2k (testé)
 
sous 97 je pense que ça marche aussi. mais au-delà...

Reply

Marsh Posté le 03-04-2003 à 22:58:41    

TOTOZ


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 06-04-2003 à 13:37:04    

Après quelques jours du bug, je suis encore + perplexe.
Résumons, j'ai une requête de cette syntaxe:
 
"DELETE * FROM t_adop_connectes WHERE connectes_date < #" & replace(DateAdd("n", -2, Now),".","/" ) & "#"
 
J'en ai une autre sur le meme principe, pour deleter toutes les 24 heures.
 
Jour 1: les 2 fonctionnent
Jour 2: le premier ne delete rien, le 2e fonctionne
Jour 3: le premier refonctionne, le 2e ne delete rien
Jour 4: le premier fonctionne, le 2e delete TOUT
 
je n'y comprend plus rien, d'ou peut venir un tel problème? pourquoi est-ce que mon script n'est-il pas stable??


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le 06-04-2003 à 16:47:59    

Déjà, essaie vraiment de trouver comment traîter les dates dans ACCESS.
 
En effet, à priori, ça ne doit pas arriver, mais si jamais le format de date dans Access est différent de celui du serveur, ça va chier.
 
Sinon, essaie vraiment d'utiliser un autre SGBD qu'Access. En effet, access c'est très bien pour générer quelques infos genre des menus personnalisés ou des CSS personnalisées (sur le site de M$ d'ailleurs, avant de passer au XML, ils bossaient avec une petite base en Access 2 pour gérer tout ce qui est menus, et cnie. J'en suis sûr, au taf on leur avait fait quelques pages :))
 
Mais access n'est pas performant du tout pour ce qui est des accès concurrents (donc il ne faut jamais avoir à écrire dedans lorque tu bosses en environnement partagé) et encore moins pour les gros volumes (chaque requête dans Access nécessite un chargement complet de toute la base !)


Message édité par MagicBuzz le 06-04-2003 à 16:49:12
Reply

Marsh Posté le 06-04-2003 à 18:04:33    

Personellement ayant été confronté au problème de settings régionaux du serveur, d'access , ... je prépare mes dates au format amerloc' (MM/DD/YYYY) avant de les ajouter à ma chaine et ca fonctionne sans problèmes. En réalité j'utilise deux fonctions qui sont indépendantes des settings régionaux, les voici :
 

Code :
  1. '
  2.    ' Format a vbDate type to it's SQL counterpart
  3.    ' pass : a valid vbDate
  4.    ' return success : date formated #mm/dd/yyyy#
  5.    ' return failure : boolean False
  6.    Function DBDate(l_dateToFormat)
  7.       ' declare vars
  8.       Dim l_strDate
  9.       Dim l_boolError
  10.      
  11.       ' init vars
  12.       l_strdate = ""
  13.       l_boolError = False
  14.      
  15.       ' check date validity
  16.       If IsDate(l_dateToFormat) Then
  17.          ' format la date au format SQL
  18.          l_strDate = "#"                   &_
  19.                      Month(l_dateToFormat) &_
  20.                      "/"                   &_
  21.                      Day(l_dateToFormat)   &_
  22.                      "/"                   &_
  23.                      Year(l_dateToFormat)  &_
  24.                      "#"
  25.       Else
  26.          l_boolError = True
  27.       End If
  28.      
  29.       ' return formated date
  30.       If l_boolError Then
  31.          DBDate = False
  32.       Else
  33.          DBDate = l_strDate
  34.       End If
  35.    End Function
  36.    '
  37.    ' Format a vbDate type to it's SQL counterpart
  38.    ' pass : a valid vbDate
  39.    ' return success : date formated #mm/dd/yyyy hh:mm:ss#
  40.    ' return failure : boolean False
  41.    Function DBDateTime(l_vbDateTime)
  42.       strResult = DBDate(l_vbDateTime)
  43.       If strResult <> False Then
  44.          strResult = Left(strResult, Len(strResult) - 1)
  45.          strResult = strResult & " " & Hour(l_vbDateTime)
  46.          strResult = strResult & ":" & Minute(l_vbDateTime)
  47.          strResult = strResult & ":" & Second(l_vbDateTime) & "#"
  48.          DBDateTime = strResult
  49.       Else
  50.          DBDateTime = False
  51.       End If
  52.    End Function


Message édité par Requin le 06-04-2003 à 18:10:12
Reply

Marsh Posté le 07-04-2003 à 07:16:07    

merci pour vos infos.
je vais coder d'une autre facon mon truc, je ferai une purge "manuelle" avec le script de départ (celui qui compare la date dans un script asp, il est beaucoup plus lourd). Pour l'affichage je comparerai la date dans un condition asp pour l'afficher ou non.
changer de base de données ne doit pas être possible, mon hébergeur n'accepte apparemment que l'access.
bah, je trouverai bien une solution  [:spamafote]


---------------
.: Clône de Drasche .:. Ebichuleys .:. Avec l'Aloe Vera je fais de beaux cacas [:dawa] .: www.oserselancer.com :.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed