Инструменты пользователя

Инструменты сайта


Боковая панель

Если вам не пришло письмо с регистрационными данными, проверьте папку «Спам»

Новости:

09 мая 2020
* Новая версия DataExpress



Обратная связь

Wiki-синтаксис
Как написать хорошую статью
Полигон

programmirovanie_v_dx:nabor_dannyx

8. Набор данных формы

Открытие набора данных формы

Если форма создается программой, то набор данных открывается автоматически. Если форма создается в скрипте, то открывать надо самостоятельно. Для этого можно воспользоваться одним из следующих методов: Open, OpenRecord и OpenRecords.

Open

Open – загружает данные так, как это делает программа. Если предустановки фильтра не определены, то загружаются все данные, иначе – набор записей определяется предустановкой фильтра, находящейся первой в списке предустановок (см. свойство формы "Предустановки фильтра").

OpenRecord

OpenRecord(RecId: Integer) – загружает одну запись с определенным Id. Используется также для добавления записей:

...
Fm := TdxForm.Create('Заявки');
Fm.OpenRecord(0); // Открываем пустой набор данных для добавления записей
Fm.Append;
…
Fm.Post;

Вместо 0 может быть любой несуществующий ID записи.

OpenRecords

OpenRecords(const Filter: String; Form: TdxForm; SelectCondition: Boolean) – загружает набор записей, определенный фильтром. Синтаксис фильтра такой же, как синтаксис условия отбора записей в настройках прав доступа.

Имя поля формы-источника указывается в квадратных скобках. Операция сравнения: =|<>|<|⇐|>|>=|==|#. Выражение – полноценное выражение. В выражении можно обращаться к полям формы, которая указана во втором параметре метода. Если в выражении нет полей, то во втором параметре метода указывается nil. Пример:

Self.OpenRecords('[Дата]>="02.03.2016" & [Дата]<=Date', nil, False);
AnyForm.OpenRecords('[Дата]>=[Начальная дата] & [Дата]<=[Конечная дата]', Self, False);

Если выражение содержит знаки & или |, то выражение берется в скобки:

Self.OpenRecords('[название]=("Tom & Jerry") | [название]="Ну, погоди!"', nil, True);

Третий параметр определяет, будет ли учитываться условие отбора, заданное для этой формы в настройках роли. True – условие отбора учитывается, т. е. к указанному фильтру будет добавляться (операцией AND) условие отбора. Более подробную информацию об условии отбора читайте в справке в разделе Управление доступом-Условие отбора. Методы вызывают следующие события:

  • OnBeforeOpen – событие до чтения записей,
  • OnAfterOpen – событие после считывания записей. После чтения вызывается событие
  • OnAfterScroll даже если нет записей.

Закрытие набора данных

Набор данных закрывается методом Close. Обычно это необходимо делать, когда вы создаете форму в скрипте, чтобы освободить занятую оперативную память. Метод вызывает события

  • OnBeforeClose - событие до закрытия набора данных, OnAfterClose – событие после закрытия набора данных.

При уничтожении формы методом Free, закрытие набора данных производится автоматически.

Определение количества записей в форме (RecordCount)

Метод RecordCount возвращает количество загруженных в набор данных записей. Однако стоит иметь в виду, что данные загружаются из базы не все, а порциями по мере надобности. Таким образом сразу после загрузки данных RecordCount может вернут, к примеру, 20 записей. Но при переходе на 20-ю запись подгружается еще порция данных, получается уже 40, и т. д. Чтобы определить реальное количество загружаемых записей, нужно вызвать метод MoveLast. Метод MoveLast способствует загрузке всего набора записей.

Обновление данных формы (Refresh)

Метод Refresh обновляет данные формы. Она последовательно вызывает Close и Open (!). Это значит, что если вы программно читаете данные методами OpenRecord или OpenRecords, то Refresh вызывать нельзя, т. к. будет вызван метод Open.

programmirovanie_v_dx/nabor_dannyx.txt · Последние изменения: 2019/04/03 08:36 — 7bit