Создание SQL-скриптов (сценариев)

В программе, предусмотрена возможность работы с MS SQL сервером при помощи сценариев, написанных на языке "Transact-SQL" или запросов соответствующих стандарту SQL-92.

Возможность писать сценарии предоставляются отдельным пользователям, которым должен быть открыт доступ. О включении доступа

 

Внимание! Возможности программы по работе со сценариями, будет расширяться.

 

После того, как пользователь получит доступ к редактированию SQL-скриптов, он увидит кнопку «SQL-скрипт»  . При нажатии на эту кнопку будет открыто окно редактирования скрипта, либо как в случае со-справочниками , кнопки с точками  , каждая из которых соответствует одному из значений справочника.

Окно редактирования SQL- script

 

 

 

1. Сценарии на кнопку «Добавить»  в закладках.

Данные сценарии и их события находятся в таблице Contacts_SqlScript.

Тут важно знать имя закладки. Его можно узнать выполнив запрос типа:

select [Name] from pagename where NameRus='КНИГИ'

 

a) Срабатывающие до внесения строки.

Допустим, наименование закладки в базе- PageForCont1. ( Также следует помнить, что в зкаладках для добавления новой строки используются два варианта кнопок : «плюс»  и «уровень»  )

Событие на кнопку «плюс»  имеет префикс: tbAdd_Before_Level0, а на кнопку «уровень»  tbAdd_Before_Level1.

Тогда сложив tbAdd_Before_Level0 и имя закладки, получим имя для события до внесения строки для кнопки «плюс»  : tbAdd_Before_Level0PageForCont1

Пример сценария:

Declare @ SQL_SCRIPT nvarchar(4000)

set @SQL_SCRIPT ='select 2,'+char(39)+'Вы уверены что желаете создать новую строку?'+char(39)+',Null,'+char(39)+'Создание строки'+char(39)

insert Contacts_SqlScript (SQL_SCRIPT, Event) values (@SQL_SCRIPT,'tbAdd_Before_Level0PageForCont1')

Запрос сценария обязательно должен заканчиваться селектом из 1 строки и 4 колонок.

В первой колонке цифры 0, 1 или 2.

0 – не выводить никакого сообщения

1 – выводить информационное сообщение с кнопкой Ок

2 – выводить вопрос, при отрицательном ответе на который строка не будет внесена.

Во второй колонке текст сообщения если оно есть, если его нет, то ставятся кавычки.

В третьей колонке ставится дата, которая будет присовокуплена к вопросу.

В четвертой колонке ставится строка-заголовок для вопроса.

 

b) Срабатывающие по факту внесения строки.

Имя события составляется как префикс tbAdd и имя закладки (в нашем примере PageForCont1). Таким образом для нашего примера имя будет иметь вид: tbAddPageForCont1

Запрос сценария обязательно должен заканчиваться селектом из 1 строки и 3 колонок.

В первой колонке цифры 0 или 1.

0 – не выводить никакого сообщения

1 – выводить информационное сообщение с кнопкой Ок

Во второй колонке текст сообщения если оно есть, если его нет, то ставятся кавычки.

В третьей колонке ставится дата, которая будет присовокуплена к вопросу.

Пример:

declare @Sql nvarchar(4000), @Event varchar(250)

delete from Contacts_SqlScript where Event='tbAddPageForCont1'

set @Event='tbAddPageForCont1'

set @SQL='select '+char(39)+'1'+char(39)+','+char(39)+'Вы создали новую строку. Текущее число: '+','+'getdate()'

 

insert Contacts_SqlScript(Event, SQL_SCRIPT)

values(@Event, @SQL)

 

2. Сценарий на событие «Закрыть карточку».

Пример сценария:

INSERT HistoryContacts ([DATE], Message, id_user, id_contacts, id_usertask ) values (getdate(), 'Внесли закрытие '+cast(_NUMBER_CONTACTS_ as varchar(250)), _ID_USER_, _NUMBER_CONTACTS_, 0)

Данный сценарий записывает в историю контакта сообщение о том, что данный пользователь закрыл карточку.

при этом

_ID_USER_ - переменная, которая понимается программой как текущий пользователь

_NUMBER_CONTACTS_ - переменная, которая понимается программой как текущий контакт.

 

3. Сценарий на закрытие карточки редактирования внутри закладки.

Событие состоит из имени закладки и постфикса DeepCardClose.

Таким образом для закладки PageForCont1 имя события будет выглядеть как PageForCont1DeepCardClose.

Данный сценарий не возвращает никаких сообщений, то есть это сценарий исключительно для внесения каких либо данных в базу типа insert или update.

Сценарий понимает переменные:

_ID_PAGE_NUMBER_ - берет текущий номер строки в закладке

_NUMBER_CONTACTS_ - берет текущий контакт

_ID_USER_ - берет текущего пользователя

 

Пример:

Declare @n nvarchar(4000)

Set @n = ‘Какой-то мой insert’

insert Contacts_SqlScript (Event, SQL_SCRIPT)

values ('PageForCont1DeepCardClose',@n)

 

4. Сценарий на редактирование значения справочника, расположенного на лицевой части Карточки.

Данная возможность необходима в случае, если при выборе определенного значения из справочника должны выполняться дополнительные действия: создаваться напоминания пользователя, вноситься какие-либо строки в закладки и т.п.

Сценарий понимает переменные:

_NUMBER_CONTACTS_ - берет текущий контакт

_ID_USER_ - берет текущего пользователя

 

5. Сценарий на редактирование значения справочника из закладки.

Запрос будет выполняться по факту присвоения определенного значения из справочника.

Сценарий понимает переменные:

_ID_PAGE_NUMBER_ - берет текущий номер строки в закладке

_PAGE_NAME_ - берет текущую закладку

_NUMBER_CONTACTS_ - берет текущий контакт

_ID_USER_ - берет текущего пользователя

 

6. При внесении новых дат в закладках.

По факту внесения новых дат в закладках выполняется сценарий не возвращающий никаких значений. Данные сценарии находятся в таблице Page_SqlScript .

Переменные:

_ID_PAGE_NUMBER_ - воспринимается как текущая строка

_PAGE_NAME_ - воспринимается как текущая закладка

_COLUMN_NAME_ - воспринимается как текущий столбец

_ID_USER_ - воспринимается как текущий пользователь

 
© 2005 - 2015 A-Number Software. Все права защищены                          Написать письмо