ОБНИНСКИЙ ПОЛИТЕХНИКУМ
ОТДЕЛЕНИЕ ЭКОНОМИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
СПЕЦИАЛЬНОСТЬ: АВТОМОТИЗИРОВАННЫЕ СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ И УПРАВЛЕНИЕ
ОТЧЕТ
По практической работе №х2
ПО КУРСУ «Базы данных»
На тему: «Разработка клиентского приложения и подключение к базе»
Группа ИТ-17 Студент: Андриянов Юрий Владимирович |
Преподаватель: Р.Ю. Константинов |
Обнинск
2011
Разработка клиентского приложения и подключение к бд.
Выбор среды разработки.
В данной работе средой разработки является Borland C++ Builder 6.
C++ — чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. Более читабельный код и наиболее удобный.
Создание интерфейса программы. Подключение к базе.
а) При создании интерфейса используются следующие компоненты:
Основные компоненты:
IBDatabase Предназначен для осуществления соединения с базой данных.
IBTransaction Транзакции.
IBQuery Открывает доступ к использованию языка SQL для создания запросов с целью получения данных от SQL-сервера.
DataSourse Обеспечивает механизм для связи компонентов доступа к данным.
DBGrid Обеспечивает табличный способ отображения на экране строк данных из компонентов TTable или TQuery.
DBLookupComboBox Отображает значения из столбца таблицы.
Прочие компоненты:
TButton, TLabel, TEdit, TDateTimePicker, TGroupBox, TPanel.
б) Общий вид программы:
Окно программы содержит 4 таблицы и 4 панели с полями и кнопкой для ввода данных.
Рис5. Общий вид программы.
в) Настройка компонентов:
Database: TIBDatadase
Рис 6. Настройка TIBDatabase.
T ransaction: TIBTransaction:
Рис 7. Настройка TIBTransaction.
AutoStopAction - указывает, как транзакция должна закончиться, когда она неявно останавливается.
saCommit - фиксация транзакции.
Сохраняет все сделанные в рамках текущей транзакции изменения.
T IBQuery:
Рис 7. Настройка TIBQuery.
SQL запрос SELECT *FROM POKUP выберает все столбцы из таблицы POKUP.
SELECT – выбрать; * - все столбцы; FROM – из таблицы POKUP;
Аналогично настраиваются 3 остальных компонента типа TIBQuery для трёх оставшихся таблиц.
DataSoursePokup, DataSourseTovary, DataSourseRashod, DataSoursePrihod: TDataSourse:
Рис 8. Настройка TDataSourse.
В поле DataSet указывается соответствующий компонент TIBQuery.
GridPokup, GridTovary, GridRashod, GridPrihod: TDBGrid:
Свойства |
Описание |
|
property Columns: TDBGridColumns; |
Содержит коллекцию объектов TColumn, описывающих колонки компонента |
|
property DefaultDrawing: Boolean;
|
Определяет способ визуализации данных в сетке. При значении True данные отображаются автоматически. При значении False используется метод-обработчик OnDrawColumnCell |
|
property FieldCount: Integer; |
Возвращает число видимых колонок сетки |
|
property Fields [Index: Integer] : TField; |
Массив объектов полей набора данных, отображаемых в компоненте |
|
TDBGridOption = (dgEditing, dgAlwaysShowEditor, dgTitles, dglndicator, dgColumnResize, dgColLines, dgRowLines, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgMultiSelect) ; TDBGridOptions = set of TDBGridOption; |
Определяет особенности визуализации и поведения компонента:
|
|
property SelectedField: TField; |
Содержит объект текущего поля |
|
property Selectedlndex: Integer; |
Содержит номер текущей колонки в массиве свойства Columns |
|
property SelectedRows: TBookmarkList; |
Ro |
Набор закладок на записи набора данных, соответствующих выделенным строкам сетки |
property TitleFont: TFont; |
Pb |
Шрифт заголовков колонок |
property EditorMode: Boolean; |
Pu |
Показывает, можно ли редактировать текущую ячейку |
property FixedColor: TColor; |
Pb |
Цвет фона неподвижных ячеек сетки |
Рис. 9. Настройка TDBGrid.
RASHOD_TOVAR, RASHOD_NPOK, PRIHOD_TOVAR: TDB: TDBLookUpComboBox:
Р ис. 10. Настройка TDBLookUpComboBox.
TButton:
Ввод данных в таблицу покупки, кнопка InputPokup:
В событии onClick кнопки прописан следующий код:
void __fastcall TMainForm::InputPOKUPClick(TObject *Sender)
{ //метод формы onClick fastcall – передача параметров через регистры
String SQLstr; //строка SQL запрос
SQLstr= "INSERT INTO POKUP(NPOK,IMYA,FAM,GOROD,TELEF) VALUES("+EditNPOK->Text+",'"+EditIMYA->Text+"','"+EditFAM->Text+"','"+EditGOROD->Text+"','"+EditTELEF->Text+"');";//формирование SQL запроса
RASHOD_NPOK->KeyField="";//очистка keyfield
//Ввод данных в базу
//Для того что бы послать запрос серверу БД нужно:
QueryPokup->Active=false; //отключить компонент запроса
QueryPokup->SQL->Clear(); //очистить поле запроса
QueryPokup->SQL->Add(SQLstr); //добавить в поле запроса, новый //запрос
QueryPokup->Active=true; //активировать компонент запроса т. е. //выполнить запрос
//Теперь нужно вывести обновлённые данные, для этого нужно сделать //запрос SELECT
QueryPokup->Active=false; //отключить компонент запроса
QueryPokup->SQL->Clear();//очистить поле запроса
QueryPokup->SQL->Add( "SELECT *FROM POKUP" ); //запрос SELECT
QueryPokup->Active=true; //активировать компонент запроса т. е. //выполнить запрос
RASHOD_NPOK->KeyField="NPOK";
}
Ввод данных в таблицу товары, кнопка InputTOVAR:
В событии onClick кнопки прописан следующий код:
void __fastcall TMainForm::InputTOVARClick(TObject *Sender)
{
String SQLstr;
SQLstr= "INSERT INTO TOVARY(TOVAR,EDIZM,ZENA) VALUES('"+EditTOVAR->Text+"','"+EditEDIZM->Text+"',"+EditZENA->Text+");";//формирование строки запроса
RASHOD_TOVAR->KeyField="";
PRIHOD_TOVAR->KeyField="";
QueryTovary->Active=false; //отключить компонент запроса
QueryTovary->SQL->Clear();//очистить поле запроса
QueryTovary->SQL->Add(SQLstr); //добавить в поле запроса, новый //запрос
QueryTovary->Active=true; //активировать компонент запроса
QueryTovary->Active=false; //отключить компонент запроса
QueryTovary->SQL->Clear();//очистить поле запроса
QueryTovary->SQL->Add( "SELECT *FROM TOVARY" ); //запрос //SELECT
QueryTovary->Active=true; //активировать компонент запроса
RASHOD_TOVAR->KeyField="TOVAR";
PRIHOD_TOVAR->KeyField="TOVAR";
}
Ввод данных в таблицу Расход, кнопка InputRASHOD:
В событии onClick кнопки прописан следующий код:
void __fastcall TMainForm::InputRASHODClick(TObject *Sender)
{
String SQLstr;
SQLstr= "INSERT INTO RASHOD(NR,TOVAR,DATERAS,KOLVO,NPOK) VALUES(" +RASHOD_NR->Text+",'"+RASHOD_TOVAR->Text+"','"+DateToStr(RASHOD_DATERAS->DateTime)+"',"+RASHOD_KOLVO->Text+","+RASHOD_NPOK->Text+");";
//формирование строки запроса
QueryRashod->Active=false; //отключить компонент запроса
QueryRashod->SQL->Clear();//очистить поле запроса
QueryRashod->SQL->Add(SQLstr); //добавить в поле запроса, новый //запрос
QueryRashod->Active=true; //активировать компонент запроса
QueryRashod->Active=false; //отключить компонент запроса
QueryRashod->SQL->Clear();//очистить поле запроса
QueryRashod->SQL->Add("SELECT *FROM RASHOD");//запрос SELECT
QueryRashod->Active=true; //активировать компонент запроса
}
Ввод данных в таблицу Приход, кнопка InputPRIHOD:
В событии onClick кнопки прописан следующий код:
void __fastcall TMainForm::InputPRIHODClick(TObject *Sender)
{
String SQLstr;
SQLstr= "INSERT INTO PRIHOD(NPR,TOVAR,DATEPR,KOLVO) VALUES("+PRIHOD_NPR->Text+",'"+PRIHOD_TOVAR->Text+"','" +DateToStr(PRIHOD_DATEPR->DateTime)+"',"+PRIHOD_KOLVO->Text+ ");"; //формирование строки запроса
QueryPrihod->Active=false; //отключить компонент запроса
QueryPrihod->SQL->Clear();//очистить поле запроса
QueryPrihod->SQL->Add(SQLstr); //добавить в поле запроса, новый запрос
QueryPrihod->Active=true; //активировать компонент запроса
QueryPrihod->Active=false; //отключить компонент запроса
QueryPrihod->SQL->Clear();//очистить поле запроса
QueryPrihod->SQL->Add("SELECT *FROM PRIHOD");//добавить в поле //запроса, новый запрос
QueryPrihod->Active=true; //активировать компонент запроса
}
Настройка формы:
При создании формы событие onCreate выполняется следующий код:
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
Database->Connected=true;//связь с БД
Transaction->Active=true;
QueryPokup->Active=true;
QueryTovary->Active=true;
QueryRashod->Active=true;
QueryPrihod->Active=true;
}
После запуска программы в событии onCreate формы происходит связь с базой и активация необходимых компонентов для управления и отображения данных базы:
Рис. 11. Работа программы.