Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Презентация "Локальные базы данных в Delphi"

Презентация "Локальные базы данных в Delphi"

В презентации сопровождающий материал для лекции по предмету "Локальные базы данных". Тема "Работа с таблицами и данными".

12.01.2017

Содержимое разработки

Работа с таблицами и данными Локальные базы данных в Delphi

Работа с таблицами и данными

Локальные базы данных в Delphi

Редактор полей Fields Editor DefaultFields : Tboolean

Редактор полей Fields Editor

  • DefaultFields : Tboolean
С помощью Редактора полей разработчик может выполнить следующие операции создать новое статическое поле; удалить статическое поле; изменить порядок следования статических полей.

С помощью Редактора полей разработчик может выполнить следующие операции

  • создать новое статическое поле;
  • удалить статическое поле;
  • изменить порядок следования статических полей.
Существует три типа статических полей: поле данных, связанное с соответствующим физическим полем таблицы; вычисляемое поле, значение которого рассчитывается в обработчике события onCalcFields во время выполнения приложения; поле выбора, значение которого можно выбирать из списка, формируемого на основе заданных критериев и правил.

Существует три типа статических полей:

  • поле данных, связанное с соответствующим физическим полем таблицы;
  • вычисляемое поле, значение которого рассчитывается в обработчике события onCalcFields во время выполнения приложения;
  • поле выбора, значение которого можно выбирать из списка, формируемого на основе заданных критериев и правил.
Метод OnCalcFields выполняется при открытии набора данных, при переходе в режим редактирования, при передаче фокуса между компонентами отображения данных или колонок сетки, при удалении записи. Но для этого нужно, чтобы свойство AutoCalcFields набора данных было равно значению True.

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

Вычисляемые поля нельзя использовать при фильтрации набора данных при помощи метода-обработчика onFilterRecord , т. к. он вызывается до метода-обработчика OnCalcFields , а вычисляемые поля не сохраняются.

Вычисляемые поля нельзя использовать при фильтрации набора данных при помощи метода-обработчика onFilterRecord , т. к. он вызывается до метода-обработчика OnCalcFields , а вычисляемые поля не сохраняются.

Набором данных в Delphi называется группа записей из одной или нескольких таблиц БД, доступная через компоненты Table и Query .

Набором данных в Delphi называется группа записей из одной или нескольких таблиц БД, доступная через компоненты Table и Query .

Обращение к полю   по имени поля при помощи метода FieldByName;  формат: Function FieldByName(const FieldName:string):TField;  Например: Table1.FieldByName(‘Fam’); по номеру поля при помощи свойства Fields.  Для обращения к полю по его номеру используется свойство Fields[I:integer]:TField компонентов Table и Query, где i- это номер поля (нумерация начинается с нуля).  Например: Table1.Fields[1] // если поле Fam второе по счету.

Обращение к полю

  • по имени поля при помощи метода FieldByName;

формат: Function FieldByName(const FieldName:string):TField;

Например: Table1.FieldByName(‘Fam’);

  • по номеру поля при помощи свойства Fields.

Для обращения к полю по его номеру используется свойство Fields[I:integer]:TField компонентов Table и Query, где i- это номер поля (нумерация начинается с нуля).

Например: Table1.Fields[1] // если поле Fam второе по счету.

Обращение к значению поля   К значению поля можно обратиться через свойства Value или AsXXXX  Свойство AsBoolean Тип Обозначение Boolean AsDataTime AsInteger служит для приведения к типу Boolean TDataTime AsFloat служит для приведения к типу DataTime Integer AsString служит для приведения к типу LongInt Double служит для приведения к типу Real String служит для приведения к типу String

Обращение к значению поля

К значению поля можно обратиться через свойства Value или AsXXXX

Свойство

AsBoolean

Тип

Обозначение

Boolean

AsDataTime

AsInteger

служит для приведения к типу Boolean

TDataTime

AsFloat

служит для приведения к типу DataTime

Integer

AsString

служит для приведения к типу LongInt

Double

служит для приведения к типу Real

