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

📄 di_createnewtable.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -