Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
Подскажите может кто знает. Как работать с датами через запрос ODBC. Например пишу такой запрос в программке на С++ и передаю драйверу ODBC. "select * from pr" получаю всю таблицу dbf от начала до конца и со всеми полями потом перекачиваю ее в FireBird. Но если нужно получить только с определенной даты в каком формате это дело написать? обычный запрос типа такого не работает select * from pr where datotg>='10/12/2004' возвращает ошибку несовместимый формат данных. приходится в ручную заходить в foxpro и вручную это делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 06:45 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
CruelGeniusПодскажите может кто знает. Как работать с датами через запрос ODBC. Например пишу такой запрос в программке на С++ и передаю драйверу ODBC. "select * from pr" получаю всю таблицу dbf от начала до конца и со всеми полями потом перекачиваю ее в FireBird. Но если нужно получить только с определенной даты в каком формате это дело написать? обычный запрос типа такого не работает select * from pr where datotg>='10/12/2004' возвращает ошибку несовместимый формат данных. приходится в ручную заходить в foxpro и вручную это делать. Вообще-то Ваш вопрос задан не "в том месте". Однако отвечу, так как сам пишу на С++. В приведенном Вами запросе тип Date/DateTime сравнивается с типом Char[10]. А это не совсем одно и то же (о чем Вам и сообщает драйвер). Есть два пути: 1. Использовать параметризованные запросы, например: select * from pr where datotg>=:DATA, где параметру DATA при преобразовании передается нужное значение (я работаю в C++Builder и там такое работает "на ура") 2. Преобразовывать поле datotg к текстовому виду, а затем в "фильтре" запроса (where...) сравнивать две строки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 07:04 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
дата в FoxPro обычно заключается в фигурные скобочки select * from pr where datotg>={10.12.2004} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 07:56 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
Формат даты зависит от локальных настроек компа - поэтому лучше не рисковать. Преобразовывай в текст и сравнивай как две строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 09:21 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
golsaФормат даты зависит от локальных настроек компа - поэтому лучше не рисковать. Преобразовывай в текст и сравнивай как две строки. Начиная с VFP6 в FoxPro введен универсальный формат даты не зависящий от региональных настроек среды FoxPro. {^YYYY-MM-DD HH:MM:SS} В качестве разделителя в части даты можно использовать символы: дефис, слеш, точка. Можно опустить часть с указанием времени и указывать только дату {^YYYY/MM/DD} Для использования в датах региональных настроек FoxPro надо изменить настройку SET STRICTDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 10:29 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
Наверное вопрос задан не в том месте. Но все таки dbf файл все таки ближе к Foxpro. пробовал по всякому и с фигурными и без фигурных. set strictdate работает в самой fxopro. В моем случае голый драйвер ODBC который работает с dbf файлами. И как ни пишу строку не выходит, получаю либо не совместный формат либо ошибка синтаксиса. Преобразовать в строки и анализировать полученные строки конечно можно. Но в том и смысл чтобы задать строку select * from pr_k where datotg>=DATE чтобы выбрал сам драйвер. А не заходить в Foxpro не делать это вручную ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 11:39 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
CruelGenius Но в том и смысл чтобы задать строку select * from pr_k where datotg>=DATE чтобы выбрал сам драйвер. А не заходить в Foxpro не делать это вручную Блин, я ругаться чичас буду... :) Сделай параметризованный запрос, преобразовывай DATE в тип Date и заноси это преобразованное значение в параметр запроса... И вообще, это вопрос из раздела по С++. Туда и обращайся (там дадут более квалифицированные ответы, естественно после уточнения версии IDE (Borland C++Builder / VC++ /...)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 11:48 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
Блин, не парся ты с дравами, все равно он не документирован. Напиши ты на фоксе OLE server и дергай его метод. Курсор с данными можо передавать как масив, в конце- концов. Если конечно не болше 2 гигов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2004, 11:51 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
Hi ВладимирМ! > Для использования в датах региональных настроек FoxPro надо изменить > настройку SET STRICTDATE Это не про то - это про то будет или не будет фокс ругаться на НЕоднозначные форматы даты - т.е. где нету "крышки" внутри скобок и соответственно непонятен формат - дни перед месяцами или наоборот... 2 CruelGenius Ты попробовал именно так (с точностью до символа) задавать запрос: select * from pr where datotg>={^2004/12/10} 2 Станислав C. Хотя вариант с параметризованным запросом выглядит более красивым и правильным, но то ж ещё понимать надо как их строить, как параметры задавать и т.п. :) P.S. Естественно подразумевается что используется самый последний "VFP ODBC Driver" - версии 6.1.8629.1 - свободно доступный с сайта MS - не хватало ещё старые глюки вылавливать :) Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 00:41 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
Станислав C. CruelGenius Но в том и смысл чтобы задать строку select * from pr_k where datotg>=DATE чтобы выбрал сам драйвер. А не заходить в Foxpro не делать это вручную Блин, я ругаться чичас буду... :) Сделай параметризованный запрос, преобразовывай DATE в тип Date и заноси это преобразованное значение в параметр запроса... И вообще, это вопрос из раздела по С++. Туда и обращайся (там дадут более квалифицированные ответы, естественно после уточнения версии IDE (Borland C++Builder / VC++ /...)) Хорошо захожу в excel word пишу на VBA, на нем я пишу все отчеты даю туже строку не работает. Это вопрос не из раздела C++, а из раздела dbf через ODBC. У меня ODBC manager который принимает строку запроса, на всех базах работает, типа Firebird, IB, MS SQL, и тп. А с dbf не хочет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 05:00 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Ты попробовал именно так (с точностью до символа) задавать запрос: select * from pr where datotg>={^2004/12/10} Именно так пробовал Igor Korolyov P.S. Естественно подразумевается что используется самый последний "VFP ODBC Driver" - версии 6.1.8629.1 - свободно доступный с сайта MS - не хватало ещё старые глюки вылавливать :) Posted via ActualForum NNTP Server 1.1 А вот это надо проверить пойду ка скачаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 05:05 |
|
||
|
dbf и ODBC
|
|||
|---|---|---|---|
|
#18+
-ноль-Блин, не парся ты с дравами, все равно он не документирован. Напиши ты на фоксе OLE server и дергай его метод. Курсор с данными можо передавать как масив, в конце- концов. Если конечно не болше 2 гигов. Не хочу изучать VFP6 не хочу. Мне надо то пару файлов перекачивать. Лучше уж тогда по ночам пусть таблицы перекачивает с начала года. Компьютер железный он не спит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2004, 05:09 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32838038&tid=1595193]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 412ms |

| 0 / 0 |
