Help problème avec sql et vbscript [Résolu]

Messages postés
27
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
28 mars 2006
- - Dernière réponse : cs_remy34
Messages postés
27
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
28 mars 2006
- 27 mars 2006 à 08:31
Bonjour je voudrais en fait rajouter les champs d'un formulaire lors de la validation de celui ci mais je n'y arrive pas voici mon code:
Sub Envoyer( )

' Déclaration de mes variables
Dim LE_DSN
Dim MaConnexion
Dim ServerAddress
Dim DBName
Dim UID
Dim Password

' IP ou Nom du serveur mySQL
ServerAddress = "172.27.16.90"
' Nom de la base de données
DBName = "Prog_Effectif"
' Login pour la base
UID = "root"
' Mot de passe pour la base
Password = "root"

' Ici on construit la chaine de connexion ODBC
LE_DSN = "driver=MySQL ODBC 3.51 Driver;server=" & ServerAddress & ";db=" & DBName & ";user id=" & UID & ";pwd=" & Password & ";option=16386"

' Paramètre de connexion + connexion
Set MaConnexion = Server.CreateObject("ADODB.Connection")
MaConnexion.ConnectionTimeout = 30
MaConnexion.CommandTimeout = 30

MaConnexion.Open LE_DSN


VDate = "2010-04-03 "
VSemaine =45
VSpecialite = "MEC"
VQtyM = Request.Form("MECLM")
VQtyAP = Request.Form("MECLAP")
reqsql = "INSERT INTO effectif(Date1, Semaine, Specialite, QTYM, QTYAP) VALUES ('" & VDate & "','" & VSemaine & "', '" & VSpecialite & "', '" & VQtyM & "', '" & VQtyAP & "')"
MaConnexion.Execute(reqsql)
MaConnexion.Close
set MaConnexion = nothing

end Sub

la date je l'écrit comme cela car je ne sais pas nonplus récupérer la date

Le problème c'est que quand je vérifie ma page le navigateur me met cet erreur:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E31)
[MySQL][ODBC 3.51 Driver][mysqld-5.0.19-nt]Out of range value adjusted for column 'QTYM' at row 1
/projet/FormulaireMEC.asp, line 93

Merci par avance de m'éclairer
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
794
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
3
Merci
Salut Remy,

d'abord, parce que je t'aimes bien, je te le dis :
j'espère que ce n'est pas une vraie IP, et un vrai login, sinon, tu vas apprendres à tes dépends à restaurer une base de données qu'un inconnnu a foutu en l'air (je ne connais que des gentils ici, mais c'est quand même internet!)

pour la date,si tu veux la date du jour de l'insert tu écris :
VDate = Date()
Sinon, tu peux aussi l'avoir dans le form, et la traiter comme le reste (request.form).

Je ne t'apprend rien si je te dis que, vraissemblablement, la valeur qui est insérée dans la colonne QTYM est en dehors de la plage permise. Suivant le provider, il peut y avoir diverses raisons (je n'ai jamais essayé OLE DB sur MySQL), mais ça peut être simplement la taille de la chaine (si c'est une chaine), la taillle de la valeur par rapport au type attendu (si c'est un numérique), ...Il te faut le schéma de cette table (types et tailles des champs) pour évaluer ce que tu peux y rentrer, et éventuellement mettre en place des traitements de validité des données (genre, si la chaine fais len=25, je la tronque à 15, ou si le nombre de machins est plus grand que 47, on insère pas...)

Ce que tu peux faire, c'est temporairement désactiver l'exécution de la requete, et l'afficher pour te faire une idée de ce que tu envoies, des fois, c'est en voyant qu'on comprend. Ca donnerait (en rouge ce que je touches) :

' Ici on construit la chaine de connexion ODBC
LE_DSN = "driver=MySQL ODBC 3.51 Driver;server=" & ServerAddress & ";db=" & DBName & ";user id=" & UID & ";pwd=" & Password & ";option=16386"

response.Write LE_DSN

If False then
' Paramètre de connexion + connexion
Set MaConnexion = Server.CreateObject("ADODB.Connection")
MaConnexion.ConnectionTimeout = 30
MaConnexion.CommandTimeout = 30

MaConnexion.Open LE_DSN


VDate = "2010-04-03 "
VSemaine =45
VSpecialite = "MEC"
VQtyM = Request.Form("MECLM")
VQtyAP = Request.Form("MECLAP")
reqsql = "INSERT INTO effectif(Date1, Semaine, Specialite, QTYM, QTYAP) VALUES ('" & VDate & "','" & VSemaine & "', '" & VSpecialite & "', '" & VQtyM & "', '" & VQtyAP & "')"
MaConnexion.Execute(reqsql)
MaConnexion.Close
set MaConnexion = nothing

end if

il se peut que rien ne s'affiche, car je vois pas tout ton code, et il y a peut-être une instruction qui arrive après ce code, et qui response.redirect(blabla), qu'il faudrait aussi désactiver (temporairement)

à+

rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 186 internautes nous ont dit merci ce mois-ci

Messages postés
27
Date d'inscription
lundi 3 octobre 2005
Statut
Membre
Dernière intervention
28 mars 2006
0
Merci
merci beaucoup