UPDATE, Dataadapter, Dataset et vb.net

Résolu
daemangel Messages postés 9 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 15 août 2009 - 2 mai 2007 à 15:48
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012 - 24 avril 2008 à 16:34
Bonjour à tous, je suis encore débutant dans vb.net et tout le tremblement mais je bloque sur un problème qui pourrais vous paraître simple.
Je cherche à effectuer un update sur une table Access, mais je n'y arrive pas.
Si ça peut aider voilà mon code:
-------------------------------------------------------------------------------------------------------
    Public cnx As OleDbConnection
    Public cmd As New OleDbCommand
    Public ds As New DataSet("tab1")

    Public da As New OleDbDataAdapter("select * from tab1", cnx)

    Public dt As DataTable
    Public i as Integer
conn "provider microsoft.jet.oledb.4.0 ; data source = c:\mabase.mdb;"
cnx = New OleDbConnection
cnx.ConnectionString = conn
cnx.Open()

        da.Fill(ds, "Cimetiere")
        dt = ds.Tables("Cimetiere")
        For i = 0 To stockdata.Count - 1

    'Msgbox pour vérifier si ma requête est correcte
            MsgBox("UPDATE Cimetiere set " & Mid(test, 1, InStr(test, ". ") - 1) & "=" & """" & stockdata.Item(i) & """" & _
" Where " & primkey_name & "=" & """" & stockprimkey.Item(i) & """" & ";")

    'Mid(test, 1, InStr(test, ". ") - 1) -->Ca représente le nom du champ à modifier
    'stockdata.Item(i) --> Ca représente la valeur d'un arraylist à mettre dans le champ
    'primkey_name -->C'est ma variable qui contient le nom de la clé primaire
    'stockprimkey.Item(i) --> Ca représente la valeur d'un arraylist à mettre de la clé primaire

            cmd = New OleDbCommand("UPDATE tab1 set " & Mid(test, 1, InStr(test, ". ") - 1) & "=" & """" & stockdata.Item(i) & """" & " Where " & primkey_name & "=" & """" & stockprimkey.Item(i) & """" & ";", cnx)
            da.UpdateCommand = cmd
            da.Update(ds)
        Next
-------------------------------------------------------------------------------------------------------
Voilà si vous avez des questions hésitez pas et si vous avez des réponses hésitez encore moins.
Merci d'avance.
A voir également:

5 réponses

daemangel Messages postés 9 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 15 août 2009
3 mai 2007 à 11:12
J'ai trouvé la solution, à la place de :
da.Update(ds)

J'ai mis :
da.UpdateCommand.ExecuteNonQuery()

Et ça marche
3
daemangel Messages postés 9 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 15 août 2009
2 mai 2007 à 15:53
Je viens de me rendre compte d'erreur de copie dans mon poste original:
da.Fill(ds, "tab1")
        dt = ds.Tables("tab1")
        For i = 0 To stockdata.Count - 1

    'Msgbox pour vérifier si ma requête est correcte
           
MsgBox("UPDATE tab1 set " & Mid(test, 1, InStr(test, ". ") -
1) & "=" & """" & stockdata.Item(i) & """" & _
" Where " & primkey_name & "=" & """" & stockprimkey.Item(i) & """" & ";")

voilà qui est corrigé
0
ptit_tof57 Messages postés 79 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 4 avril 2009 1
3 mai 2007 à 05:27
Salut je ne suis pas une pro du tout mais dans le peu de code que j'ai pu étudié il y avait une variable qui représenté un BindingSource
sur laquel on effectué l'instruction suivante  "BindingSource".EndEdit avant de faire un update de la table vers la base de donnée.

Sur les exemples de code généré automatiquement par visual studio voici ce que j'obtient en cliquant sur le bouton enregistré :

       Me.Validate()
        Me.BindingSource.EndEdit()
        Me.TableAdapter.Update(DataSet.Table)

J'espere au moins t'avoir mis sur une piste.
A+
0
daemangel Messages postés 9 Date d'inscription samedi 11 juillet 2009 Statut Membre Dernière intervention 15 août 2009
3 mai 2007 à 07:28
Merci ptit_tof57, je viens de regarder ce que tu m'as donné, mais j'ai fortement l'impression qu'il s'agit de vérifier les contrôles d'une page, alors que mon traitement est automatisé et va chercher les infos dans un fichier texte. mais je vais creuser un peu plus loin pour voir si ça va pas me mener vers ce que je cherche.
0

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

Posez votre question
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
24 avril 2008 à 16:34
1 an aprés...

OK, mais quand on créé son dataAdapter et son dataset ( pour ensuite eventuellement profiter de toutes les options de dataTable et dataRow)

pour ma part j'utilise seulement le dataset:
dst.AcceptChanges()
dst.Tables(0).Rows(5).Item(1) = "mmm"

puis
Try
dad.Update(dst, table) 'Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.
Catch ex As Exception
End Try

ou recupérer les infos dans un tableau >dst.Tables(0).Rows(1).ItemArray)<

dans ce cas je ne vais surement pas utiliser une commande update complexe! et comme on m'oblige à utiliser vb2005 en ce moment il faut que je m'y fasse.

Alors si quelqu'un pouvait m'expliquer svp de maniere à ce que je ne regrette pas trop VBA et ACCESS beaucoup plus souple que vb2005 et sql server.

merci d'avance.
0
Rejoignez-nous