【问题标题】:Delphi ADO error "Multi-Step operation generated errors. check each status value" when opening DBF file with memo typeDelphi ADO 错误“多步操作产生错误。检查每个状态值”打开带有备忘录类型的 DBF 文件时
【发布时间】:2016-12-08 07:41:13
【问题描述】:

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

谁能告诉我哪里做错了?

【问题讨论】:

  • 在谷歌和 SO 上都有大量关于这个问题的答案。在询问之前先进行搜索
  • 我一一检查字段大小,大小大于它的值,并且 sql 表的大小超过了从 dbf 文件中接受值的大小,但我仍然得到这个错误,那就是为什么我在这里问这个问题
  • 查看第二个链接

标签: delphi delphi-7 ado dbf tadoquery


【解决方案1】:

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

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

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

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

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

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

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

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

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

【讨论】:

  • 我明白你的意思了..我现在就在上面:) 谢谢你的建议
  • 在将查询从select * 更改为手动输入每个字段名称后,我得到了错误解决.. 谢谢你的看法.. 它救了我:)
猜你喜欢
  • 2015-06-19
  • 1970-01-01
  • 2011-12-23
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多