Modification d'un enregistrement dans une bd

Signaler
Messages postés
21
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
25 octobre 2004
-
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007
-
Bonjour à tous

Après la suppression d'un enregistrement dans une bd pas plus tard qu'hier (merci à Fabrice pour son aide ), la suite logique est de faire la modification dans la base.

J'ai réalisé un listing de mes enregistrements, quand je clique sur un enregistrement celui-ci va sur une page ASP où des champs de textes accueillent les informations détenues dans la base.

Je coince à partir du moment où je dois envoyer les modifications dans la base.

Pour info car je ne sais pas si c'est important, mais id est un nombre.

Voici mon code (partiel) pour cette page:

<%var_id = Request.Querystring("reference")%>

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set Rs = Server.CreateObject("ADODB.Recordset")


id_bis= Request.Form("id")
  nom_bis= Request.Form("nom")
  prenom_bis= Request.Form("prenom")
  mail_bis= Request.Form("mail")


RequeteSQL = "Update annmoto Set nom='"&nom_bis&"',prenom='"&prenom_bis&"',mail='"&mail_bis&"' WHERE id='"&id_bis&"';"
Rs.Open RequeteSQL , Con%>


<%
Rs.Close
set Rs = Nothing

con.Close
set con = Nothing
%>


L'erreur provoquée est celle-ci :

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][Pilote ODBC Microsoft Access] Type de données incompatible dans l'expression du critère.

/modif_exe_ann_moto_wm.asp, line 40

et voici la ligne d'erreur (ligne 40):

Rs.Open RequeteSQL , Con
mais je pense plutôt que le problème se trouve une ligne plus haut

Merci à tous ceux qui essayeront de faire tourner ce code chatouilleur.

Greg

6 réponses

Messages postés
224
Date d'inscription
vendredi 14 septembre 2001
Statut
Membre
Dernière intervention
14 juillet 2006

Hello

2 lignes à changer...

id_bis= cLng(Request.Form("id"))

et

RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom='" & prenom_bis & "',mail='" & mail_bis & "' WHERE id=" & id_bis & ";"
Messages postés
21
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Merci Bud,

mais ce n'est pas suffisant, il me donne toujours une erreur.

Je viens de simplifier le nombre des champs de texte histoire de réduire les fautes de programmations bégnines. ça vient peut-être aussi des autres pages. Voici les codes:

Page de listing :

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto ORDER BY date_parution DESC;", con, adOpenKeyset, adLockOptimistic
%>


      <%while (not rst.EOF) %>
      ">Modifier

Code de la page de modif des champs:

<code><%var_id = Request.Querystring("reference")%>

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto WHERE id =" & var_id &";", con, adOpenKeyset, adLockOptimistic
%>


<form action="modif_exe_ann_moto_wm.asp" method="post" name="form2">
<td width="50%" height="114"> 
              
id

                 
                ">
                

                Nom:

                ">
                

                Prénom: 

                ">
                

                Adresse E-mail:

                ">
        ">
        
          
                


Page d'exécution des modifications:

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set Rs = Server.CreateObject("ADODB.Recordset")

  id_bis= Request.Form("id")
  nom_bis= Request.Form("nom")
  prenom_bis= Request.Form("prenom")
  mail_bis= Request.Form("mail")

  
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom='" & prenom_bis & "',mail='" & mail_bis & "' WHERE id=" & id_bis & ";"
Rs.Open RequeteSQL ,con%>


il me dit qu'il y a une erreur de syntaxe (une virgule)au niveau de la ligne :
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom=...

Merci à vous.

Greg
Messages postés
21
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Merci Bud,

mais ce n'est pas suffisant, il me donne toujours une erreur.

Je viens de simplifier le nombre des champs de texte histoire de réduire les fautes de programmations bégnines. ça vient peut-être aussi des autres pages. Voici les codes:

Page de listing :

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto ORDER BY date_parution DESC;", con, adOpenKeyset, adLockOptimistic
%>


      <%while (not rst.EOF) %>
      ">Modifier

Code de la page de modif des champs:

<code><%var_id = Request.Querystring("reference")%>

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto WHERE id =" & var_id &";", con, adOpenKeyset, adLockOptimistic
%>


<form action="modif_exe_ann_moto_wm.asp" method="post" name="form2">
<td width="50%" height="114"> 
              
