Delphi ADO错误"多步操作产生错误。检查每个状态值"打开带备忘录类型的DBF文件时

时间:2016-12-08 07:41:14

标签: delphi delphi-7 ado dbf tadoquery

我正构建一个简单的delphi程序,将数据从dbf文件传输到sql server。它自己包含一个备忘录字段的dbf文件,该数据保存在.fpt文件中。当我尝试使用ADOQuery打开它时,当我尝试向下滚动到下一行时,我收到一条错误消息

  

多步操作产生错误。检查每个状态值

这是我的连接字符串和查询语法

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

即使我没有运行程序并尝试滚动dbgrid,我也会收到此错误。

有人可能会告诉我哪里出错了吗?

1 个答案:

答案 0 :(得分:1)

“多步骤”错误不是一个原因的问题,而是由大量可能原因引起的一些更深层问题的一般报告。这些问题的根源因数据库类型和提供商而有很大差异。

在这种情况下,我会将问题分解为可单独测试的步骤。

首先,简化查询。修改它,使其只返回一个特定的列到您的网格中(备忘录)。如果可行,则继续逐个向查询和网格添加列,直到出现问题。然后关注触发问题的列可能是什么。

(可能根本不会发生;问题可能是由于首先使用了 select *

如果您不能将单个列返回到网格中,则将网格本身排除在等式之外。只需将值返回到字段中,然后在该字段中一次滚动结果一条记录。

如果可行,那么您可以专注于网格行为可能涉及的方式。

问题可能是网格和数据源尝试浏览结果集的方式引起的。如果您已经删除了其他可能的解释,那么您可以调查将整个查询结果检索到 TClientDataSet (或其他内存数据集)。

如果可以,那么您可以将网格附加到内存数据集中。

不幸的是,上述任何一项都不能保证能够解决您的具体问题,但希望可能会让您找到答案。