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

📄 di_createnewtable.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      DataTypes.Add('numeric');
      DataTypes.Add('nvarchar');
      DataTypes.Add('real');
      DataTypes.Add('smalldatetime');
      DataTypes.Add('smallint');
      DataTypes.Add('smallmoney');
      DataTypes.Add('text');
      DataTypes.Add('timestamp');
      DataTypes.Add('tinyint');
      DataTypes.Add('uniqueidentifier');
      DataTypes.Add('varbinary');
      DataTypes.Add('varchar');
      if DataTypes.IndexOf(Trim(FieldByName('FieldType').AsString)) <> -1 then
        CreateTableStringFieldType := Trim(FieldByName('FieldType').AsString)
      else
      begin
        ShowMessage('字段类型不合法!');
        DataTypes.Free;
        Exit;
      end;
      DataTypes.Free;

      //字段长度=======================================
      DataTypes := TStringList.Create;
      DataTypes.Add('binary');
      DataTypes.Add('char');
      DataTypes.Add('decimal');
      DataTypes.Add('nchar');
      DataTypes.Add('numeric');
      DataTypes.Add('nvarchar');
      DataTypes.Add('varbinary');
      DataTypes.Add('varchar');
      if Trim(FieldByName('FieldWidth').AsString) = '' then
        CreateTableStringFieldWidth := ''
      else if DataTypes.IndexOf(Trim(FieldByName('FieldType').AsString)) <> -1
        then
        CreateTableStringFieldWidth := '(' +
          IntToStr(FieldByName('FieldWidth').AsInteger) + ')'
      else
      begin
        ShowMessage('只有binary,char,decimal,nchar,numeric,nvarchar,varbinary,varchar类型字段可以定义长度!');
        DataTypes.Free;
        Exit;
      end;
      DataTypes.Free;

      //是否为空=======================================
      if Trim(FieldByName('AllowNulls').AsString) = 'n' then
        CreateTableStringAllowNulls := 'Not Null'
      else if (Trim(FieldByName('AllowNulls').AsString) = 'y') or
        (Trim(FieldByName('AllowNulls').AsString) = '') then
      begin
        if Trim(FieldByName('FieldType').AsString) = 'bit' then
        begin
          ShowMessage('bit字段不能为空!');
          Exit
        end
        else
          CreateTableStringAllowNulls := 'Null'
      end
      else
      begin
        ShowMessage('标志是否为空的字符违法!');
        Exit
      end;

      //默认值=========================================
      DataTypes := TStringList.Create;
      DataTypes.Add('char');
      DataTypes.Add('datetime');
      DataTypes.Add('decimal');
      DataTypes.Add('float');
      DataTypes.Add('int');
      DataTypes.Add('money');
      DataTypes.Add('nchar');
      DataTypes.Add('numeric');
      DataTypes.Add('nvarchar');
      DataTypes.Add('real');
      DataTypes.Add('smalldatetime');
      DataTypes.Add('smallint');
      DataTypes.Add('smallmoney');
      DataTypes.Add('tinyint');
      DataTypes.Add('varchar');
      if Trim(FieldByName('DefauValue').AsString) = '' then
        CreateTableStringDefauValue := ''
      else if DataTypes.IndexOf(Trim(FieldByName('FieldType').AsString)) = -1
        then
      begin
        ShowMessage('只有char,datetime,decimal,float,int,money,nchar,numeric,nvarchar,real,smalldatetime,smallint,smallmoney,tinyint,varchar类型字段可以有默认值!');
        DataTypes.Free;
        Exit;
      end
      else if Trim(FieldByName('AllowNulls').AsString) = 'y' then
      begin
        ShowMessage('允许为空的字段不能有默认值!');
        DataTypes.Free;
        Exit;
      end
      else
        CreateTableStringDefauValue := 'Default ' + '(' +
          Trim(FieldByName('DefauValue').AsString) + ')';
      DataTypes.Free;

      //自动增长=======================================
      DataTypes := TStringList.Create;
      DataTypes.Add('decimal');
      DataTypes.Add('int');
      DataTypes.Add('numeric');
      DataTypes.Add('smallint');
      DataTypes.Add('tinyint');
      if (Trim(FieldByName('IfIdentity').AsString) = 'n') or
        (Trim(FieldByName('IfIdentity').AsString) = '') then
        CreateTableStringIfIdentity := ''
      else if Trim(FieldByName('IfIdentity').AsString) = 'y' then
      begin
        if Trim(FieldByName('AllowNulls').AsString) = 'y' then
        begin
          ShowMessage('允许为空的字段不能设置自动增长值!');
          DataTypes.Free;
          Exit;
        end;
        if DataTypes.IndexOf(Trim(FieldByName('FieldType').AsString)) <> -1 then
          CreateTableStringIfIdentity := 'Identity (1,1)'
        else
        begin
          ShowMessage('只有decimal,int,numeric,smallint,tinyint类型字段能设置自动增长值,请修改!');
          DataTypes.Free;
          Exit;
        end;
      end
      else
      begin
        ShowMessage('标志是否自动增长的字符违法!');
        DataTypes.Free;
        Exit;
      end;
      DataTypes.Free;

      //是否主键=======================================
      if (Trim(FieldByName('PrimaryKey').AsString) = 'n') or
        (Trim(FieldByName('PrimaryKey').AsString) = '') then
        CreateTablePrimaryKey := ''
      else if Trim(FieldByName('PrimaryKey').AsString) = 'y' then
      begin
        if Trim(FieldByName('AllowNulls').AsString) = 'n' then
        begin
          CreateTablePrimaryKey := 'Primary Key';
          PrimaryKeyNumber := PrimaryKeyNumber + 1;
          if PrimaryKeyNumber > 1 then
          begin
            ShowMessage('只能设置一个主键');
            PrimaryKeyNumber := 0;
            Exit;
          end;
        end
        else
        begin
          ShowMessage('允许为空的字段不能设置主键!');
          Exit;
        end;
      end
      else
      begin
        ShowMessage('标志是否主键的字符违法!');
        Exit;
      end;

      //合成SQL语句====================================
      if DI_DfmDataModule1.CreateDTableADOQuery.RecNo = 1 then
        CreateTableString := CreateTableStringFieldNameE + ' ' +
          CreateTableStringFieldType + ' ' + CreateTableStringFieldWidth + ' ' +
          CreateTableStringDefauValue + ' ' + CreateTableStringAllowNulls + ' '
          +
          CreateTableStringIfIdentity + ' ' + CreateTablePrimaryKey
      else
        CreateTableString := CreateTableString + ',' +
          CreateTableStringFieldNameE + ' ' + CreateTableStringFieldType + ' ' +
          CreateTableStringFieldWidth + ' ' + CreateTableStringDefauValue + ' '
          +
          CreateTableStringAllowNulls + ' ' + CreateTableStringIfIdentity + ' '
          +
          CreateTablePrimaryKey;
      Next;
    end;
  end;
  //创建T表===================================
  with DI_DfmDataModule1.CreateTTableADOQuery do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Create Table ' + 'T' + NewTableName + ' ' + '(' + CreateTableString
      + ')');
    //ShowMessage(Sql.Text);
    try
      ExecSQL;
    except
      ShowMessage('不能创建该表,请检查输入的结构信息是否错误!');
      Exit;
    end;
  end;
  DI_DfmDataModule1.CreateTTableADOQuery.Close;
  CreateTableSuceed := True;
  Close;
end;

//回车换行======================================================================

procedure TDI_DfmCreateNewTable.DBGrid1KeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
  begin
    if dbgrid1.SelectedIndex = dbgrid1.Columns.Count - 1 then
    begin
      dbgrid1.SelectedIndex := 0;
      if dbgrid1.DataSource.DataSet <> nil then
        with dbgrid1.DataSource.DataSet do
        begin
          Next;
          if EOF and CanModify then
            Append;
        end;
    end
    else
      dbgrid1.SelectedIndex := dbgrid1.SelectedIndex + 1;
  end;
end;

end.

⌨️ 快捷键说明

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