【问题标题】:C# visual foxpro dbf indicesC# 视觉 foxpro dbf 索引
【发布时间】:2017-01-06 14:56:40
【问题描述】:

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

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

当我选择以下(它的索引)时:

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 似乎被“忽略”了,即使在表格中我得到了所有行,无论 f3 到 f5 的内容如何。

在 C# 中与 ADODB 连接相同的选择不返回结果集。有没有办法让 VFPOLEDB 也忽略后面的三个字段,还是我只需要 tab_f1+tab_f2 的索引?

【问题讨论】:

    标签: c# select indexing foxpro dbf


    【解决方案1】:

    VFP 将根据SET ANSI 设置将= 视为“开始于”。如果您想在 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”)索引文件。如果您的索引在与该表关联的 CDX 中,则应该使用它。

    【讨论】:

    • “喜欢”带有百分号?就是这么简单...谢谢!
    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多