Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ? / 18 сообщений из 18, страница 1 из 1
28.08.2007, 16:47
    #34758907
aureli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Без параметров, или с фиксированными параметрами - умею.
А как сделать так, чтобы параметры, передаваемые хранимой процедуре, читались из ячейки???

Говорит, типа, нельзя использовать параметры, если запрос не представляется графически..
...
Рейтинг: 0 / 0
28.08.2007, 19:55
    #34759593
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
1) Сделай запрос с жестко задаными параметрами
2) Сохрани книгу
3) БОЛЬШЕ НИКОГДА НЕ ЗАПУСКАЙ MS Query НА ЭТОЙ КНИГЕ
4) Запускай VBA (Alt+F11)
5) Иди в консоль (Ctrl+G)
6) Даешь команду:
Код: plaintext
 ? ActiveSheet.QueryTables( 1 ).CommandText
7) Получишь свою SQL команду с жесткими параметрами.
8) Даешь команду
Код: plaintext
ActiveSheet.QueryTables( 1 ).CommandText = "твоя sql команда"
И в этой команде заменяешь все свои параметры на знаки вопроса.
9) Закрываешь VBA
10) На листе Экселя ставишь курсор в одну из ячеек со старой таблицей и командуешь обновить ее.
Теперь Эксель на каждый вопрос встреченный в sql команде попросит ввести параметр. Там сможешь привязать параметры к ячейкам.
...
Рейтинг: 0 / 0
31.08.2007, 16:35
    #34768642
aureli
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Спасибо огромное, работает!
...
Рейтинг: 0 / 0
26.04.2008, 07:50
    #35281287
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
1. Подскажите, в каком формате нужно заносить в ячейку параметр который я обозначил вопросом :
Код: plaintext
ActiveSheet.QueryTables( 1 ).CommandText = "SELECT ?,`Данные$`.Дата FROM `\\server\МД2008`.`Данные$` `Данные$`;"
Вместо вопроса было [`Данные$`.Количество]
2. Можно ли такимже образом изменять параметры запроса, если данные отображаются в ввиде сводной таблицы? В этом случае Команда ? ActiveSheet.QueryTables(1).CommandText выдает ошибку. Можно ли в Query изменить запрос, проставив вместо имен полей вопросы?
...
Рейтинг: 0 / 0
26.04.2008, 20:40
    #35281730
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Сергей061. Подскажите, в каком формате нужно заносить в ячейку параметр который я обозначил вопросом :
Код: plaintext
ActiveSheet.QueryTables( 1 ).CommandText = "SELECT ?,`Данные$`.Дата FROM `\\server\МД2008`.`Данные$` `Данные$`;"
Вместо вопроса было [`Данные$`.Количество]В данном случае - никак в принципе. Имя колонки не может быть переменным. Формируй строку запроса в макросе, потом отдавай ее в QueryTable.CommandText.

Сергей062. Можно ли такимже образом изменять параметры запроса, если данные отображаются в ввиде сводной таблицы? В этом случае Команда ? ActiveSheet.QueryTables(1).CommandText выдает ошибку.Потому что сводная таблица это PivotTable а не QueryTable.
Сергей06Можно ли в Query изменить запрос, проставив вместо имен полей вопросы?Нет.
...
Рейтинг: 0 / 0
05.02.2009, 17:23
    #35799945
Vlaban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Методом проб и ошибок я понял, что в VBA ActiveSheet.QueryTables(1).CommandText имеет ограничение в колличестве символов. Был запрос, отлично выполнялся через MS Query, но почему то выдавалась ошибка в VBA. Если я не прав, можете меня поправить. Количество мабудь не больше 1024.
...
Рейтинг: 0 / 0
05.02.2009, 18:04
    #35800061
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
VlabanМетодом проб и ошибок я понял, что в VBA ActiveSheet.QueryTables(1).CommandText имеет ограничение в колличестве символов. Был запрос, отлично выполнялся через MS Query, но почему то выдавалась ошибка в VBA. Если я не прав, можете меня поправить. Количество мабудь не больше 1024.Возможная длина команды зависит от версии Экселя. В старых ограничение в 254, в новых больше.
В любом случае, если надо работать с очень длинной командой, которая превышает ограничение, ее надо разбить на несколько ячеек массива. И полученый массив отдать в .CommandText
Код: plaintext
1.
2.
3.
4.
Dim mysql As Variant ' переменная не должна быть жестким массивом.
mysql = Array("select field1, field2 ...... fi", _  ' 254 символа
                    "eild888, field889, field890, ..... f" , _ ' еще 254 символа
                    "rom sometable ")
