Мегаобучалка Главная | О нас | Обратная связь


Открытие и закрытие DataSet



2020-03-19 170 Обсуждений (0)
Открытие и закрытие DataSet 0.00 из 5.00 0 оценок




Имеются два различных способа открыть таблицу во время выполнения программы. Можно написать следующую строку кода:

Table1.Open;

Или можно установить свойство Active равное True:

Table1.Active := True;

Нет никакого различия между результатом производимым этими двумя операциями. Метод Open, однако, сам заканчивается установкой свойства Active в True, так что может быть даже чуть более эффективно использовать свойство Active напрямую.

Также, как имеются два способа открыть a таблицу, так и есть два способа закрыть ее. Самый простой способ просто вызывать Close:

Table1.Close;

Или можно написать: Table1.Active := False;

 

Навигация (Перемещение по записям)

Большой набор методов и свойства TDataSet обеспечивает все, что нужно для доступа к любой конкретной записи внутри таблицы:

Обзор их функциональных возможностей описан ниже в таблице методов класса TDadaSet.

TDataSet.BOF - read-only Boolean свойство, используется для проверки, находится ли курсор в начале таблицы. Свойства BOF возвращает true в трех случаях:

· После того, как файл был открыт;

· После того, как вызвался метод TDataSet.First;

· После того, как не выполнился вызов метода TDataSet.Prior.

Первые два пункта - очевидны. Когда открывается таблица, Delphi помещает курсор на первую запись; когда вызывается метод First, Delphi также перемещает курсор в начало таблицы. Третий пункт, однако, требует небольшого пояснения: после того, как вызывался метод Prior несколько раз, курсор мог добраться до начала таблицы, и следующий вызов Prior будет неудачным - после этого BOF и будет возвращать True.

Следующий код показывает самый общий пример использования Prior, когда курсор попадает к первой записи:

while not Table.Bof do

Table1.Prior;

end;

Цикл будет продолжаться до тех пор, пока вызов Table1.Prior не сможет больше перемещать курсор на предыдущую запись в таблице. В этот момент BOF вернет True и программа выйдет из цикла.

Все сказанное относительно BOF также применимо и к EOF. Другими словами, код, приведенный ниже показывает простой способ пробежать по всем записям в a dataset:

Table1.First;

while not Table1.EOF do

Table1.Next;

end;

EOF возвращает True в следующих трех случаях:

· После того, как файл был открыт;;

· После того, как вызвался метод TDataSet.Last;

· После того, как не выполнился вызов метода TDataSet.Next

Единственная навигационная процедура, которая еще не упоминалась - MoveBy, которая позволяет переместиться на N записей вперед или назад в таблице. Если необходимо переместиться на две записи вперед, то следует написать следующий оператор:

MoveBy(2);

или

MoveBy(-2);

Prior и Next - это простые функции, которые вызывают MoveBy.

При использовании этой функции необходимо всегда помнить, что DataSet - это изменяющиеся объекты, и запись, которая была пятой по счету в предыдущий момент, теперь может быть четвертой или шестой или вообще может быть удалена...                                                           

Поля

В большинстве случаев, когда нужно получить доступ из программы к индивидуальные полям записи, можно использовать одно из следующих свойств или методов, каждый из которых принадлежат TDataSet:

 

property Fields[Index: Integer];

function FieldByName(const FieldName: string): TField;

property FieldCount;

 

Свойство FieldCount возвращает число полей в текущей структуре записи. Если необходимо программным путем прочитать имена полей, то используется свойство Fields для доступа к ним:

 

var

S: String;

begin

S := Fields[0].FieldName;

end;

Короче говоря, индекс передаваемый в Fields (начинающийся с нуля), и определяет номер поля к которому Вы получите доступ, т.е. первое поле - ноль, второе один, и так далее.

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

S := Fields[0].AsString;

Предположим, что первое поле в записи содержит номер заказчика, тогда код, показанный выше, возвратил бы строку типа “1021”, “1031” или “2058”. Если нужно получить доступ к этот переменный, как к числовой величине, тогда надо использовать AsInteger вместо AsString. Аналогично, свойство Fields включают AsBoolean, AsFloat и AsDate.

Можно использовать функцию FieldsByName вместо свойства Fields:

S := FieldsByName(‘CustNo’).AsString;

Как показано в примерах выше, и FieldsByName, и Fields возвращают те же самые данные. Два различных синтаксиса используются исключительно для того, чтобы обеспечить программистов гибким и удобным набором инструментов для программного доступа к содержимому DataSet.

Свойство Fields позволяет выбрать тип результата Вот список доступных методов который можно найти в описании класса TField:

property AsBoolean

property AsFloat

property AsInteger

property AsString

property AsDateTime   

Всякий раз (когда это имеет смысл), Delphi сможет сделать преобразования. Например, Delphi может преобразовывать поле Boolean к Integer или Float, или поле Integer к String. Но не будет преобразовывать String к Integer, хотя и может преобразовывать Float к Integer.

 



2020-03-19 170 Обсуждений (0)
Открытие и закрытие DataSet 0.00 из 5.00 0 оценок









Обсуждение в статье: Открытие и закрытие DataSet

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (170)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.005 сек.)