Создание SQL-меток

SQL-метка

В некоторых случаях необходимо, чтобы на Карточке могла выводиться дополнительная информация, которая не может быть получена с помощью стандартных компонентов программы. Для решения данной задачи предусмотрен компонент SQL-метка. Ее содержимое формируется при открытии Карточки, в зависимости от SQL-запроса который внесен в данный компонент.

Это могут быть сведения из закладок о состоянии контакта, какие – либо вычисляемые значения, или получать данные сигнализирующие об их изменении.

Запрос внесенный в метку должен возвращать одну строку и 2 столбца – первый столбец это текст метки, второй это цвет текста метки. Если цвет текста не указан в запросе он будет черным вне зависимости от того, какой задан в свойствах в редакторе. В конец запроса будет автоматически приписан текст “=:@id_contacts” который понимается программой как “взять текущий контакт”

Изменить текст запроса из интерфейса программы нельзя, для изменения следует удалить старый компонент и вставить новый. При необходимости именно изменить текущий запрос следует знать, что текст запроса хранится в таблице CONTACTS_DESIGN в поле SqlLabel и может быть отредактирован любыми административными средствами MS SQL.

Как составить запрос. Пусть например вычисляется количество дней, прошедшее после последнего внесения даты и если прошло более 10 дней метка из обычной черной становится красной. Наименования или кодовые последовательности, соответствующие цветам можно получить, просто повозившись со свойствами компонента в карточке и сохранив их через буфер.

Первое что нужно узнать – это имена полей таблицы контактов, а если нужна информация из закладок, то имена закладок и столбцов в закладках.

-- этим запросом узнаем имена полей в таблице контактов

select Field, Field_Name, Guide from Field_Name

Если в поле Guide содержится 1, то значит это поле справочник, и его значение находится в таблице MultiGuide, а в самом поле будет просто цифровое значение.

--этим запросом узнаем имена закладок

select Name, NameRus from PageName where DeletePages=0

-- зная имя закладки можно узнать ее поля (они же столбцы):

select Field, FieldRus from PageField where DeletePages=0 and PageName='PageForCont28'

Поля закладок находятся в столбце “Field”. Так они представлены в виде цифр не забывайте при использовании в запросах заключать их в квадратные скобки, например если поле “1” то в запросе оно будет иметь вид [1] (единица в квадратных скобках).

В нaшем случае нужный столбец находится в главной таблице и называется DateEdit1.

select Res,

case

when Res>10 then 'clRed'

else 'clBlack'

end

from

(select

case datepart(yy,DateEdit1)

when 1900 then ''

else cast(DATEDIFF (dd, DateEdit1, getdate()) as varchar(10))

end as Res

from contacts) as A

where id_contacts


Данный запрос заканчивается на where id_contacts потому что далее автоматически вставиться =@id_contacts в итоге получится строка where id_contacts=:@id_contacts

Если бы были какие либо условия после where запрос следовало бы закончить на ключевом слове and id_contacts. Например тут условие ничего не показывать для результатов равных 0:

select

Res,

case

when Res>10 then 'clRed'

else 'clBlack'

end

from

(select

case datepart(yy,DateEdit1)

when 1900 then ''

else cast(DATEDIFF (dd, DateEdit1, getdate()) as varchar(10))

end as Res

from contacts) as A

where isnull(Res,0)<>0 and id_contacts
 
© 2005 - 2015 A-Number Software. Все права защищены                          Написать письмо