tu n'as d'éditeur de requête. je n'ai jamais ouvert access. mais regarde tout de même ce que donne le console.writeline de ta requete. ca se trouve tu verras le problème tout de suite?
tu n'as d'éditeur de requête. je n'ai jamais ouvert access. mais regarde tout de même ce que donne le console.writeline de ta requete. ca se trouve tu verras le problème tout de suite?
a oui mais ça je l'ai fait et ça donne bien ce que je veux...
J'ai aussi essayé de recopier des code texto que j'ai trouvé sur le net mais ça marche pas donc je sais vraiment pas comment résoudre ec pb...
en gros quelle est la solution que tu as adopté. parce que là je commence à être un peu perdu. qu'est ce qui marche alors?
Rien ne marche! Tout compile mais à l'exécution ça plante toujours sur la requête. J'ai testé les valeurs de sorti de ma requête et ça à l'air correct.
Voilà mon code (enfin une demes versions parce que j'ai essayé tellement de chose!! ):
Et le truc c'est que si je met en commentaire toutes les lignes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29
30
31 DataSet ObjDataSet = new DataSet("person"); string strConnect = @"Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=D:\DB\droit.mdb"; OleDbConnection ObjConnect = new OleDbConnection(strConnect); ObjConnect.Open(); OleDbDataAdapter ObjDataAdapter = new OleDbDataAdapter("SELECT connecte, nom, prenom, login, password, groupe FROM person ORDER BY nom", ObjConnect); ObjDataAdapter.Fill(ObjDataSet,"person"); ObjDataAdapter.InsertCommand = new OleDbCommand("INSERT INTO person(connecte,nom, prenom, login, password,groupe) Values('@connecte', '@nom', '@prenom', '@login', '@password')", ObjConnect); ObjDataAdapter.InsertCommand.Parameters.Add("@connecte", OleDbType.Integer, 14, "connecte"); ObjDataAdapter.InsertCommand.Parameters.Add("@nom", OleDbType.Char, 15, "nom"); ObjDataAdapter.InsertCommand.Parameters.Add("@prenom", OleDbType.Char, 15, "prenom"); ObjDataAdapter.InsertCommand.Parameters.Add("@login", OleDbType.Char, 15, "login"); ObjDataAdapter.InsertCommand.Parameters.Add("@password", OleDbType.Char, 15, "password"); ObjDataAdapter.InsertCommand.Parameters.Add("@groupe", OleDbType.Char, 15, "groupe"); DataRow ObjDataRow; ObjDataRow = ObjDataSet.Tables["person"].NewRow(); ObjDataRow["connecte"] = "1"; ObjDataRow["nom"] = tb_nom.Text; ObjDataRow["prenom"] = tb_prenom.Text; ObjDataRow["login"] = tb_login.Text; ObjDataRow["password"] = tb_pass.Text; ObjDataRow["groupe"] = ddl_groupe.SelectedValue; ObjDataSet.Tables["person"].Rows.Add(ObjDataRow); ObjDataAdapter.Update(ObjDataSet,"person");
J'ai exactement la même erreur à l'exécution!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ObjDataAdapter.InsertCommand.Parameters.Add("@connecte", OleDbType.Integer, 14, "connecte"); ObjDataAdapter.InsertCommand.Parameters.Add("@nom", OleDbType.Char, 15, "nom"); ObjDataAdapter.InsertCommand.Parameters.Add("@prenom", OleDbType.Char, 15, "prenom"); ObjDataAdapter.InsertCommand.Parameters.Add("@login", OleDbType.Char, 15, "login"); ObjDataAdapter.InsertCommand.Parameters.Add("@password", OleDbType.Char, 15, "password"); ObjDataAdapter.InsertCommand.Parameters.Add("@groupe", OleDbType.Char, 15, "groupe");
Voilà ou j'en suis...
mais je t'avais dit que le truc que tu utilises n'est bon que pour les procédures stockées. il fallait utiliser ma solution et trouver l'erreur de parametrage. comme je te l'avais demandé pourquoi tu passes par un dataset pour faire ta modif j'ai un peu du mal à comprendre.
arf, je la refait. J'ai fait tellement de test que je sais plus trop ou j'en suis...
voilà, je refais passer mon code... dsl...
Et je garde toujours cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 string strCommand = "INSERT INTO person(connecte, nom, prenom, login, password) Values( ?, ?, ?, ?)"; OleDbCommand ObjCommand = new OleDbCommand (strCommand, ObjConnect); ObjCommand.CommandType = CommandType.Text; ObjCommand.Parameters.Add("@connecte", OleDbType.Integer, 1); ObjCommand.Parameters.Add("@nom", OleDbType.Char, 50, tb_nom.Text); ObjCommand.Parameters.Add("@prenom", OleDbType.Char, 50, tb_prenom.Text); ObjCommand.Parameters.Add("@login", OleDbType.Char, 50, tb_login.Text); ObjCommand.Parameters.Add("@password", OleDbType.Char, 50, tb_pass.Text); ObjCommand.Parameters.Add("@groupe", OleDbType.Char, 50, ddl_groupe.SelectedValue); ObjCommand.ExecuteNonQuery();
sur la ligne:System.Data.OleDb.OleDbException: Erreur de syntaxe dans l'instruction INSERT INTO.
voilà ce que je peux filer en plus si jamais ça peut aider... perso ça m'aide pas vraiment...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ObjCommand.ExecuteNonQuery();
merci[OleDbException (0x80040e14): Erreur de syntaxe dans l'instruction INSERT INTO.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
Connection.tri_admin.fct_valid(Object sender, EventArgs e) in C:\Inetpub\wwwroot\t_administration.aspx.cs:343
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1292
et ca donne quoi la requête quand tu la fais afficher?
euh mais c'est quoi @connecte. parce que tu n'as que 4 '?' au lieu de 5 '?' donc il y a un problème à ce niveau.
Oui pour le ? tu as raison il en manquait 1 mais bon, il n'a pas gueulé...
Sinon si je fait afficher ma requête je vois bien les champs rentré par l'utilisateur.
J'ai également bien vérifié que je faisait le même cast que les champs attendu par la table mais j'ai encore et toujours la même erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Response.Write("INSERT INTO person(nom, prenom) Values('"+tb_nom.Text+""+tb_prenom.Text+""+ddl_groupe.SelectedValue+"')");
c'est quoi le pb....
Déjà :
Et pas besoin d'ajouter ce paramètre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part string strCommand = "INSERT INTO person(connecte, nom, prenom, login, password) Values(@connecte,@nom,@prenom,@login,@password)";
Et fais ca avant d'ajouter tes parametres :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ObjCommand.Parameters.Add("@groupe", OleDbType.Char, 50, ddl_groupe.SelectedValue);
Code : Sélectionner tout - Visualiser dans une fenêtre à part ObjCommand.Parameters.Clear();
dans ta requete insert tu veux inserer 2 champs mais toi tu lui en fournis 3 donc ca ne peut pas marcher. et puis donne nous le bonne requête que tu mets dans ton code. là ca n'est pas la même que celle que tu as fourni dans les autres posts. et affiche le resultat du response.write et non le response.write ca nous aidera aussi.
jab a dit:
et ça ne marche pas non plus avec des @.Il me semble que la synaxe @xxx ne convient pas aux paramètres en OleDb. =Utilise des ? à la place.
La ligne :
ne change rien du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ObjCommand.Parameters.Clear();
Et pour le dernier paramètre j'étais en train de modifier ça quand j'ai posté le code.
Voilà mais ça marche toujours pas
dans ta requete insert tu veux inserer 2 champs mais toi tu lui en fournis 3 donc ca ne peut pas marcher. et puis donne nous le bonne requête que tu mets dans ton code. là ca n'est pas la même que celle que tu as fourni dans les autres posts. et affiche le resultat du response.write et non le response.write ca nous aidera aussi.
De plus, tu ne met pas de virgules entre tes valeurs de champs
Autre chose, n'oublie pas de doubler les ' quand tu en as dans les chaînes de caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TaChaine.Replace("'","''");
voilà la même requête:
et voilà ce qui saffiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Response.Write("INSERT INTO person(connecte, nom, prenom,login, password, groupe) Values('1','"+tb_nom.Text+"','"+tb_prenom.Text+"','"+tb_login.Text+"','"+tb_pass.Text+"','"+ddl_groupe.SelectedValue+"')");
Je retrouve donc bien mes variables.INSERT INTO person(connecte, nom, prenom,login, password, groupe) Values('1','TITI','TOTO','LOG','PASS','ACHAT')
Des points virgules entre les champs???De plus, tu ne met pas de virgules entre tes valeurs de champs
Non mais sur la requête de la page précédente, aucune virgule !! Ca m'a étonné.
connecte ne serait pas un entier par hasard ?
A oui ok pour les virgule oui je les avais oublié mais je dois avoué que ça fait tellement longtemps que je suis sur ce pb pb que je commence à avoir du mal là...
Et oui connecte est un entier pkoi??
D'ac je les ais enlevé mais ça ne marche toujours pas...
et ca ne viendrait pas du fait que tu as mis char(15)? pourquoi pas des varchar?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager