Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ELIK / ELIK / ALL.DOC
Скачиваний:
17
Добавлен:
16.04.2013
Размер:
4.19 Mб
Скачать

Первоначальные данные о модели

Первоначальные данные о модели подразумевают под собой ввод всей служебной информации о модели - путь, где находится база данных модели, название файла с текстом ограничений и, наконец, имени модели. Также можно ввести и комментарий, но этот параметр необязателен.

Приведем пример процедуры (форма fmNew, модуль psNew.pas), которая инициализирует соответствующие поля основной структуры fmMain при вводе предварительных данных о модели.

procedure TfmNew.BitBtn1Click(Sender: TObject);

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;

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;

fmMain.Model:=fmMain.DbPath;

fmMain.qMain.DatabaseName:=fmMain.DbPath;

fmMain.qMain.SQL.Clear;

fmMain.qMain.SQL.Add('CREATE TABLE Model (');

fmMain.qMain.SQL.Add(' ID char(10),');

fmMain.qMain.SQL.Add(' Remark char(50),');

fmMain.qMain.SQL.Add(' Path char(100),');

fmMain.qMain.SQL.Add(' MFile char(20));');

fmMain.qMain.ExecSQL;

fmMain.qMain.SQL.Clear;

s:='INSERT INTO Model VALUES ('+#39+eNew.Text+#39+','+#39+eRemark.Text+#39+','+#39+UPPERCASE(fmMain.DbPath)+#39+','+#39+s+#39+');';

fmMain.qMain.SQL.Add(s);

fmMain.qMain.ExecSQL;

Close;

end;

Создание структуры модели

Структуру модели можно разделить на файловую структуру и логическую. Под логической структурой понимается дерево модели. Файловая структура создается автоматически, как только пользователь ввел все первоначальные данные о модели; для того, чтобы создать дерево модели, в главной форме следует выбрать пункт меню «Просмотр\Структура».

Файловая структура модели

Фактически, под файловой структурой понимается база данных модели. Она создается при помощи процедуры в главном модуле программы с помощью SQL - выражений. На данном этапе все таблицы базы данных, кроме model.db будут пустыми. Файл с ограничениями не создается, по умолчанию считается, что он существует.

Процедура, которая создает файловую структуру, находится в классе главного окна (модуль psMain.pas) и выглядит следующим образом:

procedure TfmMain.N2Click(Sender: TObject);

begin

NewModel:=True;

fmNew.ShowModal; // Вызов запроса на ввод первоначальных данных по модели

if not NewModel then exit;

qMain.DatabaseName:=Model;

qSec.DatabaseName:=Model;

qMain.SQL.Clear;

qMain.SQL.Add('CREATE TABLE Inter (');

qMain.SQL.Add(' ID char(10),');

qMain.SQL.Add(' IID char(10),');

qMain.SQL.Add(' Kind char);');

qMain.ExecSQL;

qMain.SQL.Clear;

qMain.SQL.Add('CREATE TABLE Params (');

qMain.SQL.Add(' ID char(10),');

qMain.SQL.Add(' Remark char(50));');

qMain.ExecSQL;

qMain.SQL.Clear;

qMain.SQL.Add('CREATE TABLE Param (');

qMain.SQL.Add(' ID char(10),');

qMain.SQL.Add(' IID char(10),');

qMain.SQL.Add(' iid_value integer,');

qMain.SQL.Add(' num integer);');

qMain.ExecSQL;

qMain.SQL.Clear;

qMain.SQL.Add('CREATE TABLE Indexes (');

qMain.SQL.Add(' ID char(5),');

qMain.SQL.Add(' Mn integer,');

qMain.SQL.Add(' Mx integer,');

qMain.SQL.Add(' Step integer);');

qMain.ExecSQL;

qMain.SQL.Clear;

qMain.SQL.Add('CREATE TABLE Var_value (');

qMain.SQL.Add(' ID char(10),');

qMain.SQL.Add(' num integer,');

qMain.SQL.Add(' id_value char(20),');

qMain.SQL.Add(' ver integer);');

qMain.ExecSQL;

qMain.SQL.Clear;

qMain.SQL.Add('CREATE TABLE InForm (');

qMain.SQL.Add(' id char(10),');

qMain.SQL.Add(' id_Name char(10),');

qMain.SQL.Add(' Present char(30));');

qMain.ExecSQL;

qMain.SQL.Clear;

TypeCount:=0;

N5.Enabled:=True;

end;

Соседние файлы в папке ELIK