|
|
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Доброго всем времени суток. Вводная: Имеется файл Excel, БД на Oracle Database 10 и настроенное на него ODBC соединение. Возникла необходимость в написании макроса для Microsoft Excel(2003), который должен по нажатию кнопки на листе Excel выполнять запрос к БД(Oracle DataBase 10). результат(несколько строк с несколькими столбцами) запроса должен выводиться на лист Excel. Напишите, пожалуйста, пример макроса, который можно было бы легко переделать под использование различных запросов, т.к. необходимо сделать несколько кнопок с разными запросами - соответственно будет разное количество возвращаемых строк и столбцов. Плюс, так сказать на закуску, хотелось бы чтобы можно было использовать файл для различных БД - формирование Connection String с помощью параметров(например имя базы и пароль извлкетать из ячеек расположенных на листе вызова макроса). P.S.: сам от Excel и VB очень далек, так что не обесудьте, если запрос бредовый и непонятный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2010, 23:15 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Или может кто подскажет почему возникает вот такая ситуация. Описал макрос и прицепил его на кнопку: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И далее запустить можно только после переоткрытия файла Excel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 09:51 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Вадим Мулявка, похоже на то, что Excel не может создать QueryTable в том-же диапазоне. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 11:45 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
СавсемГость, к сожалению, такой же ошибкой сейчас ругается на строчку: ActiveSheet.QueryTables(1).Refresh ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 13:14 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Вадим Мулявка, повторил, почти, Ваш код у себя. Run-time error 1004 получил уже при первом обращении к источнику данных. Убрал из строки соединения указание на драйвер, изменил имя параметра PASS на PWD, - заработало. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2010, 19:19 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
СавсемГость, Да, с параметрами коннекты был косяк, но сейчас поправил - и один раз всё отрабатывает, но потом опять ругается на Refresh. Посмотрел в debug-режиме - всегда заходит в if, т.е. считает, что QueryTable уже существует на листе, даже при первом проходе. Возможно как-то надо явно объявить переменную с QueryTable. Вид макроса сейчас вот такой: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 09:00 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
А подскажите, пожалуйста, как удалить созданный QueryTable с листа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 10:23 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
В своих изысканиях дошел до ошибкис кодом -2147417848(80010108), возникающей при повторном нажатии на кнопку. Насколькоя понял, эта ошибка означае, что система не может восстановить связь с БД. Возможно, кто-нибудь знаешь в чем причина и как это вылечить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:12 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
В своих изысканиях дошел до ошибкис кодом -2147417848(80010108), возникающей при повторном нажатии на кнопку. Насколькоя понял, эта ошибка означае, что система не может восстановить связь с БД. Возможно, кто-нибудь знаешь в чем причина и как это вылечить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:34 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Вадим Мулявка, поищи рецепты по форуму. Подобные вопросы здесь неоднократно обсуждались. Мало кто постоянно использует QueryTable, чтобы с ходу разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 15:40 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Вадим Мулявка, Вадим МулявкаА подскажите, пожалуйста, как удалить созданный QueryTable с листа? удаление QueryTable Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 17:53 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Вадим Мулявка Вам нужно продвигаться в эту сторону: У Вас должна быть форма с элементом управления TextBox с MultiLine=True. В него Вы будете вводить текст запроса. У Вас должна быть процедура ВыполнитьЗапрос (например) с параметром sqlstr (тоже например). В эту процедуру Вы будете передавать в качестве фактического параметра TextBox.Text У Вас должна быть на форме кнопка Выполнить - на нее повесите выполнение этой процедуры. При выполнении этой процедуры в ЭтуКнигу должен добавляться лист. В ячейку А2 методом CopyFromRecordset скопируете данные из полученного рекордсета. Все не расскажешь. Вам придется почитать кое-что, если Вы действительно далеки, а не прибедняетесь. Я лишь показываю Вам, куда двигаться, если нужна гибкость относительно текста запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 20:03 |
|
||
|
Oracle -> ODBC -> Excel
|
|||
|---|---|---|---|
|
#18+
Вадим Мулявка Вам нужно продвигаться в эту сторону: У Вас должна быть форма с элементом управления TextBox с MultiLine=True. В него Вы будете вводить текст запроса. У Вас должна быть процедура ВыполнитьЗапрос (например) с параметром sqlstr (тоже например). В эту процедуру Вы будете передавать в качестве фактического параметра TextBox.Text У Вас должна быть на форме кнопка Выполнить - на нее повесите выполнение этой процедуры. При выполнении этой процедуры в ЭтуКнигу должен добавляться лист. В ячейку А2 методом CopyFromRecordset скопируете данные из полученного рекордсета. Все не расскажешь. Вам придется почитать кое-что, если Вы действительно далеки, а не прибедняетесь. Я лишь показываю Вам, куда двигаться, если нужна гибкость относительно текста запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2010, 20:09 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=36642530&tid=2178088]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 472ms |

| 0 / 0 |
