Enregistrer dans une base access [Résolu]

Signaler
Messages postés
124
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
29 mai 2020
-
Messages postés
14870
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
-
Bonjour,
Pour mettre à jour une base de données access, j'utilise le code ci-dessous lorsque la mise à jour concerne une seule ligne

Private Sub MiseAJourSortie()
        'Mise a jour sortie liquidée
        ' On Error Resume Next
        Sql = "SELECT ID, CodeOut, Liquidé FROM Sortie" _
            + " WHERE [CodeOut] Like '" & Trim(TCodOut.Text) & "'"
        Cmd = New OleDb.OleDbCommand(Sql)  
        SOuTA = New OleDb.OleDbDataAdapter(Cmd)
        Cmd.Connection() = GP 
        CDSet = New DataSet 
        SOuTA.Fill(CDSet, "Sortie")
        RowN = SOuT.Rows.Count - 1
        If RowN = SOuT.Rows.Count - 1 Then
            Dim Ligne0 As Integer = CDSet.Tables.Count - 1
            With CDSet
                DTR = CDSet.Tables("Sortie").Rows(Ligne0)
                DTR("Liquidé") = Trim$("OUI")
                CmdB = New OleDb.OleDbCommandBuilder(SOuTA)
                SOuTA.UpdateCommand = CmdB.GetUpdateCommand
                SOuTA.Update(CDSet, "Sortie") : CDSet.Clear()
            End With
        Else
            Exit Sub
        End If
    End Sub


Ma question est :
Comment formuler le code lorsque j'ai plus d'une ligne à mettre à jour en mème temps (Si le DataSet compte 3 lignes par exemple et que sur la colonne "Liquidé" je dois écrire le "OUI" sur les 3 lignes lorsque tous les trois ont en commun le "CodeOut").

merci d'avance

4 réponses

Messages postés
14870
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
un truc comme ça
    Private Sub MiseAJourSortie()
        'Mise a jour sortie liquidée
        ' On Error Resume Next
        sql = "SELECT ID, CodeOut, Liquidé FROM Sortie" _
            + " WHERE [CodeOut] Like '" & Trim(TCodOut.Text) & "'"
        cmd = New OleDb.OleDbCommand(sql)
        SOuTA = New OleDb.OleDbDataAdapter(cmd)
        cmd.Connection() = GP
        CDSet = New DataSet
        SOuTA.Fill(CDSet, "Sortie")
        For Each row As DataRow In CDSet.Tables("Sortie").Rows
            row("Liquidé") = "OUI"
        Next
        CmdB = New OleDb.OleDbCommandBuilder(SOuTA)
        SOuTA.UpdateCommand = CmdB.GetUpdateCommand
        SOuTA.Update(CDSet, "Sortie") : CDSet.Clear()
    End Sub


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Messages postés
14870
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
Bonjour

je n'ai pas pris le temps de réfléchir à ton problème.

Mais je m'interroge sur ces 2 lignes
        RowN = SOuT.Rows.Count - 1
        If RowN = SOuT.Rows.Count - 1 Then ' RowN vaut forcément SOuT.Rows.Count - 1 puisque c'est la valeur que tu viens de lui mettre.

Il me semble que ces 2 lignes ne servent à rien
Messages postés
14870
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
30 mai 2020
413
De rien
Messages postés
124
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
29 mai 2020

Bonsoir Whismeril
Satisfaction totale, ça marche super bien. Merci