(изменено: Alex.spb, 21 июня 2007г. 11:38:41)

Тема: Пользователи в результате выборки

Что нужно написать в окошке редактора скриптов  :blink: , чтобы обратиться к выборке, возвращающей список пользователей?

           
                    set qSecretaries = ThisApplication.Queries("Q_Secretary")
                    qSecretaries.Permissions = SysAdminPermissions
                    qSecretaries.Parameter("param0") = rRow.Attributes("A_Group").Classifier
                    if qSecretaries.Objects.Count > 0 then
                               ...
                         end if

Подсчет количества записей в резльтате выборки (qSecretaries.Objects.Count ) правильно срабатывает. А, вот, как быть дальше? На qSecretaries.Objects.Item(0) или qSecretaries.Sheet.CellValue(1,1), или  qSecretaries.Users.Item(0) скрипт работу прекращает. Если включить игнорирование ошибок и после строчки qSecretaries.Sheet.CellValue(1,1).Description вывести код и описание ошибки, то получаем очень длинный отрицательный номер и описание: "Ошибка".

3.0.97

(изменено: Anatoly, 21 июня 2007г. 12:47:58)

Re: Пользователи в результате выборки

1. кол-вол объектов возврщаемых выборкой?
2. если 1-н, то нумерация индексов выборки начинается с 0. Т.е. правильно msgbox thissheet.cellvalue(0,0)

Выборка на которой тестировал в вложении. Скрипт выборки = 1 строка: msgbox thissheet.cellvalue(0,0)

P.S. TDMSSheet.Objects = TDMSObjects = коллекция объектов TDMS, а не коллекция пользователей. см. апи хелп.

Пользователи в результате выборки

(изменено: Alex.spb, 21 июня 2007г. 13:18:27)

Re: Пользователи в результате выборки

Спасибо за оперативность.

В результате выборки имеем от 0 до 3-х пользователей.


У вас сработал msgbox и вывел сисадмина?
У меня в скрипте msgbox qSecretaries.Sheet.cellvalue(0,0) не срабатывает. И msgbox qSecretaries.Sheet.cellvalue(0,0).Description - тоже.

В итоге не могу понять: TDMS не позволяет обращаться к объектам типа "пользователь" в результате выборки или позволяет, но я что-то делаю неправильно?

Пользователи в результате выборки

(изменено: Anatoly, 21 июня 2007г. 13:28:52)

Re: Пользователи в результате выборки

Alex.spb пишет:

У вас сработал msgbox и вывел сисадмина?

Вообще-то да.  и VarType(Sysadmin) = String

msgbox ThisSheet.cellvalue(0,0).Description

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

msgbox ThisSheet.Objects(0).Description

также мне выдаст описание объекта, которому просвоена роль.

P.S. напрямую к св-вам TDMSUser действительно достучаться нельзя, т.е. нет такого св-ва, как TDMSSheet.Users as TDMSUsers

Предлагаемые решения:
1. по cellValue, и дальше использовать

ThisApplication.Users(CellValue)

но это не совсем правильно, т.к. description пользователя не уникален.

Либо
2. Выводить в отдельную колонку идентификатор пользователя и искать уже по нему. Но! тут неудобство заключается в том, что будет лишняя колонка  :( Конечно её можно закрасить в белый цвет, но это получится "затычка"  :))))

P.P.S.

В итоге не могу понять: TDMS не позволяет обращаться к объектам типа "пользователь"

В том то всё и дело, что UserDef это не объект - это как бы раширенные св-ва пользователя.

Re: Пользователи в результате выборки

Спасибо, разобрался.
Дело в том, что я не выводил ни одной колонки в запросе. Т.е. результат-то (Query.Objects) выборка имеет, а вот Sheet пустой был - поэтому и не срабатывал мой код.

Re: Пользователи в результате выборки

;)