C# visual foxpro dbf 索引
C# visual foxpro dbf indices
我有一个旧系统,我必须从中读取数据。它将数据存储在旧的 Visual FoxPro DBF Table.
在 C# 中,我使用 adodb.dll
和 Provider=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 中,则应使用它。
我有一个旧系统,我必须从中读取数据。它将数据存储在旧的 Visual FoxPro DBF Table.
在 C# 中,我使用 adodb.dll
和 Provider=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 中,则应使用它。