C# visual foxpro dbf 索引

C# visual foxpro dbf indices

我有一个旧系统,我必须从中读取数据。它将数据存储在旧的 Visual FoxPro DBF Table.

在 C# 中,我使用 adodb.dllProvider=VFPOLEDB.1 来获取数据,到目前为止效果很好。

当我select关注(它是一个索引)时:

select * from tableXYZ where tab_f1+STR(tab_f2,10)+STR(tab_f3,3)+STR(tab_f4,3)+STR(tab_f5,3) = "AR1234567890"

我在 Visual FoxPro 中得到了一个快速结果(使用索引),"AR" 是 tab_f1,“1234567890”是 STR(tab_f2,10)。 tab_f3、tab_f4 和 tab_f5 似乎是 "ignored",甚至填入 table 我得到所有行,不管 f3 到 f5 的内容.

与 ADODB 连接 returns 无结果集的 c# 中的相同 select。有没有办法让 VFPOLEDB 也忽略后面的三个字段,或者我只需要 tab_f1+tab_f2 的索引?

VFP 将根据 SET ANSI 设置将 = 视为 "starts with"。如果您想在 ADODB 中使用相同的功能,我会改用 LIKE

select * 
from tableXYZ 
where tab_f1+STR(tab_f2,10)+STR(tab_f3,3)+STR(tab_f4,3)+STR(tab_f5,3) LIKE "AR1234567890%"

但是请注意,ADODB 不会使用独立的 ("IDX") 索引文件。如果您的索引在与该 table 关联的 CDX 中,则应使用它。