Показать сообщение отдельно
Старый 14.07.2006, 10:02   #15  
simply2double is offline
simply2double
Участник
Аватар для simply2double
 
556 / 19 (2) ++
Регистрация: 08.09.2004
Адрес: alfa cen
а вот интересно...
Быстренько сделал простейший примерчик лукапа из двух табличек, типа паказать пользователей из группы админов.


Код:
public void lookup()
{
    SysTableLookup             sysTableLookup = SysTableLookup::newParameters(tableNUm(UserInfo),this);
    Query                            query = new Query();
    QueryBuildDataSource    queryBuildDataSource;
    QueryBuildRange            queryBuildRange;

    ;

    queryBuildDataSource = query.addDataSource(tableNum(UserInfo));
    queryBuildDataSource = queryBuildDataSource.addDataSource(tableNum(UserGroupList));
    queryBuildDataSource.joinMode(JoinMode::InnerJoin);
    queryBuildDataSource.fetchMode(QueryFetchMode::One2One);
    queryBuildDataSource.relations(true);


    queryBuildRange = queryBuildDataSource.addRange(fieldNum(UserGroupList, groupId));
    queryBuildRange.value("Admin");

    sysTableLookup.addLookupfield(fieldNum(UserInfo, Id));
    sysTableLookup.addLookupfield(fieldNum(UserInfo, Name));
    sysTableLookup.addLookupfield(fieldNum(UserInfo, Enable));
    sysTableLookup.addLookupfield(fieldNum(UserGroupList, groupId));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}
в лукапе в четвертом столбце вывелось совсем не код группы, а поле из таблицы UserInfo. Посмотрел на сформированный SQL запрос, отладчике:

Код:
SELECT * FROM UserGroupList WHERE UserInfo.id = UserGroupList.userId AND ((groupId = Admin))
стало еще интересней

не поленился, посмотрел в профайлере сиквела что получает сервер:

Код:
exec sp_cursorprepexec @P1 output, @P2 output, N'@P1 varchar(1000)', N'SELECT A.ID,A.NAME,
A.ENABLE,A.RECVERSION,101090,B.USERID,B.GROUPID,B.MODIFIEDDATE,B.MODIFIEDTIME,
B.MODIFIEDBY,B.CREATEDDATE,B.CREATEDTIME,B.CREATEDBY,B.RECVERSION,B.RECID 
FROM USERINFO A WITH( NOLOCK),USERGROUPLIST B WITH( NOLOCK) 
WHERE ((B.GROUPID=@P1) AND (A.ID=B.USERID)) ORDER BY A.ID OPTION(FAST 1)', 
@P3 output, @P4 output, @P5 output, 'Admin'
вроде в селекте возвращаются поля обеих таблиц. так вот вопрос, почему код группы не выводится с раскрытом списке локапа???
За это сообщение автора поблагодарили: DTD (1).