AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.04.2008, 10:03   #1  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Технологии как Искусство Посмотреть сообщение
а что будет если написать так:
Код:
intID := adoRec.Fields.Item('id').Value;
MESSAGE('%1', intID);
?
Спасибо, так работает.

Цитата:
Сообщение от Технологии как Искусство Посмотреть сообщение
ХП позволяют реализовать сложную логику, например, в отчетах...
Ну об этом то преимуществе мне известно, я о нем сразу и сказал. А вот
Цитата:
Сообщение от Технологии как Искусство Посмотреть сообщение
...+ выполняются на стороне сервера.
это не понятно. Запросы тоже выполняются на стороне сервера
Старый 17.04.2008, 10:06   #2  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
Цитата:
Сообщение от smoyk Посмотреть сообщение
Спасибо, так работает.

Ну об этом то преимуществе мне известно, я о нем сразу и сказал. А вотэто не понятно. Запросы тоже выполняются на стороне сервера
само собой. только ХП хранится в откомпилированном виде + для нее составляет оптимальный execution plan с использованием статистики запросов, использования индексов и прочая. И т.д.
Старый 17.04.2008, 10:58   #3  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Технологии как Искусство Посмотреть сообщение
само собой. только ХП хранится в откомпилированном виде...
Само по себе это не является преимуществом (имхо). Успешная компиляция гарантирует только отсутствие синтаксических ошибок.
Цитата:
Сообщение от Технологии как Искусство Посмотреть сообщение
...+ для нее составляет оптимальный execution plan с использованием статистики запросов, использования индексов и прочая. И т.д.
Я думаю так называемый "план выполнения" составляется для каждого запроса перед его первым выполнением (если включено кеширование). Сервер не будет выполнять запрос не отпарсив его и не составив план его выполнения (естественно оптимизированный).

p.s.
Цитата:
Сообщение от Технологии как Искусство Посмотреть сообщение
Что касается отчетов в экселе, то тут и впрямь сам NAV не нужен. Нужна ХП, и функционал экселя. ("Импорт внешних данных").

Если интересно, могу показать пример
Интересно Я у randrews спрашивал как это делается, но он промолчал((
Старый 17.04.2008, 11:42   #4  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
Цитата:
Само по себе это не является преимуществом (имхо). Успешная компиляция гарантирует только отсутствие синтаксических ошибок.
Я думаю так называемый "план выполнения" составляется для каждого запроса перед его первым выполнением (если включено кеширование). Сервер не будет выполнять запрос не отпарсив его и не составив план его выполнения (естественно оптимизированный).
Только для запроса он составляется каждый раз, а для ХП - только во время первого запуска.
Кроме того, ХП - это гарантия защиты данных. Например, у пользователя есть права на выполнение ХП (на выходе какая-то выборка), а на сами таблицы - нет.
Можно еще долго рассказывать про них.

Цитата:
p.s.
Интересно Я у randrews спрашивал как это делается, но он промолчал((
чуть позже выложу.
Старый 17.04.2008, 12:35   #5  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от Технологии как Искусство Посмотреть сообщение
Только для запроса он составляется каждый раз, а для ХП - только во время первого запуска.
Вы не правы. Для запроса он кешируется точно так же, как и для ХП. Попробуйте на сервере выполнить один и тот же запрос несколько раз. Первый раз он будет выполняться значительно дольше - идет парсинг и построение плана выполнения, компиляции и др. Последующие разы он будет выполняться гораздо быстрее (разница иногда на порядки) в том числе и потому, что не тратится время на построение плана выполнения. Берется уже существующий. Все планы сохраняются в системной таблице syscacheobjects, откуда затем и извлекаются оптимизатором.

p.s. За пример с excel'ем спасибо. На днях попробую попробовать
Старый 17.04.2008, 12:02   #6  
Технологии как Искусство is offline
Технологии как Искусство
Участник
 
37 / 10 (1) +
Регистрация: 04.02.2008
Цитата:
Сообщение от smoyk Посмотреть сообщение
Интересно Я у randrews спрашивал как это делается, но он промолчал((
Например, так:
в новом файле экселя запускаем импорт внешних данных (Данные-Импорт внешних данных-Импортировать данные...)
На выходе получаем на листе объект 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
Запускаем макрос, получаем данные. Вместо ХП в переменную strSQL можно написать какой-нибудь свой запрос.
Старый 17.04.2008, 18:04   #7  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от smoyk Посмотреть сообщение
Интересно Я у randrews спрашивал как это делается, но он промолчал((
Извините. Пропустил мимо тему.
Ну чтоб оправдаться что-нибудь добавлю от себя еще

В "свойствах диапозона данных" запроса можно поиграть галками "Включить имена полей", "автоформат данных", "задать ширину столбца"....
Тогда после обновления не будут выводиться имена полей из запроса, а будут оставаться ваши, которые вы можете отформатировать на свой "эстетический" вкус
А так же не будут ширины столбцов прыгать после обновления, а будут оставаться такими, какими вы их зададите.
Старый 18.04.2008, 05:27   #8  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Цитата:
Сообщение от randrews Посмотреть сообщение
Извините. Пропустил мимо тему.
Ничего, бывает...
Спасибо за советы.
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 23:31.