J'utilise le pilote VFPOLEDB pour lire des fichiers DBF et je continue à obtenir cette erreur et je ne sais pas pourquoi et comment résoudre le problème:
Le fournisseur n'a pas pu déterminer la valeur décimale. Par exemple, la ligne vient de créer, la valeur par défaut de la colonne décimale n'était pas disponible et que le consommateur n'avait pas encore défini une nouvelle valeur décimale. P> BlockQuote>
Voici le code. J'appelle cette routine pour renvoyer un jeu de données du fichier DBF et afficher les données dans un DataGridView. p>
xxx pré> p>
4 Réponses :
Si vous ajoutez une ligne de votre GridView, cela n'utilise pas nécessairement une valeur par défaut, mais plutôt des nulls, vous devrez peut-être préciser vos valeurs par défaut ou définir le schéma pour ne pas permettre aux nulls.
vous pourrait automatiser les colonnes après la fin de la requête et forcer les valeurs par défaut en fonction des types de données de colonnes, tels que P>
foreach (DataColumn oDC in YourDataSet.Tables[0].Columns) { if (oDC.DataType.ToString().Contains("String")) oDC.DefaultValue = ""; else if (oDC.DataType.ToString().Contains("Int32")) oDC.DefaultValue = 0; else if (oDC.DataType.ToString().Contains("DateTime")) oDC.DefaultValue = DateTime.MinValue; }
Comment prédire mes valeurs par défaut? J'essaie de prévisualiser le contenu d'un fichier DBF arbitraire.
Merci pour la suggestion, mais je ne peux même pas obtenir un jeu de données et mon code se bloque à Da.fill (DS);
Voir mon code de code dans un autre message sur Stackoverflow.com/Questtions/2184490/... Titre du sujet a été la recherche dans le fichier DBF à l'aide du fichier .idx
J'ai essayé d'utiliser votre code, mais il a toujours le même problème. J'ai identifié la colonne fautive de l'un des fichiers DBFS. La colonne contient des doubles avec beaucoup de décimales.
J'ai finalement résolu le problème en obtenant le schéma de la table, puis jetez tous les champs de non-caractères vers Varchar dans l'instruction SELECT. Assez bon pour prévisualiser le contenu de la table. P>
J'ai trouvé la solution ici: Erreur lors de la lecture de certaines valeurs numériques avec Pilote VFPOLEDB
SELECT CAST(FieldName As NUMERIC(11, 3)) From TableName
C'est un problème connu. Surtout, si vous devez sélectionner toutes les colonnes, il est beaucoup plus confortable:
Select * from some_table