String

служит для приведения к типу String

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

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

Procedure TForm1.Button1Click(Sender : TObject); Var N:Integer; Begin With Table1 do Begin IndexFieldNames:=’Tab_n’; // назначаем текущим индексом – индекс по полю Tab_n, т.е. упорядочиваются записи таблицы по полю Tab_n. Last; //  переход на последнюю запись таблицы N:=FieldByName(’Tab_n’).AsInteger; //  считывается последнее значение Append; //  добавляется пустая запись FieldByName(’Tab_n’).AsInteger:=n+1; // присваивается значение поля Tab_n для новой записи End; End;

Procedure TForm1.Button1Click(Sender : TObject);

Var N:Integer;

Begin

With Table1 do Begin

IndexFieldNames:=’Tab_n’; // назначаем текущим индексом – индекс по полю Tab_n, т.е. упорядочиваются записи таблицы по полю Tab_n.

Last; // переход на последнюю запись таблицы

N:=FieldByName(’Tab_n’).AsInteger; // считывается последнее значение

Append; // добавляется пустая запись

FieldByName(’Tab_n’).AsInteger:=n+1; // присваивается значение поля Tab_n для новой записи

End; End;

Форматированный ввод и вывод значений поля   Поля набора данных можно форматировать, т.е. выводить в нужном формате, используя свойство DisplayFormat: string ; и вводить по требуемой маске, используя свойство EditMask: string или EditFormat: string.

Форматированный ввод и вывод значений поля

Поля набора данных можно форматировать, т.е. выводить в нужном формате, используя свойство DisplayFormat: string ; и вводить по требуемой маске, используя свойство EditMask: string или EditFormat: string.

Маска представляет собой символьную строку. Она состоит из 3-х частей: собственно маска; символ, определяющий будут ли литералы (символ после указания «\») включаться в форматируемое значение как его часть (если 1 – то будут, если 0 – то не будут); символ, используемый в маске для представления пробела.

Маска представляет собой символьную строку. Она состоит из 3-х частей:

  • собственно маска;
  • символ, определяющий будут ли литералы (символ после указания «\») включаться в форматируемое значение как его часть (если 1 – то будут, если 0 – то не будут);
  • символ, используемый в маске для представления пробела.
Все следующие символы будут на верхнем регистре, пока не встретиться Все следующие символы будут на нижнем регистре, пока не встретиться L Регистр не проверяется (остается так, как ввел пользователь) В данной позиции должен быть только символ алфавита A В данной позиции должен быть символ алфавита или цифра a Аналогично «А», но символ может отсутствовать C В позиции обязателен символ 0 В позиции обязателен цифровой символ 9 В позиции должен быть цифровой символ или никакой " width="640"

Символы, которые могут входить в маску ВВОДИМОЙ строки

Символ

Значение

!

Подавляются ведущие пробелы

Все следующие символы будут на верхнем регистре, пока не встретиться

Все следующие символы будут на нижнем регистре, пока не встретиться

L

Регистр не проверяется (остается так, как ввел пользователь)

В данной позиции должен быть только символ алфавита

A

В данной позиции должен быть символ алфавита или цифра

a

Аналогично «А», но символ может отсутствовать

C

В позиции обязателен символ

0

В позиции обязателен цифровой символ

9

В позиции должен быть цифровой символ или никакой

# В позиции должен быть цифровой символ, плюс или минус или никакой : Разделитель часов, минут, секунд для значения типа время / Разделитель месяца, дня и года в датах \ Следующий за ним символ является литералом, т.е. включается в форматируемое значение _ Заменитель пробела в маске ; Разделитель частей маски

#

В позиции должен быть цифровой символ, плюс или минус или никакой

:

Разделитель часов, минут, секунд для значения типа время

/

Разделитель месяца, дня и года в датах

\

Следующий за ним символ является литералом, т.е. включается в форматируемое значение

_

Заменитель пробела в маске

;

Разделитель частей маски

