powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Правильный синтаксис при работе с DBF VISUAL fox pro
11 сообщений из 11, страница 1 из 1
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38615053
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть dbf/ с fox pro. Пишу на С#.
Код: c#
1.
2.
3.
   conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=e:\\;Extended Properties=dBASE IV;User ID=;Password=;";

            comm.CommandText = @"SELECT  PRODUKT, NOMER, FEMGN, FEOBS, DATA, TIME FROM ANALIZ  WHERE [DATA] > #01/11/2013# or ([DATA] = #01/11/2013# and [TIME] > #12:40:50#)";


проблема что не знаю как обратиться правильно к базе. трабла в том что он сравнивает даты как строки и (*мат*) - у него 29.10.2013 > 01/11/2013
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38615068
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Фокс сравнивает даты как даты - конечно, если аргументы сравнения действительно даты, а не строки, в которых записаны даты. Какой тип поля DATA? Подозреваю, что Character. Преобразование строки в дату и обратно - функции CTOD(), DTOC(). Порядок преобразования зависит от SET DATE. Константы типа Date - {} (например, {01/11/2013}. Разбивать дату и время на 2 поля необязательно - в Фоксе есть и Datetime.
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38615085
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftwareBoy, Пишу на С#.
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38615100
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вместо
Код: sql
1.
#01/11/2013#


надо
Код: sql
1.
{^2013-11-01}
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38615492
SoftwareBoy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
des1roerSoftwareBoy, Пишу на С#.
Ну и что? Запрос выполняет фоксовый OLEDB провайдер, и писать надо в синтаксисе Фокса. В данном случае:
Код: sql
1.
SELECT ... FROM ... WHERE CTOD(DATA)>{^2013-11-01} OR (CTOD(DATA)={^2013-11-01} AND TIME>'12:40:50')


Если в dbf-файле преобразовать поле DATA из Character в Date, то функция в запросе не нужна:
Код: sql
1.
SELECT ... FROM ... WHERE DATA>{^2013-11-01} OR (DATA={^2013-11-01} AND TIME>'12:40:50')
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38615525
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SoftwareBoydes1roerSoftwareBoy, Пишу на С#.
Ну и что? Запрос выполняет фоксовый OLEDB провайдер, и писать надо в синтаксисе Фокса. В данном случае:
Код: sql
1.
SELECT ... FROM ... WHERE CTOD(DATA)>{^2013-11-01} OR (CTOD(DATA)={^2013-11-01} AND TIME>'12:40:50')


Если в dbf-файле преобразовать поле DATA из Character в Date, то функция в запросе не нужна:
Код: sql
1.
SELECT ... FROM ... WHERE DATA>{^2013-11-01} OR (DATA={^2013-11-01} AND TIME>'12:40:50')

1. Если внимательно почитать стартовый пост, то можно в нём обнаружить следущее:
Provider=Microsoft.Jet.OLEDB.4.0что к фоксовому провайдеру не имеет ни малейшего отношения.
2. Но, как было правильно замечено, язык приложения не имеет никакого значения и запрос обрабатывается провайдером и обязан соблюдать его(ПРОВАЙДЕРА!) синтаксис.
3. Сами dbf бывают далеко не только фоксовыми и в сочетании с предыдущими пунктами ставят под большое сомнение саму целесообразность этой темы в данном форуме.
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38622820
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
    comm.CommandText = @"SELECT  PRODUKT, NOMER, FEMGN, FEOBS, DATA, TIME FROM ANALIZ  WHERE  DATA>{^2013-11-01} OR (DATA={^2013-11-01} AND TIME>'12:40:50')";	


Сообщение об исключении = "Неверно сформированный код GUID. в выражении запроса 'DATA>{^2013-11-01} OR (DATA={^2013-11-01} AND TIME>'12:40:50')'.", Тип исключения = "System.Data.OleDb.OleDbException"
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38622836
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer
Код: c#
1.
    comm.CommandText = @"SELECT  PRODUKT, NOMER, FEMGN, FEOBS, DATA, TIME FROM ANALIZ  WHERE  DATA>{^2013-11-01} OR (DATA={^2013-11-01} AND TIME>'12:40:50')";	


Сообщение об исключении = "Неверно сформированный код GUID. в выражении запроса 'DATA>{^2013-11-01} OR (DATA={^2013-11-01} AND TIME>'12:40:50')'.", Тип исключения = "System.Data.OleDb.OleDbException"Еще раз - а при чем тут фокс? Используемый тобой провайдер понимает использованный тобой синтаксис задания даты? Тебе тут привели фоксовый синтаксис.
Сообщение об ошибке не фоксового провайдера.
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38622838
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Провайдер какой? VFPOLEDB или Microsoft.Jet.OLEDB.4.0?
У тебя синтаксис для VFPOLEDB
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38623986
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так работает, правда провайдера поменял
Код: c#
1.
2.
3.
4.
5.
  string sqlString = "SELECT PRODUKT, NOMER, FEMGN, FEOBS, DATA, CTOT(TIME) FROM ANALIZ WHERE PRODUKT <>  '_3XH0PC0IX' AND  DATA > DATE(2013,11,1) or (DATA = DATE(2013,11,1) and CTOT(TIME) > DATETIME(1899,12,30,13,08,37) )  ";

                OleDbConnection oleConn = new OleDbConnection("Provider=VFPOLEDB.1;Data Source=e:\\;Collating Sequence=MACHINE;");

                OleDbCommand oleCmd = new OleDbCommand(sqlString, oleConn);
...
Рейтинг: 0 / 0
Правильный синтаксис при работе с DBF VISUAL fox pro
    #38623996
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тоже должно работать после смены провайдера
des1roer
Код: c#
1.
    comm.CommandText = @"SELECT  PRODUKT, NOMER, FEMGN, FEOBS, DATA, TIME FROM ANALIZ  WHERE  DATA>{^2013-11-01} OR (DATA={^2013-11-01} AND TIME>'12:40:50')";	
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Правильный синтаксис при работе с DBF VISUAL fox pro
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]