• Авторизация


Единый код для SQL и выражений 31-10-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 и возвращать логические значения.
В противном случае будут возвращаться строки.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Единый код для SQL и выражений | fixin - Дневник fixin | Лента друзей fixin / Полная версия Добавить в друзья Страницы: раньше»