ActiveSheet.QueryTables( 1 ).CommandText = mysql
...
Рейтинг: 0 / 0
09.02.2009, 23:38
    #35807014
Vlaban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
возможно вопрос покажется слишком простым, но чтож я делаю не так
в VBA на Thisbook ввожу

Код: plaintext
1.
2.
3.
4.
Private Sub Workbook_Open()
Dim mysql As Variant
mysql = Array(".......")
ActiveSheet.QueryTables( 1 ).CommandText = mysql
End Sub

выдается сообщение Type mismatch
...
Рейтинг: 0 / 0
09.02.2009, 23:42
    #35807019
Vlaban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
плюс, когда запрос все-таки не влазит в редактор, приходится переходить на вторую страку, даже есил после ", т.е. следующий параметр уже не воспринимается к этой Array,т.е.

Код: plaintext
1.
Array("SELECT .....",
".....") - эта строка уже не воспринмается, выдается ошибка....
...
Рейтинг: 0 / 0
10.02.2009, 18:24
    #35809049
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Vlabanвыдается сообщение Type mismatchУбедись что КАЖДАЯ строка массива равна по длине максимальной длине строки. Меньше может быть только последний элемент массива. Убедись что суммарная строка после склейки будет нормальной sql командой.
Vlaban
Код: plaintext
1.
Array("SELECT .....",
".....") - эта строка уже не воспринмается, выдается ошибка....
А подчеркивания кто ставить будет? У всех потомков VB разбивка одной команды на несколько строк делается при помощи знака подчерка.
Код: plaintext
1.
2.
3.
aaa= Array("fisrt", _
     "second", _
     "fird" _
) ' конец строки

А вообще, я очень не рекомендую играться с супер-длинными sql-командами. Слишком много проблем. Лучше сделай хранимую процедуру или вьюшку и зови их из клиента.
...
Рейтинг: 0 / 0
10.02.2009, 22:15
    #35809353
Vlaban
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Спасиб, действительно, составил строку из 4-х блоков mysql1+mysql2+mysql3+mysql4
прокатило, в консоли, похоже есть ограничения для ActiveSheet.QueryTables(1).CommandText на 1024 символа. Через функцию, все ок.
С радостью бы запихнул все в процедуру, да только базу трогать нельзя, не моя, возможно будет апгрейд, востановление с бекапа и т.п. и потом могут вылезти бока...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
11.12.2012, 15:02
    #38074251
Gues
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Дико извиняюсь, но при вставке "? ActiveSheet.QueryTables(1).CommandText" в консоль и нажатии F5 вместо текста процедуры выскакивает диалоговое окно сохранения макроса. Может в описании пропущены какие то пункты которые не очевидны человеку впервые запустившему VBA ?

Заранее спасибо.
...
Рейтинг: 0 / 0
11.12.2012, 15:13
    #38074275
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Не вчитываясь в предыдущее... в консоли для выполнения команды надо нажимать Enter а не F5
...
Рейтинг: 0 / 0
11.12.2012, 15:27
    #38074299
Gues
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Subscript out of range
...
Рейтинг: 0 / 0
11.12.2012, 15:29
    #38074306
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
значит на этом листе нет созданных QueryTable
...
Рейтинг: 0 / 0
11.12.2012, 15:51
    #38074367
Gues
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Логично, но таблица точно заполняется по скрипту - закрываю документ открываю по новой обновляю данные, все работает. Да и текст запроса вытащить можно если надо...
...
Рейтинг: 0 / 0
11.12.2012, 16:54
    #38074513
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
Код: vbnet
1.
ActiveSheet.QueryTables(1)


1 точно один?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
13.10.2016, 16:56
    #39326490
Гость321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ?
White Owl Сергей062. Можно ли такимже образом изменять параметры запроса, если данные отображаются в ввиде сводной таблицы? В этом случае Команда ? ActiveSheet.QueryTables(1).CommandText выдает ошибку.Потому что сводная таблица это PivotTable а не QueryTable.

Значит ли это, что для этого нужно использовать ? ActiveSheet.PivotTables(1).CommandText или сводную таблицу получить по запросу с параметрами нельзя?
Не получается, пишет Object doesn't support this property or method
Не могу найти как для PivotTables это поле называется
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Кто знает, как дернуть из Экселя хранимую процедуру MS SQL ? / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]