Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Работа с готовыми базами данных



1. Проектирование интерфейса программы

Запустите Дельфи и создайте новое приложение. Поместите на форму следующие компоненты: MainMenu (из Standard), Table (из BDE), DataSourse (из DataAccess), OpenDialog (из Dialogs). Все эти компоненты не будут видны в режиме исполнения и на форме могут располагаться где угодно.

Настройте взаимодействие между вторым и третьим компонентами. Для этого выделите Table1. В окне инспектора объектов найдите свойство DataBaseName и из выпадающего списка выберете псевдоним таблицы (Standard2). В свойстве TableName выберете имя таблицы данных. Свойство Active измените на True (истина). Если все указанные операции были выполнены, то это означает, что связь компонента Table1 с выбранной таблицей данных установлена успешно (рис. 9, а). Выделите DataSourse1 и выберете в свойстве DataSet в выпадающем списке Table1 (рис. 9, б).

Создайте главное меню с одним главным заголовком «Файл» с подзаголовком в нём «Открыть базу». Положите на форму компонент PageControl (из Win32) для создания многостраничных приложений и растяните его на всю форму, оставив между верхом компонента и строкой меню полосу в 3 ряда точек. Щелкните правой кнопкой мыши на компоненте PageControl1 и выберите левой кнопкой мыши подменю New Page. Всё поле PageControl1 заполнит компонент TabSheet1 (первая страница), с одноименной надписью на закладке сверху. Создайте вторую страницу аналогичным образом. Заголовки (Caption) этих элементов замените на другие, например, «Выборка» и «Вся база». Перейдите на страницу с названием «Вся база» и положите сверху на компонент TabSheet2 компонент DBGrids (из Data Controls), изменив размеры на всю возможную площадь. В свойстве DataSourse выберите DataSourse1. На второй странице появится вся база данных, таблица которой была указана в свойстве TableName компонента Table1. Для запрета редактирования базы, нажав на + слева от свойства Options, свойству dgEditing установите False (рис. 9, в).

Рис. 9. Вид инспектора объектов после настройки

Для выбора АВН, удовлетворяющих заданным условиям, перейдите на первую страницу с названием «Выборка». Поместите на форму компонент Panel (из Standard) и сотрите заголовок панели (свойство Caption сделайте пустым). Будем делать выбор АВН (силовых выключателей) по номинальному напряжению, номинальному току и току короткого замыкания. Поместите на форму три элемента ComboBox (см. рис. 10) и в их свойстве Visible (видимый – это свойство определяет, что этот элемент будет видимым во время исполнения программы или не будет видимым) установите значение False (компонент не будет видим). Поместите на форму компонент GroupBox (из Standard) и измените его заголовок на «Выбор по условию». Поместите на него три компонента CheckBox, заголовки которых замените на «Номинальное напряжение, кВ», «Номинальный ток, А» и «Ном. Ток отключения, кА». Красиво и быстро расположить кнопки можно следующим образом. При нажатой кнопке Shift последовательно нажмите левой кнопкой мыши на каждый из трех компонентов типа CheckBox. Они все окажутся выделенными одновременно. Выберите команду Edit/Align… (выравнивание) и в появившемся окне выравнивания (Alignment) в элементе RadioGroup с заголовком Horizontal (горизонтальное) выберете тип выравнивания, например, Left Sides (по левой стороне). Указатель выбора (точка) переместится в нужную позицию, показывая, тип горизонтального выравнивания. Вертикальное выравнивание выберите, например, Space equally (равное расстояние между компонентами) и подтвердите выбор нажатием OK. Выделенные компоненты расположатся симметрично и будут идеально выровнены по левой стороне. При ручном выравнивании на эту операцию уйдет существенно больше времени с худшим качеством выравнивания. Соответствующие компоненты ComboBox расположите рядом с кнопками CheckBox. Положите на панель кнопку

Рис. 10. Фрагмент страницы «Выборка»

(Button) и замените её заголовок, например, на «Начать». Положите на эту страницу формы компонент строковой таблицы StringGrid (из Additional). Установите количество колонок 5 в свойстве ColCount (число колонок) и число строк в свойстве RowCount ( число рядов). Установите линейки прокрутки в свойстве ScrollBars. Измените размеры таблицы. Положите на форму компонент ListBox.

2. Ввод кода программы

Дважды щелкните левой кнопкой мыши на форме. В заготовке процедуры кода впишите следующий код

procedure TForm1.FormCreate(Sender: TObject);

Begin

StringGrid1.Cells[0, 0]: ='Фирма производитель';

StringGrid1.Cells[1, 0]: ='Марка';

StringGrid1.Cells[2, 0]: ='Uном, кВ';

StringGrid1.Cells[3, 0]: ='Iном, А';