id

                 
                ">
                

                Nom:

                ">
                

                Prénom: 

                ">
                

                Adresse E-mail:

                ">
        ">
        
          
                


Page d'exécution des modifications:

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set Rs = Server.CreateObject("ADODB.Recordset")

  id_bis= Request.Form("id")
  nom_bis= Request.Form("nom")
  prenom_bis= Request.Form("prenom")
  mail_bis= Request.Form("mail")

  
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom='" & prenom_bis & "',mail='" & mail_bis & "' WHERE id=" & id_bis & ";"
Rs.Open RequeteSQL ,con%>


il me dit qu'il y a une erreur de syntaxe (une virgule)au niveau de la ligne :
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom=...

Merci à vous.

Greg
Messages postés
21
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Merci Bud,

mais ce n'est pas suffisant, il me donne toujours une erreur.

Je viens de simplifier le nombre des champs de texte histoire de réduire les fautes de programmations bégnines. ça vient peut-être aussi des autres pages. Voici les codes:

Page de listing :

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto ORDER BY date_parution DESC;", con, adOpenKeyset, adLockOptimistic
%>


      <%while (not rst.EOF) %>
      ">Modifier

Code de la page de modif des champs:

<code><%var_id = Request.Querystring("reference")%>

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto WHERE id =" & var_id &";", con, adOpenKeyset, adLockOptimistic
%>


<form action="modif_exe_ann_moto_wm.asp" method="post" name="form2">
<td width="50%" height="114"> 
              
id

                 
                ">
                

                Nom:

                ">
                

                Prénom: 

                ">
                

                Adresse E-mail:

                ">
        ">
        
          
                


Page d'exécution des modifications:

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set Rs = Server.CreateObject("ADODB.Recordset")

  id_bis= Request.Form("id")
  nom_bis= Request.Form("nom")
  prenom_bis= Request.Form("prenom")
  mail_bis= Request.Form("mail")

  
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom='" & prenom_bis & "',mail='" & mail_bis & "' WHERE id=" & id_bis & ";"
Rs.Open RequeteSQL ,con%>


il me dit qu'il y a une erreur de syntaxe (une virgule)au niveau de la ligne :
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom=...

Merci à vous.

Greg
Messages postés
21
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
25 octobre 2004

Merci Bud,

mais ce n'est pas suffisant, il me donne toujours une erreur.

Je viens de simplifier le nombre des champs de texte histoire de réduire les fautes de programmations bégnines. ça vient peut-être aussi des autres pages. Voici les codes:

Page de listing :

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto ORDER BY date_parution DESC;", con, adOpenKeyset, adLockOptimistic
%>


      <%while (not rst.EOF) %>
      ">Modifier

Code de la page de modif des champs:

<code><%var_id = Request.Querystring("reference")%>

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set rst = Server.CreateObject("ADODB.Recordset")
rst.open "SELECT * FROM annmoto WHERE id =" & var_id &";", con, adOpenKeyset, adLockOptimistic
%>


<form action="modif_exe_ann_moto_wm.asp" method="post" name="form2">
<td width="50%" height="114"> 
              
id

                 
                ">
                

                Nom:

                ">
                

                Prénom: 

                ">
                

                Adresse E-mail:

                ">
        ">
        
          
                


Page d'exécution des modifications:

<%
Const adOpenKeyset = 1
Const adLockOptimistic = 3
Set Con = Server.CreateObject("ADODB.Connection")
con.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../../")&"/databases/bd.mdb;"
Set Rs = Server.CreateObject("ADODB.Recordset")

  id_bis= Request.Form("id")
  nom_bis= Request.Form("nom")
  prenom_bis= Request.Form("prenom")
  mail_bis= Request.Form("mail")

  
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom='" & prenom_bis & "',mail='" & mail_bis & "' WHERE id=" & id_bis & ";"
Rs.Open RequeteSQL ,con%>


il me dit qu'il y a une erreur de syntaxe (une virgule)au niveau de la ligne :
RequeteSQL = "Update annmoto Set nom='" & nom_bis & "',prenom=...

Merci à vous.

Greg
Messages postés
489
Date d'inscription
mardi 16 novembre 2004
Statut
Membre
Dernière intervention
22 novembre 2007

tu devré l'ecrire encor plus de foi