📄 di_createnewtable.pas
字号:
unit DI_CreateNewTable;
{
代码单元名称:通用数据登录工具新建库表结构编辑窗口
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ImgList, Grids, DBGrids, ExtCtrls, DBCtrls, ComCtrls, ToolWin;
type
TDI_DfmCreateNewTable = class(TForm)
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
CloseToolButton: TToolButton;
ToolButton3: TToolButton;
DBGrid1: TDBGrid;
ConfirmToolButton: TToolButton;
ImageList1: TImageList;
DBNavigator1: TDBNavigator;
procedure FormShow(Sender: TObject);
procedure CloseToolButtonClick(Sender: TObject);
procedure ConfirmToolButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
NewTableName: string;
DatabaseName: string;
CreateTableSuceed: Boolean;
constructor Create(Owner: TComponent; ANewTableName: string; ADatabaseName:
string); overload;
end;
implementation
uses DI_DataModul1;
{$R *.DFM}
{ TDfmCreateNewTable }
//构造函数======================================================================
constructor TDI_DfmCreateNewTable.Create(Owner: TComponent;
ANewTableName: string; ADatabaseName: string);
begin
inherited Create(Owner);
NewTableName := ANewTableName;
DatabaseName := ADatabaseName;
CreateTableSuceed := False;
end;
//窗体==========================================================================
procedure TDI_DfmCreateNewTable.FormShow(Sender: TObject);
var
i: integer;
begin
DBGrid1.Columns.Clear;
DBGrid1.DataSource := DI_DfmDataModule1.CreateDTableDataSource;
DBNavigator1.DataSource := DI_DfmDataModule1.CreateDTableDataSource;
with DI_DfmDataModule1.CreateDTableADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Select * From ' + 'D' + NewTableName);
try
Open;
except ShowMessage('error');
Exit;
end;
end;
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('FieldId').Visible :=
False;
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('FieldNameE').DisplayLabel
:= '字段英文名';
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('FieldNameC').DisplayLabel
:= '字段中文名';
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('FieldType').DisplayLabel
:=
'字段类型';
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('FieldWidth').DisplayLabel
:= '字段长度';
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('AllowNulls').DisplayLabel
:= '是否可为空';
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('DefauValue').DisplayLabel
:= '字段默认值';
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('IfIdentity').DisplayLabel
:= '自动增长否';
DI_DfmDataModule1.CreateDTableADOQuery.FieldByName('PrimaryKey').DisplayLabel
:= '是否为主键';
for i := 1 to DI_DfmDataModule1.CreateDTableADOQuery.FieldCount - 1 do
begin
DBGrid1.Columns.Add;
DBGrid1.Columns[i - 1].Field :=
DI_DfmDataModule1.CreateDTableADOQuery.Fields[i];
DBGrid1.Columns[i - 1].Title.Alignment := taCenter;
DBGrid1.Columns[i - 1].Title.Caption :=
Trim(DI_DfmDataModule1.CreateDTableADOQuery.Fields[i].DisplayLabel);
end;
DBGrid1.Columns[2].ButtonStyle := cbsAuto;
DBGrid1.Columns[2].PickList.Add('binary');
DBGrid1.Columns[2].PickList.Add('bit');
DBGrid1.Columns[2].PickList.Add('char');
DBGrid1.Columns[2].PickList.Add('datetime');
DBGrid1.Columns[2].PickList.Add('decimal');
DBGrid1.Columns[2].PickList.Add('float');
DBGrid1.Columns[2].PickList.Add('image');
DBGrid1.Columns[2].PickList.Add('int');
DBGrid1.Columns[2].PickList.Add('money');
DBGrid1.Columns[2].PickList.Add('nchar');
DBGrid1.Columns[2].PickList.Add('ntext');
DBGrid1.Columns[2].PickList.Add('numeric');
DBGrid1.Columns[2].PickList.Add('nvarchar');
DBGrid1.Columns[2].PickList.Add('real');
DBGrid1.Columns[2].PickList.Add('smalldatetime');
DBGrid1.Columns[2].PickList.Add('smallint');
DBGrid1.Columns[2].PickList.Add('smallmoney');
DBGrid1.Columns[2].PickList.Add('text');
DBGrid1.Columns[2].PickList.Add('timestamp');
DBGrid1.Columns[2].PickList.Add('tinyint');
DBGrid1.Columns[2].PickList.Add('uniqueidentifier');
DBGrid1.Columns[2].PickList.Add('varbinary');
DBGrid1.Columns[2].PickList.Add('varcharend');
DBGrid1.Columns[4].ButtonStyle := cbsAuto;
DBGrid1.Columns[4].PickList.Add('y');
DBGrid1.Columns[4].PickList.Add('n');
DBGrid1.Columns[6].ButtonStyle := cbsAuto;
DBGrid1.Columns[6].PickList.Add('y');
DBGrid1.Columns[6].PickList.Add('n');
DBGrid1.Columns[7].ButtonStyle := cbsAuto;
DBGrid1.Columns[7].PickList.Add('y');
DBGrid1.Columns[7].PickList.Add('n');
end;
//窗体关闭======================================================================
procedure TDI_DfmCreateNewTable.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if not CreateTableSuceed then
begin
with DI_DfmDataModule1.CreateDTableADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Drop Table ' + 'D' + NewTableName);
try
ExecSQL;
except ShowMessage('error');
Exit;
end;
end;
end;
end;
//关闭==========================================================================
procedure TDI_DfmCreateNewTable.CloseToolButtonClick(Sender: TObject);
begin
if ((CreateTableSuceed = False) and
(DI_DfmDataModule1.CreateDTableADOQuery.RecordCount <> 0)) then
if MessageDlg('关闭本窗口将丢失已输入的结构信息,是否继续?',
mtConfirmation,
[mbYes, mbNo], 0) = mrNo then
Exit;
Close;
end;
//创建T表=======================================================================
procedure TDI_DfmCreateNewTable.ConfirmToolButtonClick(Sender: TObject);
var
CreateTableString, CreateTableStringFieldNameE, CreateTableStringFieldNameC,
CreateTableStringFieldType, CreateTableStringFieldWidth,
CreateTableStringAllowNulls, CreateTableStringDefauValue,
CreateTableStringIfIdentity, CreateTablePrimaryKey: string;
DataTypes: TStrings;
PrimaryKeyNumber: integer;
begin
if DI_DfmDataModule1.CreateDTableADOQuery.RecordCount = 0 then
Exit;
PrimaryKeyNumber := 0;
with DI_DfmDataModule1.CreateDTableADOQuery do
begin
First;
while not Eof do
begin
//英文字段名=====================================
if ((Trim(FieldByName('FieldNameE').AsString) <> '') and (Pos('_',
Trim(FieldByName('FieldNameE').AsString)) = 0)) then
CreateTableStringFieldNameE := Trim(FieldByName('FieldNameE').AsString)
else
begin
ShowMessage('英文字段名称不能为空或含有"_"字符!');
Exit;
end;
//中文字段名=====================================
if Trim(FieldByName('FieldNameC').AsString) <> '' then
CreateTableStringFieldNameC := Trim(FieldByName('FieldNameC').AsString)
else
begin
ShowMessage('中文字段名称不能为空!');
Exit;
end;
//字段类型=======================================
DataTypes := TStringList.Create;
DataTypes.Add('binary');
DataTypes.Add('bit');
DataTypes.Add('char');
DataTypes.Add('datetime');
DataTypes.Add('decimal');
DataTypes.Add('float');
DataTypes.Add('image');
DataTypes.Add('int');
DataTypes.Add('money');
DataTypes.Add('nchar');
DataTypes.Add('ntext');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -