dullbrain
Messages postés29Date d'inscriptionmardi 15 décembre 2009StatutMembreDernière intervention12 novembre 2010
-
10 juin 2010 à 23:20
Mayzz
Messages postés2812Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
11 juin 2010 à 00:38
Bonsoir à tous,
Je travaille actuellement sur une base de données, et je charge sans problème un datagridview. Ce dernier contient quelques colonnes de différents types, string, décimaux, etc, tels que définis lors de la création de la base de données Access.
Je voudrais que mon utilisateur puisse modifier directement depuis le datagridview, et c'est là que les choses se gâtent. Tant que je rentre des valeurs de type tel que défini pour la cellule, ça va, sinon, gros message d'erreur. Or justement, je n'ai même pas le temps de tester si ce que je viens de rentrer (qui est sciemment d'un type erroné) est du bon type ou pas.
J'avais à cet effet codé ce petit bout de programme :
For j As Integer = 0 To madatatable.Columns.Count - 1
For t As Integer = 0 To madatatable.Rows.Count - 1
If typechamps(j) IsNot DataGridView1.Rows(t).Cells(j).Value.GetType Then
Exit Sub
End If
où typechamps est un tableau contenant les types des colonnes de la table, ce tableau est bon, je l'ai testé par msgbox.
je ne peux même pas savoir si ce code marche, puisque le système bondit dès avoir rentré une lettre dans une cellule censée contenir un nombre.
Si quelqu'un avait une idée, je lui en serait reconnaissant !
Bonne soirée et merci d'avance :)
A voir également:
Datagridview & problème entre type requis et type tapé
Mayzz
Messages postés2812Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 10 juin 2010 à 23:59
Salut,
Des fois, il ne faut pas se casser la tête, met un simple messagebox dans l'événement DataError du DataGridView, de toute façon, l'utilisateur n'est pas stupide, si il voit une case prix, par exemple, et qu'un message d'erreur s'affiche le prévenant qu'il à fait une saisie invalide, il va bien deviner qu'il doit entrer un chiffre...
Mais si tu tiens vraiment à informer l'utilisateur de l'erreur, du type érroné saisis et du type de donnée qu'il doit saisir, alors essaye de voir également dans l'événement DataError, le type d'exception qui se produit (via e.Exception) et avec un Select Case affiche me message personnalisé qui convient.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
dullbrain
Messages postés29Date d'inscriptionmardi 15 décembre 2009StatutMembreDernière intervention12 novembre 2010 11 juin 2010 à 00:04
Merci de ta réponse si rapide !
Donc en fait il faudrait que je redéfinisse cette méthode DataError ?
J'ai trouvé cette syntaxe sur msdn :
Private Sub DataGridView1_DataError(ByVal sender As Object, _
ByVal e As DataGridViewDataErrorEventArgs) _
Handles DataGridView1.DataError
juste pour confirmation, c'est bien ce dont tu parlais ?
Si oui je la redéfinis juste, parce qu'en l'état actuel des chose le message d'erreur est long comme mon bras.
Sinon j'avais pensé à faire un DataGridView en lecture seule et modifier au coup par coup via des textbox et autres outils, mais question maniabilité et rapidité pour un outil professionnel c'est pas génial.