русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Тема. Фильтрация записей.


Дата добавления: 2013-12-23; просмотров: 1850; Нарушение авторских прав


Тема. Операции с таблицей базы данных.

Begin

Begin

TbTovar.Active:=False; // закрытие набора данных

// доступ в исключительном режиме

TbTovar.Exclusive:=True;

// получение доступных индексов

TbTovar.IndexDefs.Update;

// поиск составного индекса на базе полей T_Nazv и T_Cena

for i:=0 to TbTovar.IndexDefs.Count-1 do

if TbTovar.IndexDefs.Items[i].Fields='T_Nazv;T_Cena' then

// Установка найденного индекса как текущего

TbTovar.IndexName:=TbTovar.IndexDefs.Items[i].Name;

TbTovar.Exclusive:=False;

TbTovar.Active:=True;

end;

 

Свойства индексов доступны для редактирования при выборе индекса в окне Editing Table1.IndexDefs, которое появляется при выборе свойства IndexDefsкомпонента Table.

 

Направление сортировки можно задать для поля с помощью значения свойства Options: ixDescending=true – сортировка по убыванию значений, = false –по возрастанию значений.

Например, выполнение сортировки значений полей с использованием компонента RadioGroup.

 

procedure TForm1.RadioGroup1Click(Sender: TObject);

case RadioGroup1.ItemIndex of

0 : if RadioGroup2.ItemIndex=0

then TbTovar.IndexFieldNames:='T_Nazv'

else TbTovar.IndexName:='ind_tovar_des';

1 : if RadioGroup2.ItemIndex=0

then TbTovar.IndexFieldNames:='T_Cena'

else TbTovar.IndexName:='ind_cena_des';

else TbTovar.IndexName:='';

end;


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

Для программирования этих действий в приложении необходимо использовать следующие свойства набора данных Table.

Свойства:

DatabaseName–путь к файлам базы данных (папка)

TableType – тип таблицы:

ttDefault – (по умолчанию) формат определяется по расширению названия файла:

DB или отсутствует – таблица Paradox;



DBF – таблица dBase;

TXT – таблица ASCII;

ttParadox – таблица Paradox;

ttDBase – таблица dBase;

ttFoxPro – таблица FoxPro;

ttASCII – таблица ASCII (текстовый файл, разбитый на колонки).

FieldDefs –описание полей,

IndexDefs – описание индексов,

TableName – название таблицы, т.е. имя физического файла таблицы, который находится в папке, указанной в свойстве DatabaseName.

IndexName – название индекса;

IndexFieldNames – список столбцов, используемых в индексе таблицы.

Для свойства FieldDefs определены следующие методы:

Clear – очистка значения свойства,

Add(const Name:String; DataType:TFieldType; Size: Word; Required: Boolean) – добавляет к массиву полей описание нового поля, где

Name –название поля,

DataType – тип поля, который выбирается из списка: ftUnknown, ftString,
ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency и т.д.

Size –размер поля или 0 (ноль),

Required – определяет, должно ли поле обязательно содержать значение (true) или может быть пустым (false).

Методы:

procedure CreateTable; - на диске создается пустая (без записей) таблица. Если таблица существует, то метод перезаписывает таблицу. Перед вызовом метода необходимо определить следующие свойства набора данных, причем набор данных должен быть закрыт:

- DatabaseName –путь к файлам базы данных (каталог),

- TableType –тип таблицы,

- FieldDefs – описание полей,

- IndexDefs– описание индексов,

- TableName –название таблицы.

procedure DeleteTable; -выполняется физическое удаление всех файлов таблицы, имя которой и путь определены в свойствах DatabaseNameи TableNameнабора данных.

procedure RenameTable(const NewTableName:String) – выполняет переименование всех файлов, относящихся к таблице. Здесь NewTableName – новое название таблицы.


Пример. Создание таблицы на основе набора данных Table.

r

 

procedure TForm1.BtnNewTableClick(Sender: TObject);

begin

Table1.Active:=false; // Закрытие набора данных

Table1.DatabaseName:='NewTovar'; // путь к базе данных

Table1.TableName:='NewTable'; // имя создаваемой таблицы

Table1.TableType:=ttParadox; // тип таблицы

// Параметры таблицы

Table1.FieldDefs.Clear;

Table1.FieldDefs.Add('Code',ftAutoInc,0,true);

Table1.FieldDefs.Add('Nazv',ftString,20,True);

Table1.FieldDefs.Add('Cena',ftInteger,0,False);

Table1.FieldDefs.Add('Date',ftDate,0,False);

// Описание полей таблицы

Table1.IndexDefs.Clear;

Table1.IndexDefs.Add('','Code',[ixPrimary, ixUnique]);

Table1.IndexDefs.Add('indNazv','Nazv',[ixCaseInsensitive]);

// Создание таблицы

Table1.CreateTable;

// Установка текущего индекса

Table1.IndexName:='indNazv';

//

Table1.Active:=True;

