Fonction UPDATE sur une base Access

vince2472 Messages postés 1 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 28 août 2003 - 28 août 2003 à 12:56
polz Messages postés 31 Date d'inscription samedi 17 août 2002 Statut Membre Dernière intervention 6 juin 2006 - 29 août 2003 à 09:20
Bonjour,
Je rencontre un pb : j'ai le message 'Erreur de syntaxe dans l'instruction UPDATE' lorsque je mets ma base à jour (le but étant de la modifier).
Voici mon code :

    Sub gridRecherche_UpdateCommand(ByVal source As Object, ByVal e As DataGridCommandEventArgs) Handles gridRecherche.UpdateCommand
        Dim intRefAudience As Integer
        Dim cTextBox As TextBox
        Dim cmdUpdate As OleDb.OleDbCommand
 
        cTextBox = CType(e.Item.Cells(4).Controls(0), TextBox)
        sSQL = "UPDATE tblAudience SET chpAffaire='" & cTextBox.Text & "', "
        cTextBox = CType(e.Item.Cells(5).Controls(0), TextBox)
        sSQL &= "chpContre='" & cTextBox.Text & "', "
        cTextBox = CType(e.Item.Cells(6).Controls(0), TextBox)
         sSQL &= "chpDate='" & cTextBox.Text & "', "
        sSQL &= " WHERE RefAudience='" & gridRecherche.DataKeys(e.Item.ItemIndex) & "'"

        Dim connexion As New OleDb.OleDbConnection("Provider=Microsoft.Jet.oledb.4.0;" & _
   "Data Source=" & Request.PhysicalApplicationPath & "db\Audiences.mdb")
        connexion.Open()
        cmdUpdate = New OleDb.OleDbCommand(sSQL, connexion)
        cmdUpdate.ExecuteNonQuery()
        connexion.Close()
        gridRecherche.EditItemIndex = -1
        ChargerData()
    End Sub


Le message apparaît au moment de l'exécution de ExecuteNonQuery.

Voici la 'trace de la pile' :

[OleDbException (0x80040e14): Erreur de syntaxe dans l'instruction UPDATE.]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
   System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
   audiences_social.WebForm4.gridRecherche_UpdateCommand(Object source, DataGridCommandEventArgs e) in c:\inetpub\wwwroot\audiences_social\Recherche.aspx.vb:443
   System.Web.UI.WebControls.DataGrid.OnUpdateCommand(DataGridCommandEventArgs e)
   System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
   System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e)
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
   System.Web.UI.Page.ProcessRequestMain()


Je suis sous win2000, ma base Access est en local, en saisie en ajoutant des lignes, tout fonctionne parfaitement, il n'y a qu'en modification.
Merci d'avance !

1 réponse

polz Messages postés 31 Date d'inscription samedi 17 août 2002 Statut Membre Dernière intervention 6 juin 2006 1
29 août 2003 à 09:20
Hello,

J'ai trouvé une, peut-etre deux erreurs :

la première sSQL &= "chpDate='" & cTextBox.Text & "', "
Il n'y a pas de , après ta dernière instruction set

Ensuite

sSQL &= " WHERE RefAudience='" & gridRecherche.DataKeys(e.Item.ItemIndex) & "'"

Je suis pas sur que tu aies besion de mettre entre ' ' le datakeys.

Sinon, il y a plus simple. Tu crée une requete paramétrées sous access et tu insère les paramètres. Si tu vois pas comment faire, redis moi.

polz
0
Rejoignez-nous