2016-12-08 5 views
0

Je crée un programme Delphi simple pour transférer des données du fichier dbf vers le serveur sql. Le fichier dbf contient un champ mémo dont les données sont sauvegardées dans le fichier .fpt. Lorsque j'essaie de l'ouvrir avec ADOQuery, lorsque j'ai essayé de faire défiler jusqu'à la ligne suivante, j'ai reçu un message d'erreurErreur Delphi ADO "erreurs multi-étapes générées vérifier chaque valeur" lors de l'ouverture du fichier DBF avec le type de mémo

Une opération à plusieurs étapes a généré des erreurs. Vérifiez chaque valeur d'état

ceci est ma chaîne de connexion et la syntaxe de requête

Provider=VFPOLEDB.1;Data Source=D:\LEARNING CENTER\DATSPP;Mode=Share Deny None;Extended Properties="";User ID="";Password="";Mask Password=False;Cache Authentication=False;Encrypt Password=False;Collating Sequence=MACHINE;DSN="" 

select * from dpb.dbf

même quand je ne suis pas en cours d'exécution du programme et essayer de faire défiler le DBGrid, je reçois aussi ce Erreur. Est-ce que quelqu'un peut éventuellement me dire où je me trompe?

+0

http://stackoverflow.com/questions/17659830/delphi-error-multiple-step-operation-generater-error-check-each-status-value – Petzy

+0

http://www.adopenstatic.com/faq/80040e21 .asp – Petzy

+0

Des tonnes de réponses à ce problème à la fois sur google et SO.Effectuer une recherche avant de demander – Petzy

Répondre

1

Les erreurs «multi-étapes» ne sont pas un problème avec une cause mais un rapport généralisé de certains problèmes plus profonds découlant d'un grand nombre de causes possibles. Les sources de ces problèmes varient énormément selon le type de base de données et le fournisseur impliqué.

Dans cette situation, je décomposerais le problème en étapes testables séparément.

Tout d'abord, simplifiez la requête. Modifiez-le pour qu'il ne renvoie qu'une seule colonne spécifique dans votre grille (et non le mémo). Si cela fonctionne, continuez d'ajouter des colonnes à votre requête et à la grille, une par une, jusqu'à ce que le problème se produise. Ensuite, concentrez-vous sur ce qu'il pourrait s'agir de la colonne qui déclenche le problème.

(Il ne peut pas se produire du tout, la question pourrait être due à l'utilisation de select * en premier lieu)

Si vous ne pouvez pas revenir, même une seule colonne dans votre grille, puis la grille lui-même hors de l'équation. Renvoyez simplement une valeur dans un champ et faites défiler les résultats un enregistrement à la fois dans ce champ. Si cela fonctionne, vous pouvez vous concentrer sur la façon dont le comportement de la grille pourrait être impliqué.

Le problème peut être dû à la façon dont la grille et la source de données tentent de naviguer dans l'ensemble de résultats. Si vous avez éliminé d'autres explications possibles, vous pouvez rechercher la récupération de l'ensemble du résultat de la requête dans un TClientDataSet (ou un autre ensemble de données en mémoire).

Si vous pouvez le faire, vous pouvez joindre votre grille à cet ensemble de données en mémoire.

Malheureusement, aucune des réponses ci-dessus ne constitue une réponse à votre problème spécifique, mais nous espérons que vous serez sur la bonne voie pour trouver cette réponse.

+0

J'ai eu ton point .. je suis dessus maintenant :) merci pour votre suggestion – ryuusoultaker

+0

après avoir changé la requête de 'select *' en manuellement tapez chaque nom de domaine, j'ai eu l'erreur résolue .. merci pour votre perception .. il m'a sauvé :) – ryuusoultaker