Клиентская часть технологической среды для разработки больших экономических моделей: компоненты поддержки работы эксперта-экономиста при формировании и отладке (в расчетном режиме) структурного текста модели

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

ет одну строку на экране).

3. Управляющая сетка. Форма, которая отображает несколько строк одной таблицы (каждая строка таблицы базы данных занимает несколько строк экрана).

4. Главная-подчиненная. Форма, которая показывает строки двух или более связанных таблиц.

При разработке приложения прежде всего создаются и сохраняются в хранилище объектов Delphi формы-предки. Затем на их основе создаются все формы, являющиеся потомками.

 

Рис.6. Иерархия форм.

2.2.5 Создание псевдонима BDE

Первое, что надо сделать при разработке приложения базы данных с помощью Delphi, - создать псевдоним BDE, представляющий базу данных нашего приложения. Созданный псевдоним будет использоваться в приложении для обращения к реальной базе данных.

Для создания псевдонима мы используем многофункциональное средство Delphi Database Explorer.

 

Рис.7. Окно Database Explorer после добавления нового псевдонима BDE.

 

Далее рассмотрим подробнее некоторые модули отвечающие за связь с базой данных.

 

  1. Модуль формы fmNew

Если мы выберем пункт меню ФайлНовая модель, тогда вызывается модуль, который отвечает за открытие новой модели.

Рис.8. Форма fmNew.

 

Модуль состоит из пяти процедур. Рассмотрим только наиболее интересующие нас.

 

Процедура TfmNew.BitBtn1Click

Рис.9. Алгоритм работы процедуры TfmNew.BitBtn1Click

 

Описываем переменные:

var

s : String;

i : longint;

Если в строке не ввели имя модели тогда вывести сообщение Введите имя модели

begin

if eNew.Text= then begin

MessageDlg(Введите имя модели, mtError, [mbOk], 0);

eNew.SetFocus;

exit;

end;

Если не ввели путь к базе данных модели вывести сообщение об ошибке

if ePath.Text= then begin

MessageDlg(Введите путь к базе данных модели, mtError, [mbOk], 0);

ePath.SetFocus;

exit;

end;

Если не ввели название файла модели вывести сообщение об ошибке

if eModel.Text= then begin

MessageDlg(Введите название файла модели, mtError, [mbOk], 0);

eModel.SetFocus;

exit;

end;

Идентификация имени модели

fmMain.DbPath:=ePath.Text+\+eNew.text+.gdb;

fmMain.Model:=ePath.Text+\+eNew.text+.gdb;

Вырезаем имя файла с текстом формул

s:=UpperCase(eModel.Text);

if (pos(.MDL,s)=0) then begin

s:=;

if pos(.,eModel.Text)=length(eModel.Text)-3

then for i:=1 to length(eModel.Text)-4 do s:=s+eModel.Text[i];

s:=eModel.Text+.MDL;

end;

fmMain.FModel:=s;

Обработка исключительной ситуации

try fileUtil.copyfile(extractfilepath(application.ExeName)+base.gdb,ePath.Text+\+eNew.text+.gdb,nil);

except

showmessage(Не найден прототип базы);

exit;

end;

Добавляем параметры подключения к базе данных.

with fmmain.DataBase do begin

Connected:=false;

Params.Clear;

params.Add(user name=sysdba);

params.Add(password=masterkey);

params.Add(server name=+ePath.Text+\+eNew.text+.gdb);

Connected:=true;

end;

Модуль формы fmForm1.

Рис.10. алгоритм работы процедуры TfmForm1.FormCreate формы fmForm1.

 

Процедура TfmForm1.FormCreate.

begin

i:=1;

strQ:=select ID,path,MFile from Model;

qMain.Close;

qsec.Close;

with db1 do begin

Connected:=false;

Params.Clear;

params.Add(user name=sysdba);

params.add(password=masterkey);

params.Add(server name=+fmmain.dbPath);

Connected:=true;

end;

model_name:=fmMain.DbPath;

qMain.SQL.Clear;

qSec.SQL.Clear;

qsec.Close;

Выборка имени модели из таблицы Model

Self.qMain.SQL.Add(strQ);

Self.qMain.Open;

model:=tv.Items.AddFirst(nil,Self.qMain.FieldByName(ID).AsString);

fmMain.FModel:=Self.qMain.FieldByName(MFile).AsString;

Цикл рекурсивной выборки подмоделей и переменных

while i<Self.qMain.RecordCount do begin

Self.qMain.First;

Self.qMain.MoveBy(i);

child_model:=tv.Items.AddChild(model,Self.qMain.FieldByName(ID).AsString);

strTmp:=Self.qMain.FieldByName(Path).AsString;

Self.qMain.close;

showchild(child_model, strTmp);

inc(i);

strQ:=select ID,path from Model;

Self.qMain.SQL.Clear;

Self.qMain.SQL.Add(strQ);

Self.qMain.Open;

end;

Выборка параметров моделей из таблицы Params

i:=0;

strQ:=Select id from params;

Self.qMain.close;

Self.qMain.SQL.Clear;

Self.qMain.SQL.Add(strQ);

Self.qMain.Open;

Заполнение дерева

while i<Self.qMain.RecordCount do begin

(tv.Items.AddChild(model,Self.qMain.FieldByName(id).AsString));

Self.qMain.Next;

inc(i);

end;

count_grids:=0;

qMain.Close;

qSec.close;

Визуализация дерева и таблицы

fmMain.SpeedButton3.Enabled:=true;

fmMain.SpeedButton2.Enabled:=true;

fmMain.SpeedButton1.Enabled:=true;

treevisible:=true;

tablevisible:=true;

graphvisible:=true;

model.Expand(true);

 

end;

 

Модуль формы fmVar

Форма отвечающая за ввод переменных.

 

Рис.11. Форма fmVar.

 

Процедура TfmVar.BitBtn1Click.

Дерево модели может включать в себя переменные, подмодели, а также группы из переменных и подмоделей, но на данном этапе развития проекта понятие группы пока не рассматривается.. Также пока не существует модели макроэкономики, которая была бы структурирована достаточным образом, т.е. в нее кроме переменных входила бы хоть одна подмодель. Таким образом, на данном этапе развития проекта имеет смысл говорить о модели, состоящей только из переменных. Программно это выполнено следующим образом: после ввода имени переменных, комментария и индексов, от которых зависит переменная, из таблицы indexes.db с помощью SQL - запроса выбирается информация по индексам, от которых зависит переменная, и, на основании этой информации, формируется таблица для первоначальных значений. Далее, после того, как пользователь ввел начальные значения переменной, заполняются таблицы inter.db, param.db, params.db и var_value.db. Все это делает процедура класса fmVar.

Рис.11. алгоритм работы процедуры TfmVar.BitBtn1Click формы fmVar.

var

i,j,num : longint;

Two : Boolean; - имеет значение