Примеры: Пусть Table1.Fields[4].EditMask:=’!\(999\)000\-00\-000;1’; При введении в поле значения: 0952223344 на экране оно будет представлено в следующем виде: (095)222-33-44. Пусть Table1.Fields[2].EditFormat:=’##.#’; При вводе значения 134.52 отобразится в поле как 134.5

Примеры:

Пусть Table1.Fields[4].EditMask:=’!\(999\)000\-00\-000;1’;

При введении в поле значения: 0952223344 на экране оно будет представлено в следующем виде: (095)222-33-44.

Пусть Table1.Fields[2].EditFormat:=’##.#’;

При вводе значения 134.52 отобразится в поле как 134.5

Символы, управляющие ВВОДОМ информации (для DisplayFormat) Спецификатор Назначение 0 Число. Если незначащий разряд =0, то показывать его # Число. Если незначащий разряд =0, то не показывать его . Десятичная точка, разделяет целую и дробную часть числа , Разделитель тысяч ; Разделяет положительное, отрицательное и нулевое значение E Научный формат действительных чисел

Символы, управляющие ВВОДОМ информации (для DisplayFormat)

Спецификатор

Назначение

0

Число. Если незначащий разряд =0, то показывать его

#

Число. Если незначащий разряд =0, то не показывать его

.

Десятичная точка, разделяет целую и дробную часть числа

,

Разделитель тысяч

;

Разделяет положительное, отрицательное и нулевое значение

E

Научный формат действительных чисел

Форматируемые числа: 987345,342  и 0,29 Формат Выводимое значение 1 Не форматировано Выводимое значение 2 987345.342 0 987345 0.29 0.00 0 987345.34 # 987345 0.29 #.## 987345.34 #,##0.00 987,345.34 .27 #.###E+00 0.27 9,873E+0.5 2.700E-1

Форматируемые числа: 987345,342 и 0,29

Формат

Выводимое значение 1

Не форматировано

Выводимое значение 2

987345.342

0

987345

0.29

0.00

0

987345.34

#

987345

0.29

#.##

987345.34

#,##0.00

987,345.34

.27

#.###E+00

0.27

9,873E+0.5

2.700E-1

Основные свойства набора данных Свойство Тип RecordCount Обозначение integer RecNo integer число записей в наборе данных; BOF номер текущей записи; boolean EOF boolean определяет начало набора данных (если курсор установлен на первую запись набора данных, то BOF=true); определяет конец набора данных (если курсор установлен на последнюю запись набора данных EOF=true).

Основные свойства набора данных

Свойство

Тип

RecordCount

Обозначение

integer

RecNo

integer

число записей в наборе данных;

BOF

номер текущей записи;

boolean

EOF

boolean

определяет начало набора данных (если курсор установлен на первую запись набора данных, то BOF=true);

определяет конец набора данных (если курсор установлен на последнюю запись набора данных EOF=true).

0, и к началу НД, если N" width="640"

Методы навигации

Метод

Выполняемые действия

Procedure First

Устанавливает курсор на первую запись НД

Procedure Last

Устанавливает курсор на последнюю запись НД

Procedure Next

Перемещает курсор на следующую запись НД

Procedure Prior

Перемещает курсор на предыдущую запись НД

Function MoveBy (N:integer):integer

Перемещает курсор на N записей к концу НД, если N0, и к началу НД, если N

Замечания: При перемещении по записям возникает событие AfterScroll . Набор данных – понятие логическое, а не физическое. Порядок следования записей в таблице определяется установленным индексом, обуславливающим сортировку, поэтому первая, последняя и текущая запись (ее номер) зависят от установленного индекса.

Замечания:

  • При перемещении по записям возникает событие AfterScroll .
  • Набор данных – понятие логическое, а не физическое. Порядок следования записей в таблице определяется установленным индексом, обуславливающим сортировку, поэтому первая, последняя и текущая запись (ее номер) зависят от установленного индекса.
