а, да, на заметку - тут пойдёт о "родных" базах данных Лотуса, а не о ODBC (я вообще не ебу, что это, но мануал говорит, что такие есть =))
@DbColumn возвращает список значений всех строк указанного представления, ханящегося на таком-то сервере в такой-то базе данных в столбце с указанным номером; стоит отметить, что "скрытые" (не отображаемые для пользователя) столбцы он тоже учитывает - имейте это ввиду, указывая номер столбца.
@DbColumn( class : cache ; server : database ; view ; columnNumber )
class - класс базы данных (тот самый страшный ОДЭБЭЦ указывается здесь, есличё, ну а пока эту строку можно оставлять пустой, либо, для тру-приверженцев Нотуса ставить "Notes"
cache - кэширование данных (т.е. оно может вам брать значения из кэша, а не из самого представления, что иногда чревато =) )
"" - кэшировать будет
"ReCache" - как я понял, кэшировать будет, но сначала кэшик обновит для надёжности
"NoCache" - кэшировать не будет
server:database - имя сервера и базы данных, в котором хранится необходимое нам представление
view- имя представления, значения из столба которого нам необходимы
columnNumber - номер столбца в представлении, значения строк которого нам почему-то понадобились
ex @DbColumn("":"NoCache"; @DBName; "users"; 1); вернёт, к примеру, строковой список имён пользователей в текущей базе данных при условии существования представления users и наличия в этом представлении первого столбца с значением имён пользователей
@DbLookup делает то же, что и предыдущий, но использует группировку и может искать значения по именам полей, а не номерам столбцов (в этом случае даже не обязательно, чтобы столбец со значением данного поля был в представлении)
то есть данная функция берёт не все строки представления, а строки для группы, указанной параметром key.
отгруппированый столбец должен быть первым, иначе выходит хрень
@DbLookup( class : cache ; server : database ; view ; key ; fieldName ; keywords )
@DbLookup( class : cache ; server : database ; view ; key ; columnNumber ; keywords)
всё тоже самое, что и у @DbColumn, за исключением некоторых дополнений:
key - значение "ключевого" столбца (столбец, который отгруппирован)
fieldName - имя поля документа, значение которого нам необходимо
keywords - некоторые дополнительные опции (если нуж указать несколько)
[FAILSILENT] - есличё, вместо ошибки возвращает пустую строку
[PARTIALMATCH] -
[RETURNDOCUMENTUNIQUEID] - возвращает не значения полей/столбцов, а UIND - уникальный идентификатор документа, очень полезная штука, надо сказать, но об этом позже, потому как я не разобрался ещё)))
развёрнутый пример
1. создадим новую форму с двумя текстовыми полями - name, содержащее имя пользователя и comment, содержащее краткий комментарий:
создадим несколько документов с разными именами пусть будут
Жанна, Женя, Вася, Кузя, Витя, Коля, Дима, Даша и Денис
2. создадим представление (назовём его ex_vw )с тремя столбами:
-первая буква имени (@Left(name,1);) сразу категоризируем этот столбец (вторая закладка, type: Categorized)
-имя (name)
-комментарий (comment)

при просмотре должно получиться следующее:

то есть у нас получилась группировка имён по первым буквам
3. перейдём в нашу форму и изменим поле comments:
-тип поля DialogList
-значения элементов задаются формулой (Use formula for choises), записываем формулу:
@DbLookup("":"NoCache";@DbName;"ex_vw";"к";"name")+" - цука личность"

то есть у нас будут значения, содержащиеся в подгруппе "к" (подгруппа у нас задана как первая буква имени), стало быть - все имена, начинающиеся на "к" - наши =) результат выбора комментария должен быть таким:

кто не наигрался - добавьте поле alpha на эту форму, задайте тип DialogList, список элементов - Use Formula for choises и вбейте туда следующую формулу:
@DbColumn("":"NoCache";@DbName;"ex_vw";1)
то есть тут значения будут - те самые первые буквы имён, что у нас в базе вообще есть. А формулу поля comment немножко изменим:
@DbLookup("":"NoCache";@DbName;"ex_vw";alpha;"name")+" - цука личность"
то есть данная штука будет брать имена начинающиеся на ту букву, которую мы выберем в поле alpha =); для полного счастья не забудьте поставить галочки в настройках Refresh choises on document refresh (обновить список элементов при обновлении документа) у поля comment и Refresh fields on keyword change (обновить поля при изменении значения) поля alpha; мну всё работает =)

Комментариев нет:
Отправить комментарий