-Музыка

 -Подписка по e-mail

 

 -Поиск по дневнику

Поиск сообщений в fixin

 -Сообщества

Читатель сообществ (Всего в списке: 1) Товарищ_Вагин

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 12.12.2002
Записей: 4343
Комментариев: 24598
Написано: 35607


Единый код для SQL и выражений

Вторник, 31 Октября 2006 г. 19:18 + в цитатник
В Outlook возможно быстрое получение записей (задач, контактов и т.п. по фильтру). У меня была задача сделать так, чтобы функция для фильтрации записей в SQL-запросе и функция проверки этого же параметра при обработке записи описывались только раз, без дублирования.
Например, я определил бы функцию "важные задачи" и "обычные задачи", запустил бы фильт "важные задачи или обычные задачи", а затем в тексте отчета для каждой полученной записи определял бы опять же с помощью  этой функции, является ли задача "важной" или "обычной" и проставлял бы этот флаг.
Суть прикола в том, что функция должна в первом случае выдавать код на языке запросов SQL, а в другом случае - на языке java-script.
Я-таки добился своего.
По контексту определяется, для чего используется функция.
Например, фильтр может быть таким:
function ImportantTask()
{
     //Только те задачи, что относятся к категори VIP
     A=Category("VIP");  
     //Только те задачи, что не закрыты
     B=Closed();             
     C=not(B)
     return And(A,C);
}
Тогда если эта функция вызывается для SQL-фильтра:
Category("VIP") вернет "outlook:Category='VIP'"
Closed() вернет "outlook:closed=1"
not(B) вернет "not(outlook:closed=1)"
And(A,C) вернет "(outlook:closed=1) and (not(outlook:closed=1))"

Если же функци вызывается на java-script, то будут осуществляться проверки текущего объекта I на категорию VIP, на закрытость задачи и т.п.
Таким образом, реализается базовый класс SQLQueryLanguage, от него наследуется новый класс, где содержатся определенные пользователем функции, например ImportantTask.
Если в родительском классе  SQLQueryLanguage установлен объект I, то все методы будут проверять свойства объекта I и возвращать логические значения.
В противном случае будут возвращаться строки.
Рубрики:  Outlook

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку