0

我正在构建一个简单的 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,我也会收到此错误。

有人可以告诉我我在哪里做错了吗?

4

1 回答 1

1

“多步骤”错误不是单一原因的问题,而是对由大量可能原因引起的一些更深层次问题的概括报告。这些问题的根源会因所涉及的数据库类型和提供者的不同而有很大差异。

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

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

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

如果您甚至无法将一列返回到您的网格中,那么将网格本身排除在等式之外。只需将一个值返回到一个字段中,然后在该字段中一次滚动一条记录的结果。

如果这可行,那么您可以专注于如何涉及网格行为。

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

如果你能做到这一点,那么你可以将你的网格附加到那个内存数据集。

不幸的是,以上都不能保证能解决您的具体问题,但希望可以帮助您找到答案。

于 2016-12-08T08:05:17.993 回答