Label1.Caption:=Table1.TableName;

DataSource1.DataSet:=Table1;

DBGrid1.DataSource:=DataSource1;

DBNavigator1.DataSource:=DataSource1;

end;

 

procedure TForm1.BtnDeleteTableClick(Sender: TObject);

begin

Table1.Active:=False;

Table1.DeleteTable;

Label1.Caption:='Таблица удалена!';

end;

 


procedure TForm1.BtnRenameTableClick(Sender: TObject);

begin

Table1.Active:=False;

if LabeledEdit1.Text<>''

then Table1.RenameTable(LabeledEdit1.Text)

else Table1.RenameTable('NewTable');

Label1.Caption:=Table1.TableName;

Table1.Active:=True;

end;

p

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

LockTable(LockTable:TLockTable) – устанавливается блокировка от вмешательства других приложений. Параметры

ltReadLock – таблица переводится в режим монопольного доступа; Например,

Table1.LockTable(ltReadLock);

ltWriteLock – другим пользователям запрещено записывать данные в таблицу, но разрешено считывать имеющиеся данные. Например,

Table1.LockTable(ltWriteLock);

UnLockTable(LockTable:TLockTable) – снимается блокировка таблицы. Например,

Table1.UnlockTable(ltReadLock);

Table1.UnlockTable(ltWriteLock).

 

 


Фильтрация – это задание ограничений для записей, которые отбираются в набор данных. Система Delphi позволяет выполнить фильтрацию записей по выражению и по диапазону. Для реализации фильтрации по выражению используются следующие свойства компонента Table:

Filter: String; - определяет текущий фильтр (условие) для набора данных. Содержит определенные ограничения на значения полей.

При записи условий фильтрации можно использовать:

имена полей таблицы, кроме имен вычисляемых полей !!

литералы,

операции отношения =, >, >=, <, <=, <> ,

арифметические операции + - * /

логические операции and, orиnot,

круглые скобки.

Например,

1) TbTovar.Filter:=’Cena<=1000 and Cena>100’;

2) DM2.TbTovar.Filter:='T_Nazv='+'''к*''';

или DM2.TbTovar.Filter:='T_Nazv='+#39+'к*'+#39;

3) TbSotruniki.Filter:='S_Birthday>'''+
DateToStr(StrToDate(Edit1.Text))+'''';

4) TbSotruniki.Filter:='S_Birthday>'''+
DateToStr(StrToDate('01.12.1981'))+'''';

 

Filtered: Boolean – определяет, будут ли доступны все записи набора данных (false) или только отфильтрованные (true).

Например,

{В поле Edit1 задается условие фильтрации, а по кнопке Button1 задается режим фильтрации}

procedure Tform1.Button1Click (Sender:TObject);

begin

Table1.Filter:=Edit1.Text;

Table1.Filtered:=True;

end;

Примеры выражения, формируемого в поле Edit1:

1) T_Kol_vo<21 AND T_Kol_vo>10

2) T_Nazv='с*'

3) P_Date>'31.12.2006' OR P_Kol_vo<50

FilterOptions: TFilterOptions- параметры фильтрации, свойство множественного типа и может принимать комбинации двух значений:

foCaseInsensitive – регистр букв не учитывается,

foNoPartialCompare – выполняется проверка на полное соответствие содержимого поля и значения, заданного для поиска. При выключенном значении для фильтра Tovar=’K*’ будут отобраны все записи, для которых в поле Tovar первым символом является символ K.

По умолчанию обе опции выключены.

Например, DM2.TbTovar.FilterOptions:=[foCaseInsensitive];

Пример. Формирование выражения из значений различных компонентов для текстового и числового поля:

Table1.Filter:=ComboBox1.Text+Edit1.Text+''''+Edit2.Text+'''';

где ComboBox1.Text- имя поля, Edit1.Text – отношение, Edit2.Text – значение.

Пример 1. Фильтрация по выражению в таблице Sotrudniki. (Alias:Sotrudniki)

 

procedure TForm1.FormCreate(Sender: TObject); begin TbSotrudniki.Filter:=''; TbSotrudniki.FilterOptions:=[foCaseInsensitive]; TbSotrudniki.Filtered:=true; end;

 

procedure TForm1.btnFilterClick(Sender: TObject); begin // Фильтровать по дате рождения if rbBirthday.Checked then TbSotrudniki.Filter:='S_Birthday>'''+ DateToStr(dtpbirthdaymin.Date)+''' AND S_Birthday<'''+ Datetostr(dtpbirthdaymax.Date)+''''; // Фильтровать по выражению if rbexpression.Checked then TbSotrudniki.Filter:=Edexpression.Text; // Фильтрация отсутствует if rbnofilter.Checked then begin TbSotrudniki.Filter:=''; Edexpression.Text:=''; end; end;

 



<== предыдущая лекция | следующая лекция ==>
Тема. Сортировка набора данных. | Тема. Поиск записей.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.006 сек.