|
|||
Лабораторная работа № 2Цель работы: 1. Изучить начальные этапы создания приложения для работы с базами данных в среде Delphi: · ознакомить с компонентами доступа к БД: TTable, TDataSource; · ознакомить с компонентами управления БД: TDBGrid, TDBNavigator. 2. Усвоить ввод и редактирование текста. Методика создания приложения для работы с базой данных ничем не отличается от методики создания обычной программы: к форме добавляются необходимые компоненты, устанавливаются значения свойств компонентов, разрабатываются необходимые процедуры обработки событий. Приложение работы с базой данных должно содержать компоненты, обеспечивающие доступ к данным, возможность просмотра и редактирования содержимого полей. Компоненты доступа к данным находятся на вкладке Data Access и BDE палитры компонентов, а компоненты отображения данных — на вкладке Data Controls. Основные компоненты доступа и управления к базам данных: Компоненты доступа к базам данных: TTable - обеспечивает взаимодействие с таблицей БД, т. е. компонент TTable указывает, откуда брать данные и какие поля будут составлять набор данных. Компонент TTable имеет следующие основные свойства: · DatabaseName – база данных · TableName - имя таблицы · Active – активация таблицы (значение True активирует ее) Свойство DatabaseName определяет базу данных, в которой находится таблица. Это свойство может содержать: * псевдоним (псевдоним) * путь для локальных БД * путь и имя файла базы данных для Local InterBase * локальный псевдоним, определенный через компонент TDatabase. Свойство TableName определяет имя таблицы базы данных. TDataSource - определяет связь между базой данных и компонентами управления данными, то есть компонент TDataSource является промежуточным звеном между компонентом Table1, соединенным с реальной БД и визуальными компонентами DBGrid1 и DBNavigator1, с помощью которых пользователь взаимодействует с таблицей. В большинстве случаев, все, что нужно сделать с DataSource - это указать в свойстве DataSet соответствующий TTable. Затем, у визуального компонента вроде DBGrid или DBNavigator в свойстве DataSource указывается TDataSource, который используется в настоящее время. Компоненты управления данными с палитры DataContorls: TDBGrid - отображает содержимое таблицы БД в виде сетки, в котором столбцы соответствуют полям, а строки записям таблицы. Компонент имеет следующие свойства: · DataSource – содержит ссылку на компонент типа TDataSource, служащий источником данных; · EditorMode – если содержит true, пользователь может редактировать ячейку после нажатия клавиши F2 или Enter. Игнорируется, если свойство Option включает значение goEditing или goAlwaysShowEditor; · Option – определяет вид и поведение компонента; o dgEditing – разрешает изменение набора данных; o dgAlwaysShowEditor – автоматически переводит столбец в режим редактирования при его выделение; o dgTitles – показывает заголовки столбцов; o dgIndicator – показывает индикатор текущей строки в самом левом фиксированном столбце; o dgColumnResize – разрешает пользователю вручную изменять ширину столбцов; o dgColLines – показывает разделяющие вертикальные линии; o dgRowLines – показывает разделяющие горизонтальные линии; o dgTabs – разрешает переход от столбца к столбцу с помощью клавиши Tab; o dgRowSelect – разрешает выделение цветом всей выбранной строки; o dgAlwaysShowSelection – выделение текущей строки сохраняется, если компонент теряет фокус ввода; o dgConfirmDelete – удаление строки должно подтверждаться; o dgCancelOnExit – если пользователь вставил пустую строку и покинул ее, она не помещается в набор данных; o dgMultiSelect – разрешает множественный выбор строк. TDBNavigator - осуществляет перемещение и редактирование записей (вид и назначение кнопок указаны в пункте DBNavigator ). С помощью свойства DataSource компонент связывается с нужным источником данных ТDataSource – это все, что необходимо для его нормальной работы. Свойство ConfirmDelete управляет отображением диалогового окна с просьбой подтвердить удаление записи (значение True этого свойства выводит окно). Создание приложения: 1. Запустить Delphi. 2. В свойстве Caption изменить имя формы на Студенты. 3. Установить на форму компоненту TTable . 4. Определить следующие свойства компоненты Table1. · определить псевдоним - выбрать в свойстве DatabaseName инспектора объектов псевдоним «Student». · задать имя таблицы - выбрать в свойстве TableName таблицу Student. · активизировать таблицу - установить в свойстве Active значение true (это будет возможно после выполнения пункта 4). 5. Разместить на форму компоненту DataSource с закладки DataAccess и в свойстве DataSet инспектора объектов выбрать компоненту Table1 . 6. Расположить на форме компоненту DBGrid с закладки DataControls и в свойстве DataSource выбрать DataSource1. Если вы внесли несколько записей, то форма Студенты примет вид: Редактор полей: Для управления отображением данных таблицы используют специальный редактор полей - EditorField. Для вызова EditorField следует:
Редактор полей имеет следующие свойства:
Определим свойства для полей таблицы Student. db. 1. Выбрать в окне редактора полей таблицы поле SFio и в свойстве DisplayLabel инспектора объектов изменить SFio на ФИО. Выбрать свойство DisplayWidth и заменить размер на 35. 2. Так же поменять свойства других полей таблицы. 3. Для полей логического типа в свойстве DisplayValues можно написать варианты для значений True и False. В поле SSpec в этом свойстве написать « Математика; Физика » (без пробела, разделяя «; »). Получиться как показано на рисунке. 4. Если возникнет необходимость можно скрыть любое поле, выбрав его и в свойстве Visible инспектора объектов установив значение false. После выполненных действий сетка DBGrid1 будет выглядеть так: Ввод данных: Компоненты для организации доступа к таблицам БД позволяют выполнять всевозможные операции с наборами данных: добавлять или удалять записи, перемещаться по ним. При этом следует иметь в виду, что в любой момент времени доступна для выполнения конкретных действий только одна запись, называемая текущей. В этой лабораторной работе рассматриваются наиболее часто используемые методы компоненты Table. Основные методы для организации доступа компоненты Table:
1. Откроем созданное приложение. 2. Разместим на форме три компоненты SpeedButton из палитры Additional. Одна из кнопок будет добавлять запись, другая – изменять данные в записи, третья – удалять. Назовем их соответственно. 3. Создадим новую форму, которая будет вызываться нажатием кнопки «Добавить». На форме расположены 4 компоненты Edit, компонент DateTimePicker с закладки Win32, компонент CheckBox и компонент RadioGroup. 4. Текст процедуры для события OnClick кнопки «Добавить» на форме Студенты: procedure TForm1. SpeedButton1Click(Sender: TObject); begin Form2. ShowModal; //открывает форму «Добавление записи» end; 5. Текст процедуры для события OnClick кнопки «ОК» на форме Добавление записи: procedure TForm2. Button1Click(Sender: TObject); begin Form1. Table1. Insert; Form1. Table1. FieldByName('SFio'). Text: =Edit1. Text; Form1. Table1. FieldByName('SOsn'). Text: =Edit2. Text; Form1. Table1. FieldByName('SNom'). Text: =Edit3. Text; Form1. Table1. FieldByName('SKurs'). Text: =Edit4. Text; Form1. Table1. FieldByName('SData'). AsDateTime: =DateTimePicker1. Date; if CheckBox1. Checked then Form1. Table1. FieldByName('SStip'). Text: ='да' else Form1. Table1. FieldByName('SStip'). Text: ='нет'; //при нажатии на флажок полю SStip (Стипендия) передается //значение True, в противном случае вводится передается //значение False case RadioGroup1. ItemIndex of 0: Form1. Table1. FieldByName('SSpec'). Text: ='Математика'; 1: Form1. Table1. FieldByName('SSpec'). Text: ='Физика'; end; if form1. Table1. Modified then form1. Table1. Post; close; Комметарий: в строке Form1. Table1. Insertвызывается метод, который допускает вставку новой строки в таблицу, которая находится на форме « Студенты ». Без вызова этого метода дальнейшая работа по вставке записи в таблицу невозможна. Запись Form1. Table1. FieldByName('SFio'). Text: =Edit1. Text означает, что текст, который находится в Edit1 по нажатии кнопки будет перенесен в таблицу на форме « Студенты » в новую запись в текстовое поле ФИО. Остальные записи в процедуре работают аналогичным образом. Запись ifform1. Table1. Modifiedthenform1. Table1. Postсохраняет изменения в таблице. Close – закрывает форму « Добавление записи ». 6. По нажатии кнопки Cancel осуществляется выход. То же и на форме «Редактирование записи». 7. Текст процедуры для события OnClick при нажатии клавиши «Удалить» на форме Студенты: procedure TForm1. SpeedButton3Click(Sender: TObject); begin Table1. Delete //удаляет текущую запись в таблице end; Редактирование данных: Компоненты, отражающие информацию, делятся на две категории – те, которые не связаны с таблицами БД, и компоненты, связанные с таблицами и обменивающиеся с ними информацией. В первую категорию входят обычные компоненты Delphi. Компоненты второй категории расположены на странице DataControls. Почти каждая из них имеет аналог среди обычных компонент; основные отличия заключаются в том, что они могут работать с данными, хранящимися в БД. К этой группе относится компонента DBEdit, которая используется для ввода текстовой однострочной информации. Чтобы компонент DBEdit видел данные из поля таблицы, следует указать в свойствах:
Этот компонент с заданными уже свойствами может появиться автоматически при перетаскивании имени поля из окна редактора полей. 1. Создадим новую форму: Редактирование записи.
2. В случае перетаскивания поля логического типа, на форме автоматически устанавливается компонента DBCheckBox, что не всегда удобно. 2. 1. Установим на форму компоненту DBRadioGroup с закладки DataControl. 2. 2. В свойстве DataSource укажем DataSource1. 2. 3. В свойстве DataField укажем SSpec. 3. Текст процедуры для события OnClick при нажатии клавиши «Изменить» на форму Студенты: begin Form3. ShowModal //вызов Form3 end; 4. Текст процедуры для события OnClick при нажатии клавиши «Сохранить» на форму Редактирование: begin if form1. Table1. Modified then form1. Table1. Post; //всеизменениявтаблицесохраняются close; end; 5. Пользователь имеет возможность редактировать записи в таблице напрямую. Чтобы это предотвратить используется свойство компоненты DBGriddgEditing. Нужно выделить DBGrid1 и в свойстве Options► dgEditing инспектора объектов поставить false.
|
|||
|