StringGrid1.Cells[4, 0]: ='Iном.отключения, А';

end;

Этот фрагмент будет выводить заголовки полей строковой таблицы, в которую будут выводиться часть значений параметров АВН, удовлетворяющих заданным условиям.

Код загрузки новой таблицы базы данных можно написать следующим образом. В меню подайте команду Файл/Открыть базуи в заготовке процедуры кода впишите следующее:

procedure TForm1.N2Click(Sender: TObject);

Begin

Table1.Active: =false;

if OpenDialog1.Execute then Table1.TableName: =OpenDialog1.FileName;

Table1.Active: =true;

end;

Изменение состояния видимости элемента выбора ComboBox в зависимости от условий выбора можно оформить следующим образом. Дважды щелкните левой кнопкой мыши на CheckBox1 (Номинальное напряжение) и окне кода программы заполните процедуру, как показано ниже:

procedure TForm1.CheckBox1Click(Sender: TObject);

Begin

if CheckBox1.Checked

Then

begin

ComboBox1.Visible: =true;

ComboBox1.ItemIndex: =0

end

else ComboBox1.Visible: =false;

end;

В этом фрагменте одновременно с установкой видимости элемента выбора делается установка на выбор первого элемента из списка шкалы номинальных напряжений, которую следует ввести в список ComboBox1. Аналогично следует ввести коды процедуры видимости второго и третьего условий выбора TForm1.CheckBox2Click и TForm1.CheckBox3Click. Их можно просто скопировать из первой процедуры и вставить во вторую и третью, изменив только номера 1 на 2 и 3, соответственно, во всех местах процедур, кроме заголовков, которые автоматически возникают при двойном щелчке на CheckBox2 и CheckBox3. В элемент ComboBox2 введите список номинальных токов выключателей, а в ComboBox3 – список номинальных токов отключения. В режиме выполнения программы в каждом из элементов выбора можно выбрать соответствующие параметры АВН. Фрагмент выбора по всем трем условиям объединён на рис. 11.

Выбор может быть сделан только в режиме выполнения, когда этот элемент выбран для анализа содержимого базы данных по этому условию. Если галочка в соответствующем условии выбора не стоит, то и элемент не видим, и выбор по нему никак не сделаешь.

 

Рис. 11. Выпадающие списки

Фрагмент программы для выбора АВН по условиям приведён ниже:

procedure TForm1.Button1Click(Sender: TObject);

function CheckConditions: boolean; {Функция проверки условий выбора}

var l1, l2, l3: boolean;

Begin

if CheckBox1.Checked = false {Если нет проверки Uном}

then l1: =true {1 условие истинно – исключаться АВН по нему не будет}

elseif ComboBox1.ItemIndex=0 {Действия, если проверка по Uном включ.}

then l1: = Table1.FieldValues['Unom']< = 10.5

else if ComboBox1.ItemIndex = ComboBox1.ComponentCount-1 then

l1: = Table1.FieldValues['Unom'] > 1100

else l1: = (Table1.FieldValues['Unom'] >

StrToFloat(ComboBox1.Items[ComboBox1.ItemIndex-1])) and

(Table1.FieldValues['Unom'] <

StrToFloat(ComboBox1.Items[ComboBox1.ItemIndex+1]));

if CheckBox2.Checked = false {Если нет проверки Iном}

then l2: =true {2 условие истинно – исключаться АВН по нему не будет}

//если проверка по Iном включена и если условие - номинальный ток

//из таблицы базы данных меньше заданного в компоненте ComboBox2,

//то второму условию (l2) присваивается значение ложь

else l2: =Table1.FieldValues['Inom'] > =

StrToFloat(ComboBox2.Items[ComboBox2.ItemIndex]);

if CheckBox3.Checked = false then l3: =true

else l3: =Table1.FieldValues['Inomotkl'] > =

StrToFloat(ComboBox3.Items[ComboBox3.ItemIndex]);

result: =l1 and l2 and l3;

end; {function CheckCondition}

var l: boolean; i, j: integer;

Begin

for i: =0 to 4 do for j: =1 to 130 do StringGrid1.Cells[i, j]: ='';

ListBox1.Clear;

Table1.First; {Переход на первую запись базы данных}

j: =1;

for i: =1 to Table1.RecordCount do {Цикл до конца базы}

begin

l: =CheckConditions;

if l then begin

StringGrid1.Cells[0, j]: =Table1.FieldValues['Firma'];

ListBox1.Items.Add(Table1.FieldValues['Marka']);

StringGrid1.Cells[1, j]: =Table1.FieldValues['Marka'];

StringGrid1.Cells[2, j]: =FloatToStrF(Table1.FieldValues['Unom'], ffFixed, 4, 1);

StringGrid1.Cells[3, j]: =FloatToStrF(Table1.FieldValues['Inom'], ffFixed, 5, 1);

