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 24/07/2007, 12h42   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 9
Points : 2
Points : 2
Par défaut Comment inserer une date en ASP dans Access?

Bonjour, j'expose mon problème :
Je précise je suis débutant en Asp,

Sur une page HTML je demande a l'utilisateur de saisir des dates, pour être plus précis une date de départ et une date d'arrivée. Ces dernières sont saisies dans des champs textes, je récupère ces dernieres sur une seconde page et là se pose le problème, lorsque j'essaie de faire Insert Into, cela ne fonctionne pas:

Code asp :
1
2
3
<%
SQL = "INSERT INTO Date(IdIdentite,DateDepart,DateRetour) values ("&idrequerant&","&datedepart&","&dateretour&")"
%>

J'ai beau chercher un peu partout, je ne trouve pas de solutions.

Merci

[EDIT]
Utilise la balise code (#) la prochaine fois.
[/EDIT]
denis907 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 12h56   #2
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 364
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 364
Points : 1 551
Points : 1 551
Bonjour

La syntaxe en sql pour les dates est Attention au format : mois-jour-année, il peut être utile de prévoir une fonction de conversion
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 14h23   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 9
Points : 2
Points : 2
Par défaut je ne saisi pas

merci pour ta réponse, bien que je rajoute le #, ma valeur date ne s'inscrit toujours pas. Est ce que je dois transformer ma variable avant?
ou bien le Insert Into ne fonctionne pas pour les dates?

De plus dans le champs de saisie sur la page précedente je ne peux pas empecher l utilisateur de taper la date de la manière dont il veut, c'est à dire utiliser des / ou des - ou bien rien du tout. Je bien dans la mouise là.

je suis preneur d'idées et de solutions.

Merci par avance.
denis907 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 16h12   #4
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

pour insérer une date tu n'a pas besoin, ou alors c'est très rare puisse que je ne suis pas encore tombé sur ce cas peut-etre quand il s'agit d'inserer une date avec la variable date me souviens plus , de mettre les # dans l'insertion de la date.

J'utilise ceci qui fonctionne très bien :
Code asp :
1
2
3
4
5
 
<%
Sql= "Insert into AGENDA (DateAgenda, Evenement) Values ('"&request.form("date_a")&"','"&request.form("ev")&"')"
rs.open Sql, conn
%>


Citation:
De plus dans le champs de saisie sur la page précédente je ne peux pas empêcher l utilisateur de taper la date de la manière dont il veut, c'est à dire utiliser des / ou des - ou bien rien du tout. Je bien dans la mouise là.
Je comprends pas trop la, tu peux imposer à l'utilisateur, qui me semble plus approprié vue que tu définie le format de la date dans Access, de saisir une date au format jj/mm/aaaa ou jj-mm-aaaa il te suffit de faire un contrôle du champ ou en asp ou en javascript


++
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 17h21   #5
Membre à l'essai
 
Inscription : mai 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 41
Points : 24
Points : 24
Personnellement quand j'insere des dates dans Access je fais de cette maniere :

Code :
1
2
3
sql="INSERT INTO table (Champ_Date) VALUES ('" & CDate(VariableDate) & "')"
 
Conn.execute(sql)
Je n'ai jamais eu de problemes en utilisant cette syntaxe, mais il faut bien sur que les Type de tes champs Access soient Date/Time pour que ca fonctionne.


En ce qui concerne la saisie des dates par les utilisateurs, il te suffit de faire un petit controle sur la page qui recoit le formulaire afin de remplacer les "-" par des "/" , ou le contraire selon ce que tu veux. Sinon tu peux toujours faire ca :

Code :
1
2
3
4
5
6
7
<form action=page.asp>
<input type=text maxlength="2" size="2" name="Mois" value="mm">
&nbsp;/&nbsp;
<input type=text maxlength="2" size="2" name="Jour" value="jj">
&nbsp;/&nbsp;
<input type=text maxlength="4" size="4" name="Annee" value="aa">
</form>
Bien sur, il te faudra quand meme faire du traitement et une verification dans ta page qui recoit le formulaire afin d'etre sur que ce sont des nombres qui sont passés et qu'ils sont valides pour une date, mais au moins tu es certain que tu vas pouvoir rassembler ta date dans l'ordre voulu avec le separateur voulu.
gbouchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 19h10   #6
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Citation:
Envoyé par denis907
Code asp :
1
2
3
<%
SQL = "INSERT INTO Date(IdIdentite,DateDepart,DateRetour) values ("&idrequerant&","&datedepart&","&dateretour&")"
%>
En modifiant ton message j'ai vue que tu n'as pas utiliser les (') entre tes dates or si tu n'as pas converti les request, de base quelque soit les valeurs d'un request.form (ou .querystring) la valeur est de type texte de se fait ta syntaxe sera :

Code asp :
1
2
3
<%
SQL = "INSERT INTO Date(IdIdentite,DateDepart,DateRetour) values ("&idrequerant&",'"&datedepart&"','"&dateretour&"')"
%>

PS : Il me semble que même avec un Cdate cela reste avec des (') entre les valeurs. A vérifier
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 20h22   #7
Membre à l'essai
 
Inscription : mai 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 41
Points : 24
Points : 24
Je confirme, avec CDate il faut entourer les valeurs avec des (') . Ou en tout cas, moi j'en met et je n'ai pas de problemes.
gbouchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 21h25   #8
Invité de passage
 
Inscription : juillet 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 9
Points : 2
Points : 2
Par défaut je ne comprends pas


D'abord merci à tous de vos réponses,
Malgré cela je ne comprends pas pourquoi cela ne fonctionne pas


pourtant je fais lsimplement e test suivant en tapant une date correcte du type jj/mm/aaaa
que je récupere a l'aide d'un request.form(variabledate), ensuite je fais le '"&CDate(variabledate)&"', mais ça me plante une erreur.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<%
datedepart = request.form("datedepart")
dateretour = request.form("dateretour")
idrequerant = request.form("idrequerant")
 
'response.write(datedepart)
'response.write(dateretour)
'response.write(idrequerant)
 
'response.end
 
DSN_base="DRIVER={Microsoft Access Driver (*.mdb)};" &"DBQ=" & Server.MapPath("../..") &"/Database/base.mdb;"
Set Connexion = Server.CreateObject("ADODB.Connection")
Connexion.Open DSN_BASE
SQL = " INSERT INTO Date (IdIdentite,DateDepart,DateRetour) values ('"&idrequerant&"' , '"& CDate(datedepart) &"' , '"& CDate(dateretour) &"') "
set rs = connexion.execute(SQL)
connexion.close
set rs = nothing
set connexion = nothing
%>
Désolé de vous ennuyer je débute juste. merci encore
denis907 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 22h54   #9
Membre à l'essai
 
Inscription : mai 2007
Messages : 41
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 41
Points : 24
Points : 24
essais en tapant une date du type mm/jj/aaaa a la place d'une date au format jj/mm/aaaa.

Je viens de faire un petit test rapide et CDate ne reconnait pas les dates si le premier elements de la date est un jour (j'imagine que si tu lui met une date au format jj/mm/aaaa avec un jour plus petit que 12 ca devrait marcher aussi)

J'ai fait mon test avec la date : 31/05/2007 et ca n'a pas fonctionner, mais ensuite avec la date 02/05/2007 il n'y avait pas de probleme.

Verifie ca juste pour voir et dit ce que ca donne.

Si tu as d'autres probleme ou si ton probleme persiste tu peux aussi essayer de nous donner le message d'erreur exacte que ca te renvoit.

En tout cas, je vais revenir voir ca demain parce que la moi je quitte le bureau.
gbouchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 10h06   #10
Invité de passage
 
Inscription : juillet 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 9
Points : 2
Points : 2
Bonjour,

juste pour marquer le coup, c'est surper ce forum et d'avoir des gens réactifs.

Pour revenir à mon problème j'ai testé ce que me dit gbouchat, sans succes.

l'erreur :Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
/otv/pages/bis/ajoutdate.asp, line 18

Je dois avoir un problème dans ma table je suppose, table faite avec Access 2000, et la date configurée en : date/abregé et masque de saisie : 00/00/0000;0;_

Je vais continuer à tester. merci et à plus tard
denis907 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 11h26   #11
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Pourquoi mets-tu un masque de saisie ?
Personnellement je n'en mets pas et je n'ai pas de problème, j'ai juste le format Date/abrégé et c'est tout

Au fait, fait un response.write de ta requête sql et récupère la pour l'exécuter dans Access, la requête fonctionne-t-elle ??

De plus est-ce que ton champ "IdIdentite" est de type numerique ? Si c'est le cas enlève les ('), j'ai l'impression que IdIdentite et NuméroAuto si c'est le cas enlève le, inutile de le mettre

Par ailleurs, il me semble de mémoire, que faire CDate(variable) dans une requête induis en erreur je me trompe peut-être.

Essaye ceci :
Code asp :
1
2
3
4
5
6
7
8
9
10
<%
var1=CDate(Request.form("mavariable1")
var2=CDate(Request.form("mavariable2")
 
'Dans le cas où IdIdentite n''est pas un champ NuméroAuto
Sql="Insert into Date (IdIdentite, variable1, variable2) values ("& request.form("id") &",'"& var1 &"','"& var2 &"')"
 
'Cas où IdIdentite est de type NuméroAuto
Sql="Insert into Date (variable1, variable2) values ('"& var1 &"','"& var2 &"')"
%>
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 11h50   #12
Invité de passage
 
Inscription : juillet 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 9
Points : 2
Points : 2
Par défaut j'en perds mon latin

Heu, je tourne en rond,
je fais ce simple test, une table access avec une date abregé et sans masque de saisie
J'ai toujour mon plantage
là je ne peux pas faire plus simple pourtant.
J'utilise IE7, poserait il problème?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<%
 
datedepart = "02/02/2007"
 
'response.write(datedepart)
'response.end
 
DSN_base="DRIVER={Microsoft Access Driver (*.mdb)};" &"DBQ=" & Server.MapPath("../..") &"/base/date.mdb;"
Set Connexion = Server.CreateObject("ADODB.Connection")
Connexion.Open DSN_BASE
 
SQL = " insert into Table1(date) values ('"&Cdate(datedepart)&"') "
'response.write(sql)
'response.end
 
'set rs = connexion.execute(SQL)
connexion.execute(SQL)
connexion.close
set rs = nothing
set connexion = nothing
 
%>
Code :
1
2
3
4
5
6
7
8
9
 
 
<%
'par rapport à ci-dessus je dois supprimer le : '
SQL = " insert into Table1(date) values ("&Cdate(datedepart)&") "
 
'sinon j'obtiens une date du type : 'jj/mm/aaaa'
'au lieu de : jj/mm/aaaa
%>
P.S : j'ai testé ta methode également Kaiser59, mais rien y fait, j'ai toujours l'echec de l'execution de la requete.

Merci de votre patience, je pense passer à côté de quelquechose mais quoi?

@++
denis907 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 12h12   #13
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Citation:
Envoyé par denis907
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
<%
 
datedepart = "02/02/2007"
 
'response.write(datedepart)
'response.end
 
DSN_base="DRIVER={Microsoft Access Driver (*.mdb)};" &"DBQ=" & Server.MapPath("../..") &"/base/date.mdb;"
Set Connexion = Server.CreateObject("ADODB.Connection")
Connexion.Open DSN_BASE
 
SQL = " insert into Table1(date) values ('"&Cdate(datedepart)&"') "
'response.write(sql)
'response.end
 
'set rs = connexion.execute(SQL)
connexion.execute(SQL)
connexion.close
set rs = nothing
set connexion = nothing
 
%>
Il me semble que tu ne peux pas avoir CDate et les (') pas besoin de dire qu'il s'agit d'une date si c'est écrit au format date
Access comprendra très bien la valeur envoyer si elle est juste bien écrit c'est à dire jj/mm/aaaa du coup sa te donne :
Code :
1
2
3
<%
SQL = " insert into Table1(date) values ('"& datedepart &"') "
%>
Par ailleurs, date est une variable par défaut de asp. Je sais que mal écrit dans une requête cela peut faire planter. Je doute qu'écrit donc entre les (") cela ne fonctionne pas mais bon donne un nom différent au champ on sait jamais.
__________________
Ne dites pas Java pour dire Javascript ! Ces deux codes n'ont rien à voir ! // Essayez d'expliquer, de la façon la plus claire possible votre problème. // Parfois une image vaut mieux qu'un long discours

FAQ ASP
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2007, 13h38   #14
Invité de passage
 
Inscription : juillet 2007
Messages : 9
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 9
Points : 2
Points : 2
Par défaut ça y est, et merci à tous

Bien vu Kaiser 59,

effectivement le nom de mes champs faisiaient planter le tout, il devait interpreter le terme datedepart et pareil pour l'autre.

donc j'ai fait le test sur ma table d'essai, je vais l'essayer sur ma table de travail en renommant mes champs.

Merci encore de votre patience et certainement à bientôt.

P.S : Je confirme, j'ai renommé ma table et mes champs et plus de problèmes.
denis907 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 12h38.


 
 
 
 
Partenaires

Hébergement Web