Microsoft Visual FoxPro驱动程序不适合

时间:2018-10-14 18:16:27

标签: .net foxpro dbase

你好,我有一个奇怪的问题。
我正在尝试过滤.dbf文件,但似乎无法。
每当我尝试应用某种标准时,它就会炸毁。.
例如:

oCmd.CommandText = "select VAL([CD]),* from Y:\MYFILE.dat WHERE VAL([CD])>800;"
Dim reader = oCmd.ExecuteReader()
reader.Read()
reader.GetString(15)

我感觉很好: System.InvalidOperationException:'行/列的数据不存在。' 如果我在不过滤的情况下查询文件,则效果很好...任何想法。
请不要推荐任何其他驱动程序。由于希腊编码,它们在我的情况下是行不通的。仅此驱动程序和编码转换后的数据提供而不是乱码:-λ╕λ?╕▀?-▀ⁿ▀

1 个答案:

答案 0 :(得分:0)

如果“ CD”列为数字,则不需要VAL()函数,除非它是代表所有数字的字符串。如果是真正的数字字段,则应该可以在[CD]> 800的地方进行操作。

此外,为防止命令与列名(CD更改目录)与列名CD产生歧义。您可能想对表使用别名并更新查询,例如

oCmd.CommandText = 
@"select 
         VAL(mf.CD),
         mf.* 
      from 
         MYFILE.dat mf
      WHERE 
         VAL(mf.CD) > 800";

如果“ CD”列确实是数字,则不需要VAL()函数调用

oCmd.CommandText = 
@"select 
         mf.* 
      from 
         MYFILE.dat mf
      WHERE 
         mf.CD > 800";

终点。您的OleDb连接字符串指向文件所在的路径(或数据库),因此您不需要对文件名的显式完整Y:\路径引用。