Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт_реферат_часть2.doc
Скачиваний:
5
Добавлен:
29.07.2019
Размер:
428.03 Кб
Скачать

ОБНИНСКИЙ ПОЛИТЕХНИКУМ

ОТДЕЛЕНИЕ ЭКОНОМИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

СПЕЦИАЛЬНОСТЬ: АВТОМОТИЗИРОВАННЫЕ СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ И УПРАВЛЕНИЕ

ОТЧЕТ

По практической работе №х2

ПО КУРСУ «Базы данных»

На тему: «Разработка клиентского приложения и подключение к базе»

Группа ИТ-17

Студент: Андриянов

Юрий Владимирович

Преподаватель:

Р.Ю. Константинов

Обнинск

2011

Разработка клиентского приложения и подключение к бд.

  1. Выбор среды разработки.

В данной работе средой разработки является Borland C++ Builder 6.

C++ — чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения. Более читабельный код и наиболее удобный.

  1. Создание интерфейса программы. Подключение к базе.

а) При создании интерфейса используются следующие компоненты:

Основные компоненты:

  1. IBDatabase Предназначен для осуществления соединения с базой данных.

  2. IBTransaction Транзакции.

  3. IBQuery Открывает доступ к использованию языка SQL для создания запросов с целью получения данных от SQL-сервера.

  4. DataSourse Обеспечивает механизм для связи компонентов доступа к данным.

  5. DBGrid Обеспечивает табличный способ отображения на экране строк данных из компонентов TTable или TQuery.

  6. 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; 

Определяет особенности визуализации и поведения компонента:

  •  dgEditing — данные можно редактировать;

  •  dgAlwaysShowEditor — данные в сетке всегда в режиме редактирования;

  •  dgTitles — видны заголовки колонок;

  •  dglndicator — в начале строки виден номер текущей колонки;

  •  dgColumnResize — колонки можно перемещать и менять их ширину;

  •  dgColLines — видны линии между колонками;

  •  dgRowLines — видны линии между строками;

  •  dgTabs — для перемещения по строкам можно использовать клавиши <Таb> и <Shift>+<Tat»;

  •  dgRowSelect — можно выделять целые строки, при этом игнорируются установки dgEditing И dgAlwaysShowEditor;

  •  dgAlwaysShowSelection — выделение текущей ячейки сохраняется, даже если сетка не активна;

  •  dgConfirmDelete — при удалении строк появляется запрос о подтверждении операции;

  •  dgCancelOnExit — созданные пустые строки при уходе из сетки не сохраняются;

  •  dgMultiSelect — можно выделять несколько строк одновременно

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:

  1. Ввод данных в таблицу покупки, кнопка 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";

}

  1. Ввод данных в таблицу товары, кнопка 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";

}

  1. Ввод данных в таблицу Расход, кнопка 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; //активировать компонент запроса

}

  1. Ввод данных в таблицу Приход, кнопка 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. Работа программы.