|
![]() |
#1 |
Участник
|
Цитата:
Цитата:
![]() |
|
![]() |
#2 |
Участник
|
само собой. только ХП хранится в откомпилированном виде + для нее составляет оптимальный execution plan с использованием статистики запросов, использования индексов и прочая. И т.д.
|
|
![]() |
#3 |
Участник
|
Цитата:
![]() Цитата:
![]() p.s. Цитата:
![]() |
|
![]() |
#4 |
Участник
|
Цитата:
Само по себе это не является преимуществом (имхо
![]() Я думаю так называемый "план выполнения" составляется для каждого запроса перед его первым выполнением (если включено кеширование). Сервер не будет выполнять запрос не отпарсив его и не составив план его выполнения (естественно оптимизированный ![]() Кроме того, ХП - это гарантия защиты данных. Например, у пользователя есть права на выполнение ХП (на выходе какая-то выборка), а на сами таблицы - нет. Можно еще долго рассказывать про них. Цитата:
p.s.
Интересно ![]() |
|
![]() |
#5 |
Участник
|
Цитата:
p.s. За пример с excel'ем спасибо. На днях попробую попробовать ![]() |
|
![]() |
#6 |
Участник
|
Например, так:
в новом файле экселя запускаем импорт внешних данных (Данные-Импорт внешних данных-Импортировать данные...) На выходе получаем на листе объект QueryTable. Он нам и понадобится. Далее, допустим, надо построить отчет, на вход которого подается дата (например, товарные остатки на дату). Дата будет в ячейке $A$1 Тогда пишем следующий макрос и привязываем его к какой-нибудь кнопке на листе: Код: Dim dtmReport As Date Dim strSQL As String dtmReport = Range("$A$1").Value strSQL = "EXECUTE dbo.Proc_Get_Inventory " & "'" & Year(dtmReport) _ & "-" & Month(dtmReport) & "-" & Day(dtmReport) & "'" Range("D14").Select With Selection.QueryTable .RefreshStyle = xlInsertDeleteCells .Connection = Array(Array( _ "ODBC;Description=Navision;DRIVER=SQL Server;SERVER=192.168.1.1;UID=ВАШ ЛОГИН;;APP=Microsoft Data Access Components;WSID=MYWORKSTATION" _ ), Array("OV;DATABASE=MYCOMPANY")) .CommandText = Array(strSQL) .Refresh BackgroundQuery:=False End With |
|
![]() |
#7 |
Участник
|
Извините. Пропустил мимо тему.
Ну чтоб оправдаться что-нибудь добавлю от себя еще ![]() В "свойствах диапозона данных" запроса можно поиграть галками "Включить имена полей", "автоформат данных", "задать ширину столбца".... Тогда после обновления не будут выводиться имена полей из запроса, а будут оставаться ваши, которые вы можете отформатировать на свой "эстетический" вкус ![]() А так же не будут ширины столбцов прыгать после обновления, а будут оставаться такими, какими вы их зададите. |
|
![]() |
#8 |
Участник
|
|
|