Erreur lors d'une procédure d'insertion

Résolu
kabrider Messages postés 4 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 31 janvier 2008 - 30 janv. 2008 à 09:59
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 31 janv. 2008 à 23:09
Bonjour,
Je debute en asp.net. Après une procédure d'Insert j'ai l'erreur suivante.

Voici mon code :


<hr />






Protected



Sub
Button1_Click(

ByVal
sender

As



Object
,

ByVal
e

As
System.EventArgs)


Dim
con

As
System.Data.OleDb.OleDbConnection


Dim
command

As
System.Data.OleDb.OleDbCommand


Dim
req

As



String






Dim
ligneconnection

As



String







con =




New
System.Data.OleDb.OleDbConnection()ligneconnection =


"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\DBase\liens.accdb;Persist Security Info=False;"

con.ConnectionString = ligneconnection





con.Open()





req =




"INSERT INTO Client(CodeClient, NomClient, Contrat, AccordTeleInterv, Ticket, Email)"

req &=




"VALUES ('"
& TextBox1.Text &

"','"
& TextBox2.Text &

"','"
& DropDownList1.SelectedItem.Value &

"','"
& CheckBox1.Checked &

"','"
& TextBox3.Text &

"','"
& TextBox4.Text &

"');"







command =




New
System.Data.OleDb.OleDbCommand(req,con)

command.ExecuteNonQuery()

Label1.Text =


"Le client "
& TextBox2.Text &

" a bien été ajouté"

Label1.Visible =




True







con.Close()










End



Sub
<hr />
Merci d'avance pour votre aide

11 réponses

zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 octobre 2008
31 janv. 2008 à 13:58
le problème vient que checkbox1.checked te ramène true au lieu de True pour la sgbd.
Une solution simple c'est de passer par une variable intermédiaire :

DimAccordTeleIntervAs
String=
"0"

If CheckBox1.Checked .Checked =
True
Then
     AccordTeleInterv =

"1'"
End
If

req &=
"VALUES ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & DropDownList1.SelectedItem.Value & "','" & AccordTeleInterv  & "','" & TextBox3.Text & "','" & TextBox4.Text & "');"
3
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
30 janv. 2008 à 17:07
Bonjour,
Souvent on fait pas gaffe dans les requête est PAF erreur !!

Moi j'affiche ou je met un point d'arret sur mes requête comme sa tu copie la requete est puis tu l'execute sur ton SGBDR qui te donne généralement la solution.

Sinon essai une requete toutes simple voir si c'est pas la connection.

Cordialement
0
kabrider Messages postés 4 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 31 janvier 2008
30 janv. 2008 à 17:47
La requete marche sur mon sgbr
0
zuff Messages postés 79 Date d'inscription lundi 28 octobre 2002 Statut Membre Dernière intervention 21 octobre 2008
31 janv. 2008 à 11:07
Fait un test en enlevant le CheckBox1.Checked (histoire true/1).

sinon n'oublie pas de protéger ton code contre les '.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_poulouf Messages postés 14 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 25 mars 2008
31 janv. 2008 à 11:38
type misatch... t as pas un probleme sur ton booleen?
genre il ferait pas la conversion implicite?
tu peux utiliser un adaptateur : OleDbDataAdapter
et setter tes param pour etre certain des types...
0
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
31 janv. 2008 à 12:08
J'ai trouver une solution bricolage:
Tu n'a pas accées a tes colonne mais tes lignes donc tu fait

TableCell
maCellule;





foreach
(

GridViewRow
maLigne

in
gridview.Rows)



{


maCellule = maLigne.Cells[1];


maLigne.Cells.Remove(maLigne);


}


 l'indice de ta cellule dependant de ou ta collone est placée bien sur

Cordialement
0
cs_suzukMan Messages postés 58 Date d'inscription mercredi 25 avril 2007 Statut Membre Dernière intervention 13 septembre 2012 1
31 janv. 2008 à 12:10
Désolé c'est
maLigne.Remove(maCellule); dans le foreach
0
kabrider Messages postés 4 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 31 janvier 2008
31 janv. 2008 à 12:39
En effet si a la place de checkbox1.checked, je met True ma requete passe sans aucun problème

comment puis je recupéré le résultat de ma check box ?
0
cs_poulouf Messages postés 14 Date d'inscription dimanche 10 septembre 2006 Statut Membre Dernière intervention 25 mars 2008
31 janv. 2008 à 13:50
c est quoi ta table? le type sgbd deAccordTeleInterv c est un bool? un string?
0
kabrider Messages postés 4 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 31 janvier 2008
31 janv. 2008 à 15:16
Merci Zuff ta solution marche nickel et à en plus l'avantage d'etre simple
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
31 janv. 2008 à 23:09
Bonsoir,

et pourquoi ne pas utilisé des requêtes paramètrés ? cela évite tout problème de sql injection et fait la conversion automatique.
IDBCommand command new OleDBCommand("Select pouet from toto where truc ?chose", conn);

OleDBParameter p = new OleDBParamter("?chose", type);
p.Value = true;
command.Parameters.Add(p);

je me souviens plus exactement de la syntaxe sous access mais ca doit ressembler à ca.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
0
Rejoignez-nous