Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос к *.dbf через ODBC / 14 сообщений из 14, страница 1 из 1
09.12.2009, 17:48
    #36357361
shedow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
Добрый день.
Выбираю данные из таблицы, подключаю через ODBC. Драйвер Microsoft dBase.
Простейший запрос типа:

Код: plaintext
1.
SELECT * FROM TABLE


отрабатывает нормально. Но при попытке работать с датами:

Код: plaintext
1.
2.
SELECT * FROM TABLE WHERE (DateFild = DATE())

вылетает ошибка: "Ошибка в конструкции WHERE рядом с ")"" Правда в visual studio запрос потом таки отрабатывает, но когда подставляю его в целевую программу - вылет. Не понимаю, в чем проблема. Вроде все соответствует спецификации, в сети ничего толкового не нашел.
подскажите, пожалуйста, в чем может быть проблема.
...
Рейтинг: 0 / 0
09.12.2009, 18:23
    #36357499
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
В формате DateFild.
...
Рейтинг: 0 / 0
09.12.2009, 18:27
    #36357505
Ffffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
Проверил: скобки тоже не проходят.
...
Рейтинг: 0 / 0
09.12.2009, 18:36
    #36357530
SQL запрос к *.dbf через ODBC
shedow,
вопрос не в тот форум. Драйвер Microsoft dBase не имеет никакого отношения к фоксу.
...
Рейтинг: 0 / 0
09.12.2009, 19:36
    #36357651
Sea_Cat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
shedow,

При передаче запроса должно передаваться значение, а не сама функция, или переменная. Чтобы заставить драйвер вычислить значение, используется знак вопроса:

SELECT * FROM TABLE WHERE DateFild = ?DATE()

а лучше так:

SELECT * FROM TABLE WHERE DateFild = ?DTOS(DATE())

Такой формат даты нормально обрабатывается большинством SQL-серверов.
...
Рейтинг: 0 / 0
09.12.2009, 20:14
    #36357703
FFFFFFFFF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
Sea_Cat, автор работает с dBase-файлами, а не с сервером.
...
Рейтинг: 0 / 0
09.12.2009, 23:43
    #36357944
Sea_Cat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
FFFFFFFFF,

ODBC для того и создан, чтобы максимально абстрагироваться от источника данных - будь он хоть dBase, хоть Oracle, хоть лист Excel. А варианты привел потому, что нет под руками нет ни одного файла dBase - не на чем проверить, какой формат даты подойдет. Формат ГГГГММДД проходит в большинстве случаев.
...
Рейтинг: 0 / 0
10.12.2009, 09:37
    #36358269
Fffffffffffffff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
Sea_Cat Формат ГГГГММДД проходит в большинстве случаев.
А с этим никто и не спорил.
...
Рейтинг: 0 / 0
10.12.2009, 10:20
    #36358369
shedow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
Sea_Catshedow,



а лучше так:

SELECT * FROM TABLE WHERE DateFild = ?DTOS(DATE())


Такой вариант драйвер совсем не понимает. Да и в описании драйвера указывается просто DATE().
Я за вчера малость повозился с этой ситуацией - сделал запрос, который работает в программе. Но в визуал студио по прежнему проблемы. Видимо это глюки самого визуал студио.
...
Рейтинг: 0 / 0
10.12.2009, 10:32
    #36358406
shedow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
PS.

Сменил драйвер на DataDirect - товский. На тот нормальный мануал есть.
...
Рейтинг: 0 / 0
10.12.2009, 11:07
    #36358497
malnevit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
Код: plaintext
1.
2.
TEXT TO sSqlcmd TEXTMERGE NOSHOW PRETEXT  7 
SELECT t.* FROM TABLE t WHERE DateFild = <<DATE()>>
ENDTEXT 
Типа так. Осталось узнать как обстоят дела с DateFild , о чем тебе уже написали.
Тут же не телепаты, может тебе нужно DateFild.ToStr() = <<DATE()>>, ктож об этом знает. А может ты вообще через LINQ. Вопросы грамотно задавай, а не как быдло.
...
Рейтинг: 0 / 0
10.12.2009, 11:25
    #36358562
shedow
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
malnevit
Код: plaintext
1.
2.
TEXT TO sSqlcmd TEXTMERGE NOSHOW PRETEXT  7 
SELECT t.* FROM TABLE t WHERE DateFild = <<DATE()>>
ENDTEXT 
Типа так.

Ты вопрос прочел? Источник - файл dbf, подключение драйвером ODBC. Работа - чистым SQL запросом. Каким боком тут приведенный тобой фоксовский код?


malnevit
а не как быдло.

И тебе всего самого лучшего.
...
Рейтинг: 0 / 0
10.12.2009, 14:26
    #36359126
Нех009877
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL запрос к *.dbf через ODBC
Да, уж, дядя, это нужно быть 7 пядей во лбу, чтобы фоксовские данные крутить через ОДБЦ. Гнать вас таких кодеров поганой метлой в дворники.
...
Рейтинг: 0 / 0
10.12.2009, 14:36
    #36359146
SQL запрос к *.dbf через ODBC
Нех009877Да, уж, дядя, это нужно быть 7 пядей во лбу, чтобы фоксовские данные крутить через ОДБЦ. Гнать вас таких кодеров поганой метлой в дворники.А где тут увиделись именно фоксовские данные? Или уже dbf стал чисто фоксовым форматом?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос к *.dbf через ODBC / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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