📄 tb_main.pas
字号:
unit TB_Main;
{
代码单元名称:通用库表备份工具主窗口
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, CheckLst, Buttons, ExtCtrls,db;
type
TTB_DfmMain = class(TForm)
PageControl1: TPageControl;
PriorButton: TButton;
NextButton: TButton;
Button3: TButton;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Label3: TLabel;
DestinationDatabaseNameEdit: TEdit;
FilePathSpeedButton: TSpeedButton;
Label4: TLabel;
DestinationTableNameListBox: TListBox;
Label1: TLabel;
Label2: TLabel;
SourceDatabaseNameComboBox: TComboBox;
SourceTableNameCheckListBox: TCheckListBox;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
ConfirmMemo: TMemo;
Panel5: TPanel;
SelectAllSpeedButton: TSpeedButton;
RemoveAllSpeedButton: TSpeedButton;
Image2: TImage;
Image1: TImage;
Animate1: TAnimate;
procedure FormShow(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SourceDatabaseNameComboBoxChange(Sender: TObject);
procedure NextButtonClick(Sender: TObject);
procedure PriorButtonClick(Sender: TObject);
procedure SelectAllSpeedButtonClick(Sender: TObject);
procedure RemoveAllSpeedButtonClick(Sender: TObject);
procedure FilePathSpeedButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
MyServerName:string;
Function FieldTypeConvertion(SourceFieldType:TFieldType):string;
procedure ShowSourceTablenames;
end;
procedure SetWork;
implementation
uses TB_DataModule1, TB_OpenFilePath, Main;
{$R *.DFM}
procedure SetWork;
var
TB_DfmMain:TTB_DfmMain;
ServerName:string;
begin
ServerName:=MainForm.ServerName;
if not InputQuery('数据表备份登录工具','请输入合法的数据库服务器名:',ServerName) then Exit;
if ServerName='' then Exit;
Screen.Cursor:=crHourGlass;
MainForm.Refresh;
Application.CreateForm(TTB_DfmMain,TB_DfmMain);
TB_DfmMain.MyServerName:=ServerName;
Screen.Cursor:=crDefault;
TB_DfmMain.ShowModal;
TB_DfmMain.Free;
end;
//窗体==========================================================================
procedure TTB_DfmMain.FormShow(Sender: TObject);
begin
Screen.Cursor:=crHourGlass;
Refresh;
TB_DfmDataModule1.SourceDatabaseADOConnection.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source='+MyServerName;
with TB_DfmDataModule1.SourceDatabaseADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Select * From SysDatabases');
try Open;
except
Screen.Cursor:=crDefault;
ShowMessage('系统数据库受到破坏,请与系统管理员联系!');
Exit;
end;
while not Eof do
begin
SourceDatabaseNameComboBox.Items.Add(FieldByName('Name').AsString);
Next;
end;
end;
SourceDatabaseNameComboBox.ItemIndex:=0;
TB_DfmDataModule1.SourceDatabaseADOConnection.Close;
ShowSourceTablenames;
PageControl1.ActivePageIndex:=0;
Screen.Cursor:=crDefault;
end;
procedure TTB_DfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TB_DfmDataModule1.ChineseTableNameADOQuery.Close;
TB_DfmDataModule1.DestinationDatabaseADOQuery.Close;
TB_DfmDataModule1.SourceDatabaseADOQuery.Close;
TB_DfmDataModule1.SourceDatabaseADOConnection.Close;
TB_DfmDataModule1.DestinationDatabaseADOConnection.Close;
end;
//关闭==========================================================================
procedure TTB_DfmMain.Button3Click(Sender: TObject);
begin
Close;
end;
//原数据库变动事件==============================================================
procedure TTB_DfmMain.SourceDatabaseNameComboBoxChange(Sender: TObject);
begin
TB_DfmDataModule1.SourceDatabaseADOConnection.Close;
ShowSourceTablenames;
end;
//源数据表全部选定==============================================================
procedure TTB_DfmMain.SelectAllSpeedButtonClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to SourceTableNameCheckListBox.Items.Count-1 do
SourceTableNameCheckListBox.Checked[i]:=True;
end;
//源数据表全部不选==============================================================
procedure TTB_DfmMain.RemoveAllSpeedButtonClick(Sender: TObject);
var
i:integer;
begin
for i:=0 to SourceTableNameCheckListBox.Items.Count-1 do
SourceTableNameCheckListBox.Checked[i]:=False;
end;
//确定保存目录==================================================================
procedure TTB_DfmMain.FilePathSpeedButtonClick(Sender: TObject);
var
TB_DfmOpenFilePath: TTB_DfmOpenFilePath;
begin
TB_DfmOpenFilePath:=TTB_DfmOpenFilePath.Create(Self,DestinationDatabaseNameEdit);
TB_DfmOpenFilePath.ShowModal;
TB_DfmOpenFilePath.Free;
end;
//上一步按钮====================================================================
procedure TTB_DfmMain.PriorButtonClick(Sender: TObject);
var
i:integer;
begin
//转到目标数据表页======================
if PageControl1.ActivePageIndex=3 then
begin
PageControl1.ActivePageIndex:=2;
ConfirmMemo.Clear;
NextButton.Caption:='下一步>>';
Exit;
end;
//转到源数据表页======================
if PageControl1.ActivePageIndex=2 then
begin
PageControl1.ActivePageIndex:=1;
DestinationDatabaseNameEdit.Clear;
DestinationTableNameListBox.Items.Clear;
Exit;
end;
//转到介绍页======================
if PageControl1.ActivePageIndex=1 then
begin
PageControl1.ActivePageIndex:=0;
for i:=0 to SourceTableNameCheckListBox.Items.Count-1 do
SourceTableNameCheckListBox.Checked[i]:=False;
Exit;
end;
//无转接页========================
if PageControl1.ActivePageIndex=0 then
Exit;
end;
//下一步按钮事件================================================================
procedure TTB_DfmMain.NextButtonClick(Sender: TObject);
var
i,j,k,m:integer;
SourceFieldName:string;
SourceFieldType:TFieldType;
SourceFieldSize:integer;
DestinationFieldTypeString:string;
CreateTableString:string;
CopyFilePath:string;
CopySourceFileName:string;
CopyDestinationFileName:string;
SourceTablenames:TStrings;
begin
//转换中英文表名==============================================================
SourceTablenames:=TStringList.Create;
SourceTablenames.Assign(SourceTableNameCheckListBox.Items);
for m:=0 to SourceTablenames.Count-1 do
begin
if Pos('(',SourceTablenames[m])<>0 then
SourceTablenames[m]:=Copy(SourceTablenames[m],1,Pos('(',SourceTablenames[m])-1);
end;
//转到源数据表页===================
if PageControl1.ActivePageIndex=0 then
begin
PageControl1.ActivePageIndex:=1;
Exit;
end;
//转到目标数据表页=================
if PageControl1.ActivePageIndex=1 then
begin
DestinationTableNameListBox.Items.Clear;
for i:=0 to SourceTableNameCheckListBox.Items.Count-1 do
begin
if SourceTableNameCheckListBox.Checked[i] then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -