louiso13
Messages postés2Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention 5 décembre 2006
-
30 nov. 2006 à 14:30
Bedoui19773
Messages postés5Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention 8 décembre 2006
-
8 déc. 2006 à 14:35
Bonjour à tous (C'est mon premier post ici),
Alors voilà, ca fait 2 jours que je bloque sur une bétise :
Je développe sous Visual Basic 2005 Express et Access 2002, une petite appli de gestion de stock toute bête. Je parviens à insérer des enregistrement dans ma table 'code' contenant la liste des différents code des produits que rencence mon application. Pour ca, j'ai fais un petit form dans lequel on saisi un code identifiant, une désignation et un prix. Tout se comporte très bien tant qu'on ne saisit pas de nombre avec une partie décimale dans la textbox 'prix'. Si on saisi un nombre qui n'est pas un entier j'obtient le message : "Type de données incompatible dans l'expression du critère".
Pourtant ce champ est bien déclaré en double côté access, j'ai même essayé tous les types numériques que propose Access, mais rien à faire, le moteur JET d'access lève toujour cette exception lorsque j'insère une valeur décimale.
Voici mon appel à la méthode insert() :
Try
CodeTableAdapter.Insert( "D06" _
, tabCodetxtDescription.Text _
, CType(tabCodeTxtPrixEstime.Text, Double))
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
Notez bien que ca marche au poil quand 'tabCodeTxtPrixEstime' contient une valeur entière et même lorqu'elle contient une valeur du type: 12,00.
Y a-t-il un format spécial pour le passage d'argument de type double?
Je vous en supplie AIDEZ-MOI, je suis sur cette bêtise depuis 2 jours!!
nbaduraux
Messages postés24Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention15 septembre 2017 1 déc. 2006 à 16:39
1. Assures toi du type de ta colonne dans Access :
Type de données = numérique
Taille du champs = Réel simple ou Réel double (et non entier ...)
Ajoutes 2 ou 3 en nombre de décimales pour être sur.
2. Es-tu sur de la conversion de ta chaine tabCodeTxtPrixEstime.Text en double ?
Si tu ne précises rien, le séparateur doit etre une virgule et non un point
(le point génèrera une erreur.)
Tu peux ajouter un Replace pour forcer la virgule :
CType(tabCodeTxtPrixEstime.Text.Replace("."
,
",")
, Double)
3. Si ces points ne règlent rien : quel est l'objet CodeTableAdapter que tu utilises dans ton exemple et surtout la définition de ta méthode Insert ?
louiso13
Messages postés2Date d'inscriptionjeudi 2 février 2006StatutMembreDernière intervention 5 décembre 2006 5 déc. 2006 à 17:33
Merci pour ta réponse [auteurdetail.aspx?ID=481020 ]nbaduraux,
j'ai déjà vérifié tout ce qui serait succeptible de lever une erreur avec ce message (genre type des colonnes, variables que je passe à insert() ) mais ca ne règle rien. La variable passée est bien un double, le séparateur qu'il soit point ou virgule n'y change rien.
J'ai bien re-testé, en particulier tes points 1 et 2 mais le problème persiste.
Mon CodeTableAdapter est un tableAdapter lié à mon BaseDataSet, qui me permet d'effectuer des actions de modifications ou de consultation sur ma table code. Comme je débute sur Visual Basic 2005, j'ai l'impression de dire un truc débile et évident mais cela répond-il a ta question?
En ce qui concerne la méthode insert(), elle a été auto-générée avec le tableAdapter et je ne sais pas comment voir/modifier sa définition.
nbaduraux
Messages postés24Date d'inscriptionjeudi 31 mars 2005StatutMembreDernière intervention15 septembre 2017 5 déc. 2006 à 19:33
Le problème réside probablement dans cette fonction alors, mais là, je ne peux pas t'aider. Je n'utilises pas les assistants et autre dataset typés car je préfère maitriser les accès aux données. Désolée.