Un seul champs modifié ...

Résolu
marmo31 Messages postés 14 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 27 février 2008 - 27 févr. 2008 à 15:30
marmo31 Messages postés 14 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 27 février 2008 - 27 févr. 2008 à 21:48
Bonjour,

Je continue la découverte de VB  mais je vous embête pour la seconde fois  Je tiens à préciser que j'ai fais une recherche sur le forum et je n'ai rien trouvé pour mon problème...

Avant d'expliquer la chose je vous joins un screenshot qui est beaucoup plus explicite.

Maintenant je vous explique. Grâce à ma listbox je récupère le champ "nom" d'une base de données, grâce à ce champs qui est la clé primaire de la table je récupère les autres champs dans des textbox afin de pouvoir les modifier. Sur le clic du bouton valider il n'y a modification que du champs "Nom"...
Mais pourquoi ? Les deux autres champs dans la table se nomme bien "Prenom" et "Datenaissance"

Je vous joins le code de mon bouton "valider"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles Button1.Click
        'Si on est en ajout
        If Button3.Enabled = False Then
            'Divers contrôls d’erreurs
            If Me.TextBox1.Text = "" Then
                MsgBox("Veuillez saisir le nom.", MsgBoxStyle.OkOnly Or _
                  MsgBoxStyle.Information, "Erreur")
                Exit Sub
            End If
            If Me.TextBox2.Text = "" Then
                MsgBox("Veuillez saisir le prénom.", MsgBoxStyle.OkOnly Or _
                  MsgBoxStyle.Information, "Erreur")
                Exit Sub
            End If
            If Not MaskedTextBox1.MaskFull Then
                MsgBox("Date incorrecte. Vérifier la date", _
                  MsgBoxStyle.OkOnly Or MsgBoxStyle.Information, "Erreur")
                Exit Sub
            End If
            dtr = ObjetDataSet.Tables("Personne").NewRow()
            dtr("Nom") = Me.TextBox1.Text
            dtr("Prenom") = Me.TextBox2.Text
            dtr("Datenaissance") = Me.MaskedTextBox1.Text
            ObjetDataSet.Tables("Personne").Rows.Add(dtr)
            'Pour modifier les valeurs changées dans le DataAdapter
            cmdb = New OleDbCommandBuilder(ObjetDataAdapter)
            'Mise à jour
            ObjetDataAdapter.Update(ObjetDataSet, "Personne")
            'On vide le DataSet et on le 'recharge' de nouveau.
            ObjetDataSet.Clear()
            ObjetDataAdapter.Fill(ObjetDataSet, "Personne")
            ObjetDataTable = ObjetDataSet.Tables("Personne")
            Button3.Enabled = True
            Button4.Visible = True
        End If
        'si on est en Modification
        If Button4.Enabled = False And Button3.Visible = False Then
            Dim choix As String
            choix = ListBox1.Text
            rownum = ListBox1.SelectedIndex
            MessageBox.Show(rownum)
            If MsgBox("Confirmer la modification de la personne " & choix _
              & " ?", MsgBoxStyle.YesNo Or MsgBoxStyle.DefaultButton1 Or _
              MsgBoxStyle.Question, "Confirmation") = MsgBoxResult.Yes Then
                'Divers contrôls d’erreurs
                If Me.TextBox1.Text = "" Then
                    MsgBox("Veuillez saisir le nom.", MsgBoxStyle.OkOnly Or _
                      MsgBoxStyle.Information, "Erreur")
                    Exit Sub
                End If
                If Me.TextBox2.Text = "" Then
                    MsgBox("Veuillez saisir le prénom.", MsgBoxStyle.OkOnly _
                      Or MsgBoxStyle.Information, "Erreur")
                    Exit Sub
                End If
                If Not MaskedTextBox1.MaskFull Then
                    MsgBox("Date incorrecte. Vérifier la date", _
                      MsgBoxStyle.OkOnly Or MsgBoxStyle.Information, "Erreur")
                    Exit Sub
                End If
                ' Extraire l'enregistrement courant
                dtr = ObjetDataSet.Tables("Personne").Rows(rownum)
                'Modifier les valeurs des champs en  récupérant le contenu des _
                  TextBox
                dtr("Nom") = Me.TextBox1.Text
                dtr("Prenom") = Me.TextBox2.Text
                dtr("Datenaissance") = Me.MaskedTextBox1.Text
                'Pour modifier les valeurs changées dans le DataAdapter
                cmdb = New OleDbCommandBuilder(ObjetDataAdapter)
                'Mise à jour
                ObjetDataAdapter.Update(ObjetDataSet, "Personne")
                'On vide le DataSet et on le 'recharge' de nouveau.
                ObjetDataSet.Clear()
                ObjetDataAdapter.Fill(ObjetDataSet, "Personne")
                ObjetDataTable = ObjetDataSet.Tables("Personne")
                'ObjetConnection.Close()
                Button3.Visible = True
                Button4.Enabled = True
                TextBox1.Enabled = False
                TextBox2.Enabled = False
                MaskedTextBox1.Enabled = False
            End If
        End If
    End Sub

je récapitule :
- lorsque j'ajoute une nouvelle personne tout est ok
- lorsque je modifie, je me retrouve donc avec un seul champs mis à jour, "nom".

Question bonus  si je veux trier ma liste par ordre ma technique ne fonctionne plus une autre méthode à me suggérer sans pour autant modifier tout le formulaire ... Enfin cela n'est pas mon principal problème
Merci

PS : Je vous ai tout fournis à part les boutons ajout modif et quitter qui ne présentent pas selon moi grand intérêt. Veuillez m'excuser pour la longueur du post et s'il s'agit d'erreurs grotesques, je débute soyez indulgents merci.

3 réponses

marmo31 Messages postés 14 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 27 février 2008
27 févr. 2008 à 21:48
Bon bah après un gros monologue de ma part, et une bonne journée de recherche, j'ai testé un truc tout bête ...
dim nom, prenom, naissanceas string
nom = Textbox1.text
prenom = Textbox2.text
naissance = MaskedTextbox1.text
....
....
dtr("Nom") = nom
dtr("Prenom") = prenom
dtr("Datenaissance") = naissance

S'agit il d'un bug ? ou est-ce moi qui ai mal fait precedement en affectant directement sans passer par une variable ?
Parfois c'est quand même bete vb !
3
marmo31 Messages postés 14 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 27 février 2008
27 févr. 2008 à 17:14
dtr("Nom") = Me.TextBox1.Text
dtr("Prenom") = Me.TextBox2.Text
dtr("Datenaissance") = Me.MaskedTextBox1.Text

<!-- END TEMPLATE: bbcode_quote -->Il semblerait que seul le premier
champs si j'inverse et met par exemple le prénom en premier alors que
celui ci sera modifié ... pourquoi ?
0
marmo31 Messages postés 14 Date d'inscription samedi 29 décembre 2007 Statut Membre Dernière intervention 27 février 2008
27 févr. 2008 à 20:49
J'ai tenté de faire une requête update pour la modification et là tout est pris en compte, mais je n'arrive pas à actualiser ma listbox :(
Mes essais donnent soit :
- une listbox vide
- ou aucun changement pris en compte

Personne n'a de solution miracle ? :D
0
Rejoignez-nous