marmo31
Messages postés14Date d'inscriptionsamedi 29 décembre 2007StatutMembreDernière intervention27 février 2008
-
27 févr. 2008 à 15:30
marmo31
Messages postés14Date d'inscriptionsamedi 29 décembre 2007StatutMembreDernière intervention27 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.
marmo31
Messages postés14Date d'inscriptionsamedi 29 décembre 2007StatutMembreDernière intervention27 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 !
<!-- 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 ?
marmo31
Messages postés14Date d'inscriptionsamedi 29 décembre 2007StatutMembreDernière intervention27 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