|
|
|
Проблема VFP при работе с ODBC 3.X
|
|||
|---|---|---|---|
|
#18+
Похоже VFP пытается работать с ODBC 3.X, как с ODBC 2.0. Хотя непонятно, как МС не реализовал в 9 VFP способность различать версии драйвера :(... Declaring the Application's ODBC Version =============================== .... The ODBC 3.x Driver Manager and ODBC 3.x drivers check the version of the ODBC specification to which an application is written and respond accordingly. For example, if the application follows the ODBC 2.x specification and calls SQLExecute before calling SQLPrepare, the ODBC 3.x Driver Manager returns SQLSTATE S1010 (Function sequence error). If the application follows the ODBC 3.x specification, the Driver Manager returns SQLSTATE HY010 (Function sequence error). =============================== Собственно я и получаю эту ошибку. при удалении/обновлении несуществующих записей, ошибка обходится путем использования не просто SQLEXEC, а SQLPREPARE+SQLEXEC. Пытаюсь явно указать, что нужно использовать ODBC 3 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Получаю ошибку ResultSet=-2 - "неверный хэндл соединения" Хотя Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Может кто сталкивался с подобным? Как указать соединению, что драйвер версии 3.X? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2006, 05:19 |
|
||
|
Проблема VFP при работе с ODBC 3.X
|
|||
|---|---|---|---|
|
#18+
Все решение найдено, нужно внимательнее читать документацию: в SQLSetEnvAttr нужно использовать не хэндл соединения, а ODBC environment handle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2006, 09:59 |
|
||
|
Проблема VFP при работе с ODBC 3.X
|
|||
|---|---|---|---|
|
#18+
Hi All! Для всех - не стоит воспроизводить данный код, если вы собираетесь использовать VFP-ные "встроенные" методы работы с ODBC - т.е. все SQL*() функции. Дето в том, что фокс реализован как ODBC 2.0 Application (при этом он нормально работает как с ODBC 2.0 так и с ODBC 3.0 драйверами - за это отвечает ODBC Driver Manager - подробности см. в MSDN). А вот если описанным выше способом сказать ODBC менеджеру что мы якобы являемся ODBC 3.0 Application - то возможны некоторые неприятные эффекты, связанные с различиями между ODBC 2.0 и ODBC 3.0 API. В частности неверное "опознавание" типов даты/даты-времени и timestamp... Внутренний фоксовый код конечно никак не может стать ODBC 3.0 совместимым :) Если же вы собираетесь сами реализовывать весь низкоуровневый интерфейс работы с ODBC API (т.е. не использовать фоксовых функций) то конечно можно и переключится в этот режим - но тогда конечно надо весь свой код работы с АПИ писать с учётом соответствующих спецификаций. P.S. IMHO надо быть большим мазохистом, чтобы писать на фоксе используя чистый ODBC АПИ - это весьма большой кусок работы - вот "избранные" АПИ-ные методы применять действительно иногда можно и нужно. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.07.2006, 14:17 |
|
||
|
|

start [/forum/search_topic.php?author=prexcel&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 731ms |
| total: | 864ms |

| 0 / 0 |
