Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Косяк в VCL? (TAdoDataSet & filter) 
:(
    Опции темы
CROTishka
Дата 24.2.2010, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: 1
Всего: 2



В фильтре "COLUMN_NAME > 0"
По кнопке пишем:
Код

              Edit;
              FieldByName(COLUMN_NAME).Value := -10;
              Post;

на последней оставшейся видимой строке падает с:
Код

---------------------------
Debugger Exception Notification
---------------------------
Project ****.exe raised exception class EOleException with message 'BOF или EOF имеет значение True, либо текущая запись удалена. Для выполняемой операции требуется текущая запись'.
---------------------------
Break   Continue   Help   
---------------------------

падение происходит из-за вызова 

procedure TDataSet.SetCurrentRecord(Index: Integer);

из
procedure TCustomADODataSet.InternalPost; 
а кнкретно из её внутренней пр-ры
Код

  procedure CheckForFlyAway;
  begin
    if BookmarkSize > 0 then
    try
      { Check for fly away }
      Recordset.Bookmark := Recordset.Bookmark;
      if Recordset.EOF or Recordset.BOF then
      begin
        { If recordset is empty, then this prevents an error calling InternalFirst }
        if not Recordset.BOF and Recordset.Supports(adMovePrevious) then
          Recordset.MovePrevious;
        { Reposition to last record we were on }
        CursorPosChanged;
        UpdateCursorPos;
      end;
    except
      CursorPosChanged;
    end;
  end;

Reposition to last record we were on 
Но эта строчка у нас уже невидима, это и вызывает ошибку.
Есть у вас какие-нибудь соображения?

Это сообщение отредактировал(а) CROTishka - 24.2.2010, 15:42
PM MAIL   Вверх
CROTishka
Дата 24.2.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 30.7.2009

Репутация: 1
Всего: 2



Лечится крокодилом:
Код

              PBookmark := GetBookmark;
              DisableControls;
              Filtered := false;
              GotoBookmark(PBookmark);
              Edit;
              Value := -Value;
              Post;
              Filtered := true;
              EnableControls;
              FreeBookmark(PBookmark);

Но как-то не айс.
Да, совсем забыл про версию: BDS2006, билд 2600, 2ой сервиспак.
дома проверю, как в более поздних версиях.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.