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

📄 mainform.pas

📁 ACCESS 数据库管理工具
💻 PAS
字号:
unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  StdCtrls, RzEdit, Buttons, uPageManage, XPMan, Dialogs, ImgList, DB, ComCtrls,
  RzTreeVw, RzSplit, RzTabs, ToolWin, RzStatus, ExtCtrls, RzPanel, Menus;
type

  Tfrmmain = class(TForm)
    RzStatusBar1: TRzStatusBar;
    tlb1: TToolBar;
    RzPage: TRzPageControl;
    ds1: TDataSource;
    btnOpen: TToolButton;
    RzClockStatus1: TRzClockStatus;
    RzStatusPane1: TRzStatusPane;
    barFileName: TRzStatusPane;
    btnClose: TToolButton;
    btn5: TToolButton;
    btnRun: TToolButton;
    btn11: TToolButton;
    il1: TImageList;
    dlgOpenMDB: TOpenDialog;
    ilDataBase: TImageList;
    btnNew: TToolButton;
    RzSizePanel1: TRzSizePanel;
    tvDb: TRzTreeView;
    btnZip: TToolButton;
    btn1: TToolButton;
    RzSizePanel2: TRzSizePanel;
    lvDataType: TListView;
    pmSql: TPopupMenu;
    SELECT1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    procedure btnOpenClick(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure btnRunClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure RzPageClose(Sender: TObject; var AllowClose: Boolean);
    procedure btnNewClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure tvDbDblClick(Sender: TObject);
    procedure btnExpClick(Sender: TObject);
    procedure btnZipClick(Sender: TObject);
    procedure btnSelClick(Sender: TObject);
    procedure tvDbChange(Sender: TObject; Node: TTreeNode);
    procedure SELECT1Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
  private
    PageList: TPageManage;
    dbFileName: string;
    procedure OpenDataBase(DBFileName: string);

  public
    { Public declarations }
  end;

var
  frmmain: Tfrmmain;
implementation
uses UntData, cxExportGrid4Link, uStdForm, uBaseForm, uAccessTool, uPublic, ufrmWaiting, typinfo;
{$R *.dfm}


procedure Tfrmmain.OpenDataBase;
var
  liststr: TStringList;
  i: Integer;
  ss: TTreeNode;
begin
  if DataForm.SetConnStr(dbFileName) then
  begin
    barFileName.Caption := dbFileName;
    tvDb.Items.Clear;
    liststr := TStringList.Create;

    DataForm.conYYSC.GetTableNames(liststr, false);
    for i := 0 to liststr.Count - 1 do
    begin
      tvDb.Items.AddChild(nil, liststr.Strings[i]);
    end;
    liststr.Free;
  end
  else
    Application.MessageBox('打开数据库文件失败!!', '错误', MB_OK + MB_ICONSTOP);
end;

procedure Tfrmmain.btnOpenClick(Sender: TObject);
var
  liststr: TStringList;
  i: Integer;
  ss: TTreeNode;
begin
  if not dlgOpenMDB.Execute then Exit;
  dbFileName := dlgOpenMDB.FileName;
  OpenDataBase(dbFileName);
  lvDataType.Clear;
end;

procedure Tfrmmain.btnCloseClick(Sender: TObject);
begin
  Close;
end;

procedure Tfrmmain.btnRunClick(Sender: TObject);
begin
  if PageList.Count > 0 then
    if dbFileName <> '' then
    begin
      OpenWaiting('正在查询数据,请稍候...');
      PageList.ActivePage.DoExecSQL;

      CloseWaiting;
    end;
end;

procedure Tfrmmain.FormCreate(Sender: TObject);
begin
  dbFileName := '';
  PageList := TPageManage.Create(RzPage);
  if paramCount > 0 then
  begin
    dbfileName := Trim(ParamStr(1));
    OpenDataBase(dbfileName);
  end;
end;


procedure Tfrmmain.FormDestroy(Sender: TObject);
begin
  PageList.Free;
end;

procedure Tfrmmain.N1Click(Sender: TObject);
var
  TempFomr: TStdForm;
begin
  TempFomr := TStdForm.Create(Application);
  TempFomr.FormType := cmd_Form;
  TempFomr.mmoSQL.Text := ' DELETE  FROM  ' + tvDb.Selected.Text;
  PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;


procedure Tfrmmain.N2Click(Sender: TObject);
var
  TempFomr: TStdForm;
  I: Integer;
  Str1, str2: string;
begin
  TempFomr := TStdForm.Create(Application);
  TempFomr.FormType := cmd_Form;
  Str1 := 'INSERT INTO ' + tvDb.Selected.Text + '(';
  str2 := 'VALUES (';
  for I := 0 to lvDataType.Items.Count - 1 do
  begin
    if i <> 0 then
    begin
      Str1 := Str1 + #13#10 + ',';
      Str2 := Str2 + #13#10 + ',';
    end;
    Str1 := Str1 + Trim(lvDataType.Items[i].SubItems.Strings[0]);
  end;
  TempFomr.mmoSQL.Text := Str1 + ')' + #13#10 + str2 + ')';
  PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;



procedure Tfrmmain.N3Click(Sender: TObject);
var
  TempFomr: TStdForm;
  str: string;
  i: Integer;
begin
  TempFomr := TStdForm.Create(Application);
  TempFomr.FormType := cmd_Form;
  TempFomr.mmoSQL.Text := ' UPDATE  ' + tvDb.Selected.Text + '  SET  ';

  Str := ' UPDATE  ' + tvDb.Selected.Text + '  SET  ';
  for I := 0 to lvDataType.Items.Count - 1 do
  begin
    if i <> 0 then
    begin
      Str := Str + #13#10 + ',';
    end;
    Str := Str + lvDataType.Items[i].SubItems.Strings[0] + ' = ';
  end;
  TempFomr.mmoSQL.Text := str;
  PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;


procedure Tfrmmain.RzPageClose(Sender: TObject; var AllowClose: Boolean);
begin
  if PageList.Count > 0 then
  begin
    PageList.Delete(PageList.ActivePageIndex);
  end;
end;

procedure Tfrmmain.SELECT1Click(Sender: TObject);
var
  TempFomr: TStdForm;
begin
  TempFomr := TStdForm.Create(Application);
  TempFomr.FormType := cmd_Form;

  TempFomr.mmoSQL.Text := ' SELECT *  FROM   ' + tvDb.Selected.Text;
  PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;

procedure Tfrmmain.btnNewClick(Sender: TObject);
var
  TempFomr: TStdForm;
begin
  TempFomr := TStdForm.Create(Application);
  TempFomr.FormType := cmd_Form;
  PageList.Add(TempFomr, '新查询' + INTTOSTR(PageList.Count));
end;

procedure Tfrmmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  PageList.Clear;
end;



procedure Tfrmmain.tvDbChange(Sender: TObject; Node: TTreeNode);
var
  NewItem: TListItem;
  i: integer;
  xType: string;
  Str: string;
begin
  if dbFileName = '' then Exit;
  lvDataType.Clear;

  Str := 'SELECT  * FROM  ' + tvDb.Selected.Text + ' WHERE  1 = 2 ';
  dataform.ADOQry.Close;
  dataform.ADOQry.SQL.Text := Str;
  dataform.ADOQry.Open;
  for i := 0 to dataform.ADOQry.FieldCount - 1 do
  begin
    NewItem := lvDataType.Items.Add;
    NewItem.Caption := IntToStr(i + 1);

    NewItem.SubItems.Add(dataform.ADOQry.Fields[i].FieldName);
    case dataform.ADOQry.Fields[i].DataType of
      ftSmallint, ftInteger, ftWord: begin
          xType := 'INT';
        end;
      ftBCD, ftFloat: xType := 'Float';
      ftString, ftWideString: xType := 'String';
    else
      xType := GetEnumName(TypeInfo(TFieldType), ORD(dataform.ADOQry.Fields[i].DataType));
      delete(xType, 1, 2);
    end;

    NewItem.SubItems.Add(xType);

    if xType <> 'Float' then
    begin
      NewItem.SubItems.Add(inttostr(dataform.ADOQry.Fields[i].Size));
      NewItem.SubItems.Add('0');
    end
    else
    begin
      NewItem.SubItems.Add('0');
      NewItem.SubItems.Add(inttostr(dataform.ADOQry.Fields[i].Size));
    end;
  end;
end;

procedure Tfrmmain.tvDbDblClick(Sender: TObject);
var
  TempFomr: TStdForm;
begin
  if tvDb.Selected.Text = '连接数据库' then Exit;
  TempFomr := TStdForm.Create(Application);
  TempFomr.FormType := Std_Form;
  TempFomr.mmoSQL.Text := 'SELECT  * FROM  ' + tvDb.Selected.Text;
  PageList.Add(TempFomr, tvDb.Selected.Text);
  if dbFileName <> '' then
  begin
    OpenWaiting('正在查询数据,请稍候...');
    PageList.ActivePage.DoExecSQL;
    CloseWaiting;
  end;
end;

procedure Tfrmmain.btnExpClick(Sender: TObject);
begin
  if PageList.Count > 0 then
    PageList.ActivePage.DoExport;
end;

procedure Tfrmmain.btnZipClick(Sender: TObject);
begin
  DataForm.conYysc.Close;
  OpenWaiting('正在压缩或修改数据库,请稍候...');
  if not PackDataBaseExt(dbFileName, aPassWord, aPassWord) then
  begin
    CloseWaiting;
    Application.MessageBox('数据库压缩失败!,请检查数据库是否正在使用! ', '错误', MB_OK + MB_ICONSTOP)
  end
  else
  begin
    CloseWaiting;
    Application.MessageBox('数据库压缩成功!', '提示', MB_OK + MB_ICONINFORMATION);
  end;
end;

procedure Tfrmmain.btnSelClick(Sender: TObject);
begin
  if PageList.Count > 0 then
    PageList.ActivePage.DoSelectRow;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -