Показать сообщение отдельно
Старый 20.07.2004, 20:55   #13  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Есть два варианта.

Первый:
PHP код:
void clicked()
{
    
InventTrans InventTransDB InventTrans::findTransId("л00000268");
    
InventTrans InventTransDS;
    ;
    
super();

    
InventTransDS InventTrans_ds.getFirst(0false);

    while (
InventTransDS.RecId != InventTransDB.RecId &&
           
InventTransDS) {
        
InventTransDS InventTrans_ds.getNext();
    }

    if (
InventTransDS)
        
InventTrans_ds.findRecord(InventTransDB);
    else {
        
InventTrans_ds.create(true);
        
InventTrans_ds.cursor().data(InventTransDB);
        
InventTrans_ds.setCurrent();
    }

Здесь сначала происходит поиск среди записей, уже загруженных в displayCache. Если нужной записи не находится, в FormDataSource создается новая строка и заполняется данными из необходимой записи.

Плюс подхода в том, что видны записи, уже имеющиеся в displayCache, а к ним добавляется только нужная запись. Минус - если просмотреть dataSource до конца, в displayCache появится две одинаковых записи, и, соответственно, в Grid тоже будет две одинаковых записи, что вводит в заблуждение.

Второй вариант:
PHP код:
void clicked()
{
    
InventTrans InventTransDB InventTrans::findTransId("л00000268");
    ;
    
super();

    
select InventTrans where InventTrans.RecId == InventTransDB.RecId;

Плюсы подхода в отсутствии минусов предыдущего. Минусы - целиком перезаписывается displayCache. Причем в него заносится только одна запись.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me