|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
Доброго времени суток! Начальство поставило "непрофильную задачу". Вытянуть данные из БД в ексель. Писать для этого отдельное приложение не хочется. Поковырявшись в екселе (у нас стоит корпоративная версия 2003) нашел в нем "импорт внешних данных". В целом подходит, но сразу возникают вопросы: как передавать параметры и как делать where field in (value1, value2) Т.е. необходимо выполнить примерно следующее: exec sp1 @param1, @param2 select * from table1 join table2 on (...) where field1 in (value1, value2, ...) Где @param1, @param2 и value1, value2, ... - значения из определенных колонок На ум приходит воспользоваться промежуточной таблицей, например вот так (но тут нужны знания VB, в котором я никак) insert into temp_table(value) values(value1) insert into temp_table(value) values(value2) ... exec sp1 @param1, @param2 select * from table1 join table2 on (...) join temp_table on () Если есть готовые реализации, поделитесь, плз Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2010, 18:57 |
|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
Самое простое - сделать экспорт средствами MSSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2010, 19:12 |
|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
Shocker.ProСамое простое - сделать экспорт средствами MSSQL Имеется ввиду - мастер экспорта ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2010, 19:12 |
|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
Ну или вот посмотрите на примерчик (обратите внимание на источники типа "DSN") ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 01:51 |
|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
AndreTMисточники типа "DSN"ТАК это еще не обзывали. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 05:14 |
|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
_serg_987Поковырявшись в екселе (у нас стоит корпоративная версия 2003) нашел в нем "импорт внешних данных". В целом подходит, но сразу возникают вопросы: как передавать параметры и как делать where field in (value1, value2) Т.е. необходимо выполнить примерно следующее: exec sp1 @param1, @param2 select * from table1 join table2 on (...) where field1 in (value1, value2, ...) Где @param1, @param2 и value1, value2, ... - значения из определенных колонокЗапускаешь визард импорта. На первом диалоге указываешь имя DSN. На этом же первом диалоге обязательно снимаешь галочку внизу окна - Эксель запустит MSQuery. Переключаешь MSQuery с графического на текстовый режим. Вводишь свою длинную команду обязательно с жестко заданными параметрами. Получаешь результат на Экселевский лист. Сохраняешь книгу. Переключаешься в VBA и в консоли даешь команду: Код: plaintext
Правишь эту строку заменяя константные параметры на знак вопроса. И сохраняешь ее обратно в Activesheet.QueryTables(1).CommandText. Закрываешь VBA и запускаешь Refresh на полученной таблице. На каждый знак вопроса, Эксель потребует указать параметр или связать его с ячейкой. Все. Больше ни в коем случае не запускай на эту книгу визарды MSQuery! Оно не умеет правильно работать с переменными параметрами и велика вероятность что оно просто порушит книгу. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 05:27 |
|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
AndreTM, На основе Вашего примера все сделал. Получилось. Еще раз спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2010, 13:57 |
|
Получение данных из MSSQL
|
|||
---|---|---|---|
#18+
White OwlAndreTMисточники типа "DSN"ТАК это еще не обзывали. Ну, захотелось... А как объяснить тему тому, кто "провайдером" считает продавца инет-канала? Вот и делалось так для юзеров: "вот вам так-то обозванный тип исходных данных/источника, вот так вы должны данные получить..." ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2010, 00:07 |
|
|
start [/forum/topic.php?fid=60&fpage=111&tid=2159112]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 338ms |
total: | 472ms |
0 / 0 |