Procedure TForm1.Button1Click(sender:Tobject); Var summ:integer; Begin summ:=0; Table1.First; While not Table1.eof do begin summ:=summ+Table1.    FieldByName(‘Сумма_плат’).AsInteger; Table1.Next; end; Edit1.Text:=’Сумма всех платежей составляет’ + IntToStr(summ); end ;

Procedure TForm1.Button1Click(sender:Tobject);

Var summ:integer;

Begin

summ:=0;

Table1.First;

While not Table1.eof do

begin

summ:=summ+Table1.

FieldByName(‘Сумма_плат’).AsInteger;

Table1.Next;

end;

Edit1.Text:=’Сумма всех платежей составляет’ + IntToStr(summ);

end ;

Закладки на записях в наборе данных Метод Обозначение function GetBookMark :TBookMark создает для текущей записи – объект-закладку и возвращает ссылку на него; procedure GotoBookMark (BookMark:TBookMark) перемещает курсор на запись, определяемую параметром-закладкой; procedure FreeBookMark (BookMark:TBookMark) освобождает системные ресурсы закладки BookMark; function BookMark Valid (BookMark:TBookMark): Boolean возвращает значение True, если закладке BookMark назначено значение, и False – если не назначено; function CompareBookMarks (BookMark1, BookMark2: TBookMark): integer сравнивает две закладки BookMark1 и BookMark2, и возвращает 0 – если закладки идентичны; 1 – если различаются.

Закладки на записях в наборе данных

Метод

Обозначение

function GetBookMark :TBookMark

создает для текущей записи – объект-закладку и возвращает ссылку на него;

procedure GotoBookMark (BookMark:TBookMark)

перемещает курсор на запись, определяемую параметром-закладкой;

procedure FreeBookMark (BookMark:TBookMark)

освобождает системные ресурсы закладки BookMark;

function BookMark Valid (BookMark:TBookMark): Boolean

возвращает значение True, если закладке BookMark назначено значение, и False – если не назначено;

function CompareBookMarks (BookMark1, BookMark2: TBookMark): integer

сравнивает две закладки BookMark1 и BookMark2, и возвращает 0 – если закладки идентичны; 1 – если различаются.

Var MyBookMark : TBookMark; begin MyBookMark := Table1.GetBookMark; //  создали закладку для текущей записи таблицы … If Table1.BookMark Valid (MyBookMark) then Table1.GotoBookMark (MyBookMark); //  переход на запись, на которой заложена закладка … If Table1.BookMark Valid (MyBookMark) then Table1.FreeBookMark (MyBookMark); //  освободили ресурсы, выделенные для закладки end ;

Var MyBookMark : TBookMark;

begin

MyBookMark := Table1.GetBookMark; // создали закладку для текущей записи таблицы

If Table1.BookMark Valid (MyBookMark) then Table1.GotoBookMark (MyBookMark); // переход на запись, на которой заложена закладка

If Table1.BookMark Valid (MyBookMark) then Table1.FreeBookMark (MyBookMark); // освободили ресурсы, выделенные для закладки

end ;

Метод Действие Procedure Edit Разрешить изменять текущую запись Procedure Append Добавить новую запись в конец НД Procedure Insert Добавить новую запись перед текущей Procedure Delete Удалить текущую запись Procedure Post Запомнить изменения текущей записи Procedure Cancel Отменить изменения текущей записи Procedure Refresh Обновить визуальные компоненты, связанные с НД, путем повторного считывания НД. Метод применяется после изменений, вносимых в НД.

Метод

Действие

Procedure Edit

Разрешить изменять текущую запись

Procedure Append

Добавить новую запись в конец НД

Procedure Insert

Добавить новую запись перед текущей

Procedure Delete

Удалить текущую запись

Procedure Post

Запомнить изменения текущей записи

Procedure Cancel

Отменить изменения текущей записи

Procedure Refresh

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

1) Свойство CanModified : boolean набора данных определяет, может ли набор данных переводиться в состояние добавления или изменения записей: если CanModified = True, то может; если CanModified = false, то не может.  Если свойство НД ReadOnly = true, то CanModified автоматечески устанавливается в false.

