Вопрос 24. Delphi. Доступ к полям наборов данных. Компоненты для работы с полями НД.
Таблицы БД располагаются на диске и являются физическими объектами. Набор данных – совокупность записей, взятых из одной или нескольких таблиц БД. Записи, входящие в набор данных отбираются по определенным правилам, при этом в частных случаях набор данных может включать в себя все записи из связанной с ним таблицы или не содержать ни одной записи. Набор данных является логической таблицей, с которой можно работать при выполнении приложения. Взаимодействие таблицы и набора данных напоминает взаимодействие физического файла и файловой переменной.
Для выполнения операций с набором данных используются два способа доступа к данным:
- навигационный используется в локальных БД , заключается в обработке каждой отдельной записи (DBEdit)
- реляционный используется в удаленных БД , основан на обработке группы записей, используются sql-запросы.
DBLookUpCombobox и DBLookUpListBox позволяют заносить в поле другой таблицы значения поля, которое соответствовало активному полю списка.
Основные свойства:
ListSourse – источник данных (визуально видно), связанный с набором данных, на основе которого формируется список.
ListField – поле, значения которого высвечиваются в списке
DataSourse – источник данных, связанный с таблицей в которую будет заноситься выбранное значение
DataField – поля, в которые будут заноситься значения
KeyField – невидимое поле, значение которого будет заноситься
Замечание: Как правило, выбранное в списке значение заносится в подчиненную таблицу не автоматически, а программно с помощью свойства списка KeyValue. В этом случае при формировании списка значения свойств DataSourse и DataField не задаются.
ПР. stud(id_stud, fio, kod_gr) ; gruppa(kod,name)
ListSourse gruppa; ListField name; DataSourse stud; DataField kod_gr; KeyField kod
Вставка, удаление и обновление данных с помощью полей, не связанных с БД
Такая технология наиболее предпочтительна: она обеспечивает наименьшую вероятность ввода данных, т.к. все данные заполняются не в БД, а в простые поля ввода. Перенос из полей ввода в БД осуществляется после различных проверок.
Смысл технологии: содержание БД визуализируется, но только в режиме чтения, а содержание текущей записи отражается в полях ввода или списков. Ввод нового значения осуществляется в этих полях , а при помощи процедуры «Сохранить» эти значения переносятся в таблицу. Списки должны быть предварительно созданы, т.е. заполнены.
Прменение программного кода для заполнения Combobox событие Form Create
Table open;
Combobox1.clear;
Table1.First;
While not Table1.EOF then Combobox1.Items.Add(Table1.FieldByName(‘name’).Asstring;
Table1.next;end;
Combobox1.ItemIndex:=0;
Table1.First;
Перенос значений из полей таблицы текущей записи в поля, не связанные с БД, осуществляется при перемещении курсора по содержимому таблицы, т.е. по объекту DBGrid. При перемещении указателя по таблице возникает возникает событие Afterscroll компонента Table. Поэтому перенос оформляется в виде обработке этого события.
1 В поле списка
Combobox1.ItemIndex:=Combobox1.ItemIndex of (Table1.FieldByName(‘имя’).AsStr);
2 В поле редактирования
Edit1.Text:=Table1.FielByName(‘ имя’). AsString;
3 В поле DBLookUpCombobox1
DBLookUpCombobox1.KeyValue:= Table1.FielByName(‘ имя’). AsInteger;
Перенос значений из полей таблицы, не связанных с БД осуществляется с помощью кнопки «Сохранить»
из поля списка
Table1.FielByName(‘ имя поля’). AsString:= Combobox1.Text;
Из поля редактирования
Table1.FielByName(‘ имя поля’). AsString:= Edit1.Text;
Из поля DBLookUpCombobox
Table1.FielByName(‘ имя поля’). AsInteger:= DBLookUpCombobox1. KeyValue;
Другие компоненты вкладки BDE
Query – используется для реализации запросов
DataSet – реализует запросы и операции вставки, обн и уд.
Query и Dataset как и Table относится к наборам данных(они являются потомками одного и того же класса TDataSet, поэтому они обладают некоторыми общими свойствами и методами).Пр. методы навигации,св-ва EOF, BOF.
Таблицы БД располагаются на диске и являются физическими объектами. Набор данных – совокупность записей, взятых из одной или нескольких таблиц БД. Записи, входящие в набор данных отбираются по определенным правилам, при этом в частных случаях набор данных может включать в себя все записи из связанной с ним таблицы или не содержать ни одной записи. Набор данных является логической таблицей, с которой можно работать при выполнении приложения. Взаимодействие таблицы и набора данных напоминает взаимодействие физического файла и файловой переменной.
Для выполнения операций с набором данных используются два способа доступа к данным:
- навигационный используется в локальных БД , заключается в обработке каждой отдельной записи (DBEdit)
- реляционный используется в удаленных БД , основан на обработке группы записей, используются sql-запросы.
DBLookUpCombobox и DBLookUpListBox позволяют заносить в поле другой таблицы значения поля, которое соответствовало активному полю списка.
Основные свойства:
ListSourse – источник данных (визуально видно), связанный с набором данных, на основе которого формируется список.
ListField – поле, значения которого высвечиваются в списке
DataSourse – источник данных, связанный с таблицей в которую будет заноситься выбранное значение
DataField – поля, в которые будут заноситься значения
KeyField – невидимое поле, значение которого будет заноситься
Замечание: Как правило, выбранное в списке значение заносится в подчиненную таблицу не автоматически, а программно с помощью свойства списка KeyValue. В этом случае при формировании списка значения свойств DataSourse и DataField не задаются.
ПР. stud(id_stud, fio, kod_gr) ; gruppa(kod,name)
ListSourse gruppa; ListField name; DataSourse stud; DataField kod_gr; KeyField kod
Вставка, удаление и обновление данных с помощью полей, не связанных с БД
Такая технология наиболее предпочтительна: она обеспечивает наименьшую вероятность ввода данных, т.к. все данные заполняются не в БД, а в простые поля ввода. Перенос из полей ввода в БД осуществляется после различных проверок.
Смысл технологии: содержание БД визуализируется, но только в режиме чтения, а содержание текущей записи отражается в полях ввода или списков. Ввод нового значения осуществляется в этих полях , а при помощи процедуры «Сохранить» эти значения переносятся в таблицу. Списки должны быть предварительно созданы, т.е. заполнены.
Прменение программного кода для заполнения Combobox событие Form Create
Table open;
Combobox1.clear;
Table1.First;
While not Table1.EOF then Combobox1.Items.Add(Table1.FieldByName(‘name’).Asstring;
Table1.next;end;
Combobox1.ItemIndex:=0;
Table1.First;
Перенос значений из полей таблицы текущей записи в поля, не связанные с БД, осуществляется при перемещении курсора по содержимому таблицы, т.е. по объекту DBGrid. При перемещении указателя по таблице возникает возникает событие Afterscroll компонента Table. Поэтому перенос оформляется в виде обработке этого события.
1 В поле списка
Combobox1.ItemIndex:=Combobox1.ItemIndex of (Table1.FieldByName(‘имя’).AsStr);
2 В поле редактирования
Edit1.Text:=Table1.FielByName(‘ имя’). AsString;
3 В поле DBLookUpCombobox1
DBLookUpCombobox1.KeyValue:= Table1.FielByName(‘ имя’). AsInteger;
Перенос значений из полей таблицы, не связанных с БД осуществляется с помощью кнопки «Сохранить»
из поля списка
Table1.FielByName(‘ имя поля’). AsString:= Combobox1.Text;
Из поля редактирования
Table1.FielByName(‘ имя поля’). AsString:= Edit1.Text;
Из поля DBLookUpCombobox
Table1.FielByName(‘ имя поля’). AsInteger:= DBLookUpCombobox1. KeyValue;
Другие компоненты вкладки BDE
Query – используется для реализации запросов
DataSet – реализует запросы и операции вставки, обн и уд.
Query и Dataset как и Table относится к наборам данных(они являются потомками одного и того же класса TDataSet, поэтому они обладают некоторыми общими свойствами и методами).Пр. методы навигации,св-ва EOF, BOF.