Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
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 04/08/2006, 15h30   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Par défaut Problème Date access/asp

Bonjour à tous,

Je vous présente mon problème qui est vraiment chiant et qui est relaté sur internet mais je n'ai pas trouvé mon bonheur.

Je sauvegarde ma date dans ma table au format JJ/MM/AAAA.
Je fais ensuite une requête pour afficher mes différentes dates et là, si le JJ <13 alors il me met les dates au format MM/JJ/AAAA. Problème vraiment chiant.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%
'requête pour la création dans la base de données
SQL="SELECT * FROM memo"
Set RS = server.createobject("ADODB.Recordset")
RS.Open SQL,Conn , 3, 3
 
If Not Rs.EOF Then
while not RS.eof
   ' affiche le champ
		Response.Write("<ul>")
		Response.Write(RS("date_butoire"))
		Response.Write("<li>")
		Response.Write(RS("auteur"))
		Response.Write("</li>")
		Response.Write("<li>")
		Response.Write(RS("titre"))
		Response.Write("</li>")
		Response.Write("<li>")
		Response.Write(RS("texte"))
		Response.Write("</li>")
		Response.Write("</ul>")
   ' fiche suivante
   RS.MOVENEXT
wend
end if
 
conn.close : Set conn=nothing
%>
Comment je peux contourner se problème ?

Merci pour votre aide précieuse
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 17h00   #2
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Les dates passent au format US dans les requêtes SQL.
Il faut utiliser le LCID

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 17h32   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Citation:
Envoyé par Immobilis
Les dates passent au format US dans les requêtes SQL.
Il faut utiliser le LCID

A+
Merci de m'avoir accordé de ton temps.

J'ai essayé cette méthode et rien y fait. Je vais montrer des morceau de mon code afin de mieux vous mettre dedans.

Formulaire :
Code :
1
2
3
4
5
6
7
<form name=myform method="post" onSubmit="return confirm('Confirmation de la création de la fiche mémo ?');" action="creer_memo.asp">
	<p><label>Auteur (Nom/Prénom) : <input type="text" name="auteur" size=20 /></label></p>
	<p><label>Titre : <input type="text" name="titre" size=20 /></label></p>
  <p><label>Date butoire : <input readonly type="text" name="date1" size="10"><a HREF="javascript:Calendrier(document.myform.img1,document.myform.date1)"><img src=calendrier.gif width=34 height=21 align=top ID=img1 border=0 style=position:relative></a></label></p>
  <p><label>Description :<br /><textarea name="description" cols="40" rows="7" tabindex="80" onKeyDown='limiteur_creer();' onKeyUp='limiteur_creer();'></textarea></br>Il vous reste <input readonly type=text name='indicateur' size='1' maxlength=3 value='255'> caractères.</label></p>
  <p><input type="submit" value="Enregistrer ma fiche mémo" /></p>
</form>
Page de traitement du formulaire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- #include file="_connexion.asp"-->
<%
'requête pour la création dans la base de données 
SQL="SELECT * FROM memo"
Set RS = server.createobject("ADODB.Recordset")
RS.Open SQL,Conn , 3, 3
 
RS.addnew
RS("auteur")=Request.form("auteur")
RS("titre")=Request.form("titre")
RS("date_butoire")= Request.form("date1")
RS("texte")=Request.form("description")
RS.update
 
%>
Page qui mes enregistrements :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%
'requête pour la création dans la base de données
SQL="SELECT * FROM memo"
Set RS = server.createobject("ADODB.Recordset")
RS.Open SQL,Conn , 3, 3
 
If Not Rs.EOF Then
while not RS.eof
   ' affiche le champ
		Response.Write("<ul>")
		Response.Write(RS("date_butoire"))
		Response.Write("<li>")
		Response.Write(RS("auteur"))
		Response.Write("</li>")
		Response.Write("<li>")
		Response.Write(RS("titre"))
		Response.Write("</li>")
		Response.Write("<li>")
		Response.Write(RS("texte"))
		Response.Write("</li>")
		Response.Write("</ul>")
   ' fiche suivante
   RS.MOVENEXT
wend
end if
 
conn.close : Set conn=nothing
%>
Comment je pourrais procéder simplement pour me retrouver avec la date : JJ/MM/AAAA.

Merci pour vos réponses
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 09h17   #4
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Citation:
Envoyé par buzz!
J'ai essayé cette méthode et rien y fait.
Peux-tu me montrer comment tu as fait?
A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 10h34   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Citation:
Envoyé par Immobilis
Peux-tu me montrer comment tu as fait?
A+
Alors j'ai mis dans tous mes pages ce code, tout en haut avant la balise <html>
Code :
<% Session.LCID = 1036%>
Merci de m'avoir répondu
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 11h36   #6
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Effectivement... Rien ne semble anormal.
Je n'ai pas de réponse empirique sur ce point. Pour ma part, j'ai transformé toutes mes dates au format numérique double. Entre SQL qui passe les dates au format US dans les requêtes, les utilisateurs qui tapent n'importe quoi et les navigateurs pas toujours français, les options régionales du serveur c'est la solution la plus souple.

Es-ce que toutes les dates dans ta base sont bonnes? Si tu met dans ton form 01/02/2006 c'est bien le premier février que est enregistré?

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 11h42   #7
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Citation:
Envoyé par Immobilis
Es-ce que toutes les dates dans ta base sont bonnes? Si tu met dans ton form 01/02/2006 c'est bien le premier février que est enregistré?
Justement, en revenant ce matin tous frais, j'ai vu qu'en faite c'est access qui fout le bordel. Il enregistre bien par exemple 23/03/2006 mais pour 11/02/2006 => il me l'enregistre 02/11/2006. A mon avis, je devrais plus me concentrer sur access pour mon problème, il doit y avoir un moyen de forcer access à enregistrer en français.