StringGrid1.Cells[4, j]: =FloatToStrF(Table1.FieldValues['Inomotkl'], ffFixed, 4, 1);

j: =j+1;

end; {if}

Table1.Next; {Переход на следующую запись базы данных}

end; {Конец цикла просмотра базы}

end; {procedure TForm1.Button1Click}

После ввода кода сохраните программу в своём отдельном каталоге для этой программы, подав команду File/Save all. Убедитесь, что в этом каталоге находятся не менее 6 файлов. Запустите программу на исполнение и выполните отладку программы. Выполните различные варианты выбора АВН по заданным условиям и убедитесь, что программа работает без сбоев.

При выполнении расчета баланса РУ при проектировании формы в свойстве DataBaseName компонента Table1 следует выбрать Файлы Excel, а в свойстве TableName таблицу с получасовыми данными по различным присоединениям РУ. При выборе таблицы появится окно пароля доступа к базе (Database Login). Если пароль не был изменен, то попробуйте ввести в поле имени пользователя (User Name) имя создателей SYSDBA, а в поле пароля (Password) пароль разработчиков – masterkey. Если по указанному паролю вход не получается, то обратитесь к преподавателю. Разберитесь в структуре таблицы Excel и напишите код программы подсчета баланса РУ с выводом получасовых (3 минутных, часовых, суточных, месячных) значений на график. Проанализируйте полученные графики баланса электроэнергии РУ и сделайте вывод о потерях энергии и точности измерений. Дайте предложения по совершенствованию ситуации с учетом энергии по данному РУ.

Порядок выполнения работы

1. Прочитать описание и проделать самостоятельно различные пункты описания работы, добившись достаточной скорости проектирования.

2. Получить задание у преподавателя на расчет баланса электроэнергии по какому-либо РУ подстанции и выбор оборудования по заданным параметрам.

3. Написать и отладить программы. Провести анализ баланса электроэнергии. Получить список оборудования, удовлетворяющего заданным параметрам.

Отчет по лабораторной работе состоит в двух работающих программах, соответствующих заданию преподавателя, сохраненных в каталоге lab6\1\ и lab6\2\. Всего в каждом каталоге должно находиться минимум семь файлов.

Контрольные вопросы

1. Для чего нужна программа BDEAdministrator?

2. Как создать свой псевдоним баз данных в BDEAdministrator?

3. Как записать путь к каталогу баз данных и сохранить свой псевдоним в списке возможных псевдонимов?

4. Для чего нужна программа Database Desktop?

5. Как создать шаблон таблицы базы данных?

6. Как скопировать структуру таблицы с другой таблицы базы данных?

7. Как ввести тип поля для данных integer, real, char, string и т.п.?

8. Как редактировать готовую таблицу в BDEAdministrator?

9. Какие компоненты нужно поместить на форму, чтобы получить доступ к базам данных?

10 Как установить связь с какой-либо таблицей баз данных?

11. По какому признаку можно узнать, что связь с таблицей базы данных уставлена успешно?

12. Как получить доступ к таблице данных из элемента DBGrids?

13. Как создать многостраничное приложение?

14. Для чего нужен компонент Panel?

15. Как объединить несколько компонентов CheckBox в одну группу?

16. Как написать процедуру, реагирующую на щелчок мыши на каком-либо компоненте, например, на CheckBox?

17. Как взять какое-либо значение из поля базы данных в программу?

18. Как записать данные в ячейку строковой таблицы StringGrid?

19. Каково назначение функции RecordCount?

20. Как перейти на первую запись базы, на следующую и просмотреть последовательно всю базу данных?

Оглавление

Предисловие
Лабораторная работа 1…………………………………………………..
Лабораторная работа 2…………………………………………………..
Лабораторная работа 3…………………………………………………..
Лабораторная работа 4…………………………………………………..
Лабораторная работа 5…………………………………………………..
Лабораторная работа 6…………………………………………………..

 

 

Александр Евгеньевич Усачев

Лабораторные работы 1 - 6

по курсу

«Применение ЭВМ в высоковольтной электроэнергетике»

(Кафедра электрических станций КГЭУ)

 

Редактор издательского отдела Н.Г.Приклонская

Изд.лиц. №155 от 30.10.95 Темплан издания КГЭУ 2001г.

Подписано к печати Формат 60х84/16

Гарнитура «Times» Вид печати РОМ Бумага “Business’

Физ.печ.л. Усл.печ.л. Уч.-изд.л.

Тираж 300 Заказ

Издательский отдел КГЭУ

430066, Казань, Красносельская, 51

Типография КГЭУ

430066, Казань, Красносельская, 51.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-28; Просмотров: 638; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.056 с.)
Главная | Случайная страница | Обратная связь