Смекни!
smekni.com

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

Минимально необходимое оборудование:

PC.................................................... 80486 SX2-66;

RAM................................................ 12 MB;

HDD................................................ 50 MB свободных;

Screen.............................................. Color VGA.

Рекомендуемое оборудование:

PC.................................................... Pentium 133 МГц;

RAM................................................ 32 MB;

HDD................................................ 30 MB свободных;

Screen.............................................. Color SVGA;

Необходимое программное обеспечение:

ОС................................................... Windows’95;

Машинабазданных....................... Borland DataBase Engine 3.0;

Приложение.................................... Система моделирования макроэкономики.

2.2 Алгоритмы предварительной подготовки данных для расчета экономической модели

2.2.1 Общий алгоритм работы программы


2.2.2 Структура программы

Структура программы представлена на риc.5

Рис.5. Структура программы.


2.2.3 Архитектура BorlandDatabaseEngine (IDAPI) – ядро доступа к данным.

За более чем 25-летнюю историю развития реляционных баз выработался ряд новых требований к методам и средствам доступа к данным.За такую долгую историю в промышленном использовании нашли своё применение огромное количество форматов хранения данных.Поэтому одним из основных вопросов дальнейшего развития СУБД стал вопрос о создании единой среды обработки данных.На базе многолетнего опыта создания инструментальных средств компания Borland предоставила разработчикам свою технологию доступа к данным – BorlandDatabaseEngine, Известную также как IDAPI (IntegratedDatabaseAPI).Идеология доступа к локальным и клиент/серверным данным существенно отличаются (в одном случае используется навигационный подход, в другом – язык SQL, ориентированный на множество данных). BDE объединяет эти подходы без уменьшения функциональных возможностей кождого из них. Поэтому BDE (IDAPI) положен в основу инструментов создания масштабируемых систем обработки данных, одним из которых является Delphi.

BDE предоставляет единый набор функций (API) обработки локальных и серверных данных. Обращение к различным источникам данных основано на коцепции драйверов. Таким образом обеспечивается интерфейс к наиболее распространённым форматам/способам хранения данных: dBase, Paradox и серверным источникам InterBase, Oracle, Sysbase, Informix, MSSQL-Server.

Когда речь заходит об обработке данных в структуре клиент/сервер следует понимать, что реализация доступа к серверным данным несколько усложняется. В этом случае вводится понятие middleware – некоего среднего звена, отвечающего за взаимодействие универсального интерфейса (в нашем случае IDAPI) с клиентскими средствами сервера БД. В качестве такого middleware для пользователей BDE выступает BorlandSQLLinks, также реализованный в виде набора драйверов для каждого конкретного сервера.


Рис. 6 отражает такой подход к обработке серверных данных.



2.2.4 Иерархия форм.

Формы баз данных Delphi можно разделить на четыре следующих функциональных класса.

1. Редактирование и ввод. Простая форма, представляющая одну запись одной таблицы.

2. Сетка. Форма, которая отображает несколько строк одной таблицы, как это делается в программах электронных таблиц (каждая строка таблицы базы данных занимает одну строку на экране).

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

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

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


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

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

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

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


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

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

2.2.6 Модуль формы 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.