Ta solution est t'elle pratique pour faire du tri ?
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 13h54   #8
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Citation:
Envoyé par buzz!
Justement, en revenant ce matin tous frais, j'ai vu qu'en faite c'est access qui fout le bordel.
Pas tout à fait, comme je te l'ai dit la date passe au format US dans les requetes SQL. Tu peux forcer l'insertion au format FR en morcelant ta date.
Code :
1
2
 
RS("date_butoire")= day(Request.form("date1")) & "/" & month(Request.form("date1")) & "/" & year(Request.form("date1"))
Mais il faut être certain que Request.form("date1") est bien une date au format FR.
Citation:
Envoyé par buzz!
Ta solution est t'elle pratique pour faire du tri ?
Ben oui, puisque ce ne sont que des nombres. Aujourd'hui, selon le standard Microsoft, nous sommes le 38936 jour depuis le 31 décembre 1899.
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 14h24   #9
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Citation:
Envoyé par Immobilis
Code :
1
2
 
RS("date_butoire")= day(Request.form("date1")) & "/" & month(Request.form("date1")) & "/" & year(Request.form("date1"))
Mais il faut être certain que Request.form("date1") est bien une date au format FR.
J'ai essayé mais celà ne marche pas, je me retrouve toujours avec ma date au format anglais. Et je suis sur que le formatde mon form est en fr car l'utilisateur choisit la date sur un calendrier.
Mon code de la page de traitement :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- #include file="_connexion.asp"-->
<%
'requête pour la création dans la base de données 
SQL="SELECT * FROM memo"
Set RS = server.createobject("ADODB.Recordset")
RS.Open SQL,Conn , 3, 3
 
RS.addnew
RS("auteur")=Request.form("auteur")
RS("titre")=Request.form("titre")
'RS("date_butoire")= Request.form("date1")
RS("date_butoire")= day(Request.form("date1")) & "/" & month(Request.form("date1")) & "/" & year(Request.form("date1"))
RS("texte")=Request.form("description")
RS.update
 
conn.close : Set conn=nothing
'redirection
Response.Redirect("http://gtprfsn2:2006/memo.asp")
%>
Citation:
Envoyé par Immobilis
Ben oui, puisque ce ne sont que des nombres. Aujourd'hui, selon le standard Microsoft, nous sommes le 38936 jour depuis le 31 décembre 1899.
C'est marrant l'histoire du 38936 jour mais pas con.
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 14h43   #10
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Que disent les options régionales de ta machine?
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2006, 14h55   #11
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Citation:
Envoyé par Immobilis
Que disent les options régionales de ta machine?
C'est réglé sur france, j'ai même rajouter la ligne sur toute mes pages
Code :
<% Session.LCID = 1036%>
mais ça change rien.
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 10h34   #12
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Citation:
Envoyé par Immobilis
Je n'ai pas de réponse empirique sur ce point. Pour ma part, j'ai transformé toutes mes dates au format numérique double. Entre SQL qui passe les dates au format US dans les requêtes, les utilisateurs qui tapent n'importe quoi et les navigateurs pas toujours français, les options régionales du serveur c'est la solution la plus souple.
Pourrait tu m'expliquer brièvement comment tu procède pour un tri décroissant par exemple sur la date mais avec ta méthode (format numérique double) et après promis je te laisse tranquille.

Merci mille fois de m'avoir répondu
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 11h57   #13
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
C'est simple
Hier MADATE = 38936
Aujourd'hui MADATE = 38937
Demain MADATE = 38938
Code :
SELECT * FROM MATABLE ORDER BY MADATE ASC;
A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 13h27   #14
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Citation:
Envoyé par Immobilis
C'est simple
Hier MADATE = 38936
Aujourd'hui MADATE = 38937
Demain MADATE = 38938
Code :
SELECT * FROM MATABLE ORDER BY MADATE ASC;
A+
Pour convertir ma date de mon form en réel double, j'ai utilisé ta fonction que tu avais donné "cdbl(madate)" mais ça ne me convertit pas du tout. Je l'ai mis au niveau de ma page de traitement du formulaire. vraiment désolé de t'embêter encore mais ça me tarde d'appuyer sur la balise résolu.
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 13h42   #15
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Ah, ma faute, je crois qu'on s'est mal compris.

Je pensais que tu voulais savoir comment faire qd la date est au format double dans la base.

J'essaye de voir ça ce soir.

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 13h55   #16
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
Faute partagé, moi aussi en me relisant je me suis aperçu que j'avais mal formulé ma question

Merci
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 14h53   #17
Candidat au titre de Membre du Club
 
Inscription : juin 2004
Messages : 34
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 34
Points : 10
Points : 10
J'ai finalement trouvé une solution, que tu m'avais donné Immobilis mais que j'avais du mal utilisé

Je mets le code de la page de traitement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!-- #include file="_connexion.asp"-->
 
<%
new_date=month(Request.form("date1"))&"/"&day(Request.form("date1"))&"/"&year(Request.form("date1"))
'requête pour la création dans la base de données 
SQL="SELECT * FROM memo"
Set RS = server.createobject("ADODB.Recordset")
RS.Open SQL,Conn , 3, 3
 
RS.addnew
RS("auteur")=Request.form("auteur")
RS("titre")=Request.form("titre")
RS("date_butoire")= new_date
RS("texte")=Request.form("description")
RS.update
 
conn.close : Set conn=nothing
'redirection
Response.Redirect("http://gtprfsn2:2006/memo.asp")
%>
Merci Immobilis pour ton aide précieuse
buzz! est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h03.


 
 
 
 
Partenaires

Hébergement Web