1) Свойство CanModified : boolean набора данных определяет, может ли набор данных переводиться в состояние добавления или изменения записей: если CanModified = True, то может; если CanModified = false, то не может.

Если свойство НД ReadOnly = true, то CanModified автоматечески устанавливается в false.

2) Набор данных Query можно корректировать только в том случае, если он сформирован из одной таблицы БД и его свойство RequestLive =true. (если это свойство имеет значение true и синтаксис запроса таков, что его результат может быть модифицируем, пользователь может редактировать данные с сохранением их в базе данных. Если RequestLive имеет значение false, результат запроса возвращается в состоянии read-only).

2) Набор данных Query можно корректировать только в том случае, если он сформирован из одной таблицы БД и его свойство RequestLive =true. (если это свойство имеет значение true и синтаксис запроса таков, что его результат может быть модифицируем, пользователь может редактировать данные с сохранением их в базе данных. Если RequestLive имеет значение false, результат запроса возвращается в состоянии read-only).

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

Сортировка базы данных - это упорядочение записей по значениям одного из полей.

По возрастанию:

  • числа - от наименьшего отрицательного до наибольшего положительного числа;
  • текст - в алфавитном порядке (числа, знаки, латинский алфавит, русский алфавит);
  • дата и время - в хронологическом порядке.
Для сортировки в свойство Sort помещают список полей сортировки, разделенных запятыми. Каждое поле может дополнительно снабжаться признаками ascending ( ASC ) или descending ( DESC ) для указания соответственно восходящего или нисходящего порядка сортировки. Пример:   Table1.Sort := 'Name ASC, Date DESC’;

Для сортировки в свойство Sort помещают список полей сортировки, разделенных запятыми. Каждое поле может дополнительно снабжаться признаками ascending ( ASC ) или descending ( DESC ) для указания соответственно восходящего или нисходящего порядка сортировки.

Пример:  

Table1.Sort := 'Name ASC, Date DESC’;

 Фильтрация – это отбор записей по установленному критерию. Фильтрация может осуществляться: по выражению; по диапазону.

Фильтрация – это отбор записей по установленному критерию.

Фильтрация может осуществляться:

  • по выражению;
  • по диапазону.
Использование свойств Filter и Filtered Условие, по которому выполняется фильтрация, записывается: в обработчике события OnFilterRecord ; или как строковое значение в свойстве Filter : String.

Использование свойств Filter и Filtered

Условие, по которому выполняется фильтрация, записывается:

  • в обработчике события OnFilterRecord ;
  • или как строковое значение в свойстве Filter : String.
Элементы фильтра имена полей таблиц (если есть пробелы или русские буквы нужны []); операции сравнения (, =, , =); логические операции (and, or, not); арифметические операции (+, -, *, /); круглые скобки.

Элементы фильтра

  • имена полей таблиц (если есть пробелы или русские буквы нужны []);
  • операции сравнения (, =, , =);
  • логические операции (and, or, not);
  • арифметические операции (+, -, *, /);
  • круглые скобки.
Параметры фильтрации задаются с помощью свойства FilterOptions : TFilterOptions: foCaseInsensitive – регистр букв не учитывается; foNoPartialCompare – выполняется проверка на полное соответствие содержимого поля и значения, заданного для поиска.

Параметры фильтрации задаются с помощью свойства FilterOptions : TFilterOptions:

  • foCaseInsensitive – регистр букв не учитывается;
  • foNoPartialCompare – выполняется проверка на полное соответствие содержимого поля и значения, заданного для поиска.
=5) and (OkladTable1.Filtered:=true; " width="640"

Пример: Требуется отобрать сотрудников, проработавших не менее 5 лет и имеющих оклад меньше 400 рублей (оклады хранятся в поле с именем Oklad, стаж работы – в поле Staj):

Table1.Filter:=’(Staj=5) and (Oklad

Table1.Filtered:=true;

-80%
Курсы дополнительного образования

Создание динамических веб-страниц с помощью PHP и MySQL

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Презентация "Локальные базы данных в Delphi" (106.14 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт