Драйвер Microsoft Visual FoxPro не подходит - PullRequest
0 голосов
/ 14 октября 2018

Здравствуйте, у меня странная проблема.
Я пытаюсь отфильтровать файл .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 голосов
/ 14 ноября 2018

если столбец «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: \ path ссылку на имя вашего файла.

...