|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Доброго времени суток Столкнулся с непонятной проблемой. Есть 2 ПК на которых установлены ODBC для подключения к БД Оracle. Есть Excel файл с Vba скриптом который тянет инфу из базы, так вот на одном из ПК работает данный эксель и тянет инфу, а у другого, в том числе и с моего ПК, не тянет и выдает ошибку. Сравнивал Визуально настройки ODBC на двух пк в окнах - все идентично, не знаю где капнуть глубже в этом плане. VBA script для подключения Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
MasterSqlCode должен иметь след вид: SELECT* FROM CCG_STATUS WHERE "creation date">=to_date('" & FromDate & "', 'dd.mm.yyyy')" AND "creation date"<=to_date('" & ToDate & "', 'dd.mm.yyyy')" AND "supplier" like '%' order by 1 Ошибку отлавливаю таким образом MsgBox "Error # " & Err & " : " & Error(Err) Выдает #1004 С одной стороны почитал, что данная ошибка говорит о том, что не получается найти объект в БД. Думал проблема с таблицей CCG_STATUS, оказалось что это представление, но не в этом суть. Решил сделать простенький запрос и поменял MasterSqlCode на SELECT * FROM CCG_STATUS и ВУА-ЛЯ - работает, далее запрос начал постепенно усложнять и дошел до момент, когда, добавив функцию to_date, все ломается и получаю ошибку #1004 В чем может быть проблема, подскажите пожалуйста? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 13:05 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
поправлю SQL код, чтобы не вводить в заблуждение MasterSqlCode Код: sql 1. 2. 3. 4. 5.
КАк он выглядит в VBA Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 13:10 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Проблема в том, что на разных компах разные региональные настройки, в частности формат даты. Не нужно полагаться на то, что дата волшебным образом отформатируется так, как вам надо, нужно либо принудительно форматировать ее на клиенте в формат однозначный и понятный серверу (например анси - '2008-01-20', либо (лучше) делать запрос к серверу с параметрами, а не пытаться полностью отформатировать запрос на клиенте ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 14:43 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
ping2die, Вообще допустимо использовать в качестве строки запроса диалект оракл скл? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 14:46 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Shocker.Pro, Можешь поподробнее указать на ошибку? У меня есть столбец "creation date" в представлении на который я накладываю ограничение по периоду. Столбец храниться в типом строки(VARCHAR2) в формате 'dd.mm.yyyy' Пытался скормить след запрос - Код: plsql 1. 2. 3. 4.
В SQLDEveloper работает на ура...в VBA падает в ошибку. Не понимаю немного механизма работы. что с датами происходит, куда в кого надо конвертнуть =) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 17:36 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Что такое FromDate и ToDate? Какой тип? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 17:42 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Shocker.Pro, Текстовые переменные.Ввожу из формы. Формат dd.mm.yyyy ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 17:51 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
mnbvcx, По идее проблем быть не должно, так как есть другие vba скрипты, которые работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 17:57 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Что написано в Err.Description? Какое значение принимает MasterSqlCode перед отправкой? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 18:01 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Вообще, тут очень много глупостей. Почему дата хранится в виде строки? почему вы пытаетесь сравнить дату со строкойping2die Код: plsql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 18:04 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Shocker.Pro, Значение перед отправкой след select * from CCG_STATUS where to_date("creation date",'dd.mm.yyyy')>='10.04.2018' and to_date("creation date",'dd.mm.yyyy')<='20.04.2018' and "supplier" like '%' order by 1 Почему во вьюхе так сделано, к сожалению не знаю, видимо не предполагали дальше ее обрабатывать sql кодом. Ошибка Error #1004 Общая ошибка ОDBC если добавить конверт строки в дату получу туже самую ошибку - пробовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2018, 18:13 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
ping2dieесли добавить конверт строки в дату получу туже самую ошибку - пробовал. т.е ошибка будет даже, если послать такой запрос: Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 07:22 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
1. Если убрать like из текста VBA, то ошибки не будет? 2. Если переменные заменить на константы в нужном формате? С like и без. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 08:05 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Спасибо всем кто откликнулся. Не знаю почему, но помогло решение от HandKot, хоть я и написал ранее, что не сработает перевод строки в дату, видимо что-то сам не так делал при тестах. Попробовал еще раз - все заработало. Кто-то может пояснить почему в SQLdeveloper/DBeaver код работаеn без приведения типов, а в данном случае при VBA "отправке" нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 09:50 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Разное окружение у коннекшенов скорее всего - локализация и т.п. Повторюсь, если не делать глупости типа сравнения даты со строкой и не полагаться на неявные преобразования (формат даты, десятичный разделитель и т.п., зависящее от региональных настроек), то такие проблемы никогда и не возникнут. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 09:59 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
Shocker.Pro, Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 10:15 |
|
Excel ODBC Oracle #1004
|
|||
---|---|---|---|
#18+
ping2dieКто-то может пояснить почему в SQLdeveloper/DBeaver код работаеn без приведения типов, а в данном случае при VBA "отправке" нет? считаю злом сравнивать значения разных типов без их приведения к одному типу ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2018, 13:06 |
|
|
start [/forum/topic.php?fid=60&msg=39633577&tid=2155082]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 147ms |
0 / 0 |