UPDATE, Dataadapter, Dataset et vb.net [Résolu]

daemangel 9 Messages postés samedi 11 juillet 2009Date d'inscription 15 août 2009 Dernière intervention - 2 mai 2007 à 15:48 - Dernière réponse : l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

5 réponses

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

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

Et ça marche
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de daemangel
daemangel 9 Messages postés samedi 11 juillet 2009Date d'inscription 15 août 2009 Dernière intervention - 2 mai 2007 à 15:53
0
Utile
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é
Commenter la réponse de daemangel
ptit_tof57 79 Messages postés lundi 28 août 2006Date d'inscription 4 avril 2009 Dernière intervention - 3 mai 2007 à 05:27
0
Utile
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+
Commenter la réponse de ptit_tof57
daemangel 9 Messages postés samedi 11 juillet 2009Date d'inscription 15 août 2009 Dernière intervention - 3 mai 2007 à 07:28
0
Utile
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.
Commenter la réponse de daemangel
l0r3nz1 221 Messages postés mercredi 20 février 2008Date d'inscription 17 mars 2012 Dernière intervention - 24 avril 2008 à 16:34
0
Utile
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.
Commenter la réponse de l0r3nz1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.