你好,我有一个奇怪的问题。
我正在尝试过滤.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:'行/列的数据不存在。'
如果我在不过滤的情况下查询文件,则效果很好...任何想法。
请不要推荐任何其他驱动程序。由于希腊编码,它们在我的情况下是行不通的。仅此驱动程序和编码转换后的数据提供而不是乱码:-λ╕λ?╕▀?-▀ⁿ▀>
答案 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:\路径引用。