📄 eerstoreindatabase.pas
字号:
'This Version: %s', 218, DMDB.SchemaSQLQuery.Fields[2].AsString, VersionEd.Text),
mtConfirmation, [mbYes, mbNo], 0)<>mrYes)then
begin
VersionEd.Text:=DMDB.SchemaSQLQuery.Fields[2].AsString;
AutoIncVersionCBoxClick(self);
end;
EERModel.IDVersion:=DMDB.SchemaSQLQuery.Fields[1].AsInteger+1;
end;
end;
DMDB.SchemaSQLQuery.Close;
end;
//Get new ID
if(EERModel.IDModel=0)then
begin
DMDB.SchemaSQLQuery.SQL.Text:='SELECT max(idmodel)+1 as oldid FROM dbdesigner4';
DMDB.SchemaSQLQuery.Open;
if(DMDB.SchemaSQLQuery.EOF)then
EERModel.IDModel:=1
else
begin
if(DMDB.SchemaSQLQuery.Fields[0].AsString<>'')and
(not(DMDB.SchemaSQLQuery.Fields[0].IsNull))then
EERModel.IDModel:=DMDB.SchemaSQLQuery.Fields[0].AsInteger
else
EERModel.IDModel:=1;
end;
DMDB.SchemaSQLQuery.Close;
EERModel.IDVersion:=1;
MakeUpdate:=False;
end;
if(UseVersionCBox.Checked)then
begin
if(VersionEd.Text<>EERModel.VersionStr)then
begin
inc(EERModel.IDVersion);
MakeUpdate:=False;
end;
end;
//Set VersionStr before saving
EERModel.VersionStr:=VersionEd.Text;
//Get Model
EERModel.SaveToFile(DMMain.SettingsPath+'temp.xml',
True, False, False);
AssignFile(theFile, DMMain.SettingsPath+'temp.xml');
Reset(theFile);
try
theModel:='';
while(Not(EOF(theFile)))do
begin
ReadLn(theFile, s);
theModel:=theModel+s+#13#10;
end;
finally
CloseFile(theFile);
DeleteFile(DMMain.SettingsPath+'temp.xml');
end;
StatusLbl.Caption:=DMMain.GetTranslatedMessage(
'Storing model in the database...', 237);
StatusLbl.Refresh;
Application.ProcessMessages;
if(Not(MakeUpdate))then
begin
DMDB.SchemaSQLQuery.SQL.Text:='UPDATE dbdesigner4 SET '+
'iscurrent=0 WHERE idmodel='+IntToStr(EERModel.IDModel);
DMDB.SchemaSQLQuery.ExecSQL(True);
theModel:=DMMain.ReplaceString(theModel, '''', '''''');
theModel:=DMMain.ReplaceString(theModel, '\', '\\');
DMDB.SchemaSQLQuery.SQL.Text:='INSERT INTO dbdesigner4('+
'idmodel, idversion, name, version, username, createdate, '+
'model, info, iscurrent, ischeckedout) '+
'VALUES('+IntToStr(EERModel.IDModel)+', '+
IntToStr(EERModel.IDVersion)+', '+
DMMain.FormatText4SQL(ModelNameEd.Text)+', '+
DMMain.FormatText4SQL(VersionEd.Text)+', '+
DMMain.FormatText4SQL(DMDB.CurrentDBConn.Params.Values['User_Name'])+', '+
''''+FormatDateTime('YYYY-MM-DD HH:NN:SS', Now)+''', '+
''''+theModel+''', '+
DMMain.FormatText4SQL(InfoMemo.Text)+', '+
'1, 0)';
end
else
DMDB.SchemaSQLQuery.SQL.Text:='UPDATE dbdesigner4 set '+
'name='+DMMain.FormatText4SQL(ModelNameEd.Text)+', '+
'version='+DMMain.FormatText4SQL(VersionEd.Text)+', '+
'username='+DMDB.CurrentDBConn.Params.Values['User_Name']+', '+
'model='''+theModel+''', '+
'info='+DMMain.FormatText4SQL(InfoMemo.Text)+', '+
'createdate='''+FormatDateTime('YYYY-MM-DD HH:NN:SS', Now)+''', '+
'iscurrent=1, ischeckedout=0 '+
'WHERE idmodel='+IntToStr(EERModel.IDModel)+' and idversion='+IntToStr(EERModel.IDVersion);
DMDB.SchemaSQLQuery.ExecSQL(True);
EERModel.ModelFilename:=ExtractFilePath(EERModel.ModelFilename)+ModelNameEd.Text+ExtractFileExt(EERModel.ModelFilename);
EERModel.UseVersionHistroy:=UseVersionCBox.Checked;
EERModel.AutoIncVersion:=AutoIncVersionCBox.Checked;
EERModel.DefSaveDBConn:=DMDB.CurrentDBConn.Name;
EERModel.ModelHasChanged;
StatusLbl.Caption:=DMMain.GetTranslatedMessage(
'The model was successfully stored in the database.', 238);
StatusLbl.Refresh;
except
EERModel.IDModel:=oldidmodel;
EERModel.IDVersion:=oldidversion;
raise;
end;
ModalResult:=mrOK;
end
else if(DialogMode=1)then
begin
if(SavedModelsTV.Selected<>nil)then
begin
DMDB.SchemaSQLQuery.ParamCheck:=False;
DMDB.SchemaSQLQuery.SetSchemaInfo(stNoSchema, '', '');
DMDB.SchemaSQLQuery.SQL.Text:=
'SELECT model, name FROM dbdesigner4 WHERE '+
'idmodel='+
SavedModelsTV.Selected.SubItems[3]+' and '+
'idversion='+
SavedModelsTV.Selected.SubItems[4];
DMDB.SchemaSQLQuery.Open;
s:=DMDB.SchemaSQLQuery.Fields[1].AsString;
TMemoField(DMDB.SchemaSQLQuery.Fields[0]).SaveToFile(DMMain.SettingsPath+s+'.xml');
DMDB.SchemaSQLQuery.Close;
EERModel.LoadFromFile(DMMain.SettingsPath+s+'.xml');
DeleteFile(DMMain.SettingsPath+s+'.xml');
ModalResult:=mrOK;
end;
end;
end;
procedure TEERStoreInDatabaseForm.UseVersionCBoxClick(Sender: TObject);
begin
VersionLbl.Enabled:=UseVersionCBox.Checked;
VersionEd.Enabled:=UseVersionCBox.Checked;
AutoIncVersionCBox.Enabled:=UseVersionCBox.Checked;
end;
procedure TEERStoreInDatabaseForm.AutoIncVersionCBoxClick(Sender: TObject);
var s, s1: string;
begin
if(Not(AutoIncVersionCBox.Checked))or
(Not(UseVersionCBox.Checked))or
(EERModel.IDModel=0)then
VersionEd.Text:=EERModel.VersionStr
else
begin
s:=EERModel.VersionStr;
while(Pos('.', s)>0)do
s:=Copy(s, Pos('.', s)+1, Length(s));
s1:=Copy(EERModel.VersionStr, 1, Length(EERModel.VersionStr)-Length(s));
try
if(s<>'')then
VersionEd.Text:=s1+IntToStr(StrToIntDef(s, 0)+1)
else
VersionEd.Text:=EERModel.VersionStr;
except
VersionEd.Text:=EERModel.VersionStr;
end;
end;
end;
procedure TEERStoreInDatabaseForm.ShowModelsInDB;
var theTreeNode, theModelNode: TTreeNode;
idmodel: integer;
begin
//List Model in DB
SavedModelsTV.Items.Clear;
theModelNode:=nil;
idmodel:=-1;
DMDB.SchemaSQLQuery.ParamCheck:=False;
DMDB.SchemaSQLQuery.SetSchemaInfo(stNoSchema, '', '');
DMDB.SchemaSQLQuery.SQL.Text:=
'SELECT idmodel, idversion, name, version, username, '+
' createdate, info FROM dbdesigner4 '+
'ORDER BY idmodel, iscurrent desc, idversion desc';
DMDB.SchemaSQLQuery.Open;
while(Not(DMDB.SchemaSQLQuery.EOF))do
begin
if(idmodel<>DMDB.SchemaSQLQuery.FieldByName('idmodel').AsInteger)then
begin
idmodel:=DMDB.SchemaSQLQuery.FieldByName('idmodel').AsInteger;
theTreeNode:=SavedModelsTV.Items.Add(nil,
DMDB.SchemaSQLQuery.FieldByName('name').AsString);
theModelNode:=theTreeNode;
end
else
theTreeNode:=SavedModelsTV.Items.AddChild(theModelNode,
DMDB.SchemaSQLQuery.FieldByName('name').AsString);
theTreeNode.ImageIndex:=0;
theTreeNode.SelectedIndex:=0;
theTreeNode.SubItems.Add(DMDB.SchemaSQLQuery.FieldByName('version').AsString);
theTreeNode.SubItems.Add(DMDB.SchemaSQLQuery.FieldByName('username').AsString);
theTreeNode.SubItems.Add(FormatDateTime('yyyy-mm-dd hh:nn', DMDB.SchemaSQLQuery.FieldByName('createdate').AsDateTime));
theTreeNode.SubItems.Add(DMDB.SchemaSQLQuery.FieldByName('idmodel').AsString);
theTreeNode.SubItems.Add(DMDB.SchemaSQLQuery.FieldByName('idversion').AsString);
theTreeNode.SubItems.Add(DMDB.SchemaSQLQuery.FieldByName('info').AsString);
DMDB.SchemaSQLQuery.Next;
end;
DMDB.SchemaSQLQuery.Close;
if(SavedModelsTV.Items.Count>0)then
SavedModelsTV.Selected:=SavedModelsTV.Items[0];
end;
procedure TEERStoreInDatabaseForm.SavedModelsTVDblClick(Sender: TObject);
begin
if(DialogMode=1)then
SubmitBtnClick(self);
end;
procedure TEERStoreInDatabaseForm.DeleteModelfromDatabaseMIClick(
Sender: TObject);
begin
if(SavedModelsTV.Selected<>nil)then
if(MessageDlg(DMMain.GetTranslatedMessage('Are you sure you want to delete the model '+
'from database?'+#13#10+'All Versions will be deleted.', 219),
mtConfirmation, [mbYes, mbNo], 0)=mrYes)then
begin
DMDB.SchemaSQLQuery.ParamCheck:=False;
DMDB.SchemaSQLQuery.SetSchemaInfo(stNoSchema, '', '');
DMDB.SchemaSQLQuery.SQL.Text:='DELETE FROM dbdesigner4 '+
'WHERE idmodel='+SavedModelsTV.Selected.SubItems[3];
DMDB.SchemaSQLQuery.ExecSQL(True);
ShowModelsInDB;
end;
end;
procedure TEERStoreInDatabaseForm.DeleteVersionfromDatabaseMIClick(
Sender: TObject);
begin
if(SavedModelsTV.Selected<>nil)then
if(MessageDlg(DMMain.GetTranslatedMessage('Are you sure you want to delete this version '+
'of the model from database?', 220),
mtConfirmation, [mbYes, mbNo], 0)=mrYes)then
begin
DMDB.SchemaSQLQuery.ParamCheck:=False;
DMDB.SchemaSQLQuery.SetSchemaInfo(stNoSchema, '', '');
DMDB.SchemaSQLQuery.SQL.Text:='DELETE FROM dbdesigner4 '+
'WHERE idmodel='+SavedModelsTV.Selected.SubItems[3]+' and '+
'idversion='+SavedModelsTV.Selected.SubItems[4];
DMDB.SchemaSQLQuery.ExecSQL(True);
ShowModelsInDB;
end;
end;
procedure TEERStoreInDatabaseForm.SavedModelsTVChange(Sender: TObject;
Node: TTreeNode);
var theStrings: TStringList;
i: integer;
begin
if(DialogMode=1)then
if(SavedModelsTV.Selected<>nil)then
begin
theStrings:=TStringList.Create;
try
theStrings.Text:=SavedModelsTV.Selected.SubItems.Text;
i:=0;
while(i<5)and(theStrings.Count>0)do
begin
theStrings.Delete(0);
inc(i);
end;
InfoMemo.Text:=theStrings.Text;
finally
theStrings.Free;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -