⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eerstoreindatabase.pas

📁 DBDesigner 4 is a database design system that integrates database design, modelling, creation and ma
💻 PAS
📖 第 1 页 / 共 2 页
字号:
              '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 + -