亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ufrmmain.pas

?? 面向?qū)ο髷?shù)據(jù)庫開發(fā)時
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit UFrmMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, UFrmBase, ComCtrls, ToolWin, CheckLst, ExtCtrls,
  Buttons, DB, ADODB;

type
  TFrmMain = class(TFrmBase)
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    Panel1: TPanel;
    cbxDBName: TComboBox;
    Label1: TLabel;
    clbTable: TCheckListBox;
    Label2: TLabel;
    ToolButton2: TToolButton;
    Panel2: TPanel;
    ToolButton4: TToolButton;
    SaveDialog1: TSaveDialog;
    ToolButton6: TToolButton;
    ToolButton7: TToolButton;
    Panel3: TPanel;
    cbNote: TCheckBox;
    rdgFileType: TRadioGroup;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    ProgressBar1: TProgressBar;
    mmFile: TRichEdit;
    Panel4: TPanel;
    edtBaseClass: TEdit;
    Label3: TLabel;
    cbInsert: TCheckBox;
    cbAmend: TCheckBox;
    cbDelete: TCheckBox;
    cbSetFieldValues: TCheckBox;
    cbAutoID: TCheckBox;
    procedure ToolButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure cbxDBNameChange(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure mmFileKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure rdgFileTypeClick(Sender: TObject);
  private
    { Private declarations }
    ClassInfoList, DBList, TableList: TStringList;
    BaseClassName: string;

    procedure IniSystem;
    //刷新數(shù)據(jù)庫
    procedure RefreshDB;
    //讀取數(shù)據(jù)庫名稱列表
    function ReadDBNameList: TStringList;
    //讀取數(shù)據(jù)表名稱列表
    function ReadTableNameList: TStringList;
    function TableToClassInfo(ATableName: string): TStrings;
    //取得SQLServer字段的類型,返回相應Delphi變量類型
    function GetColumnType(AType: integer): string;
    //取得SQLServer字段的類型,返回相應字符串
    function GetDBColumnType(AType: integer): string;
    //僅生成類信息
    procedure GenerateClassInfo;

    //生成Unit文件
    procedure GenerateUnitFile;
    procedure TableToClassInfo1(ATableName: string; var AClassList1, AClassList2: TStringList);
    //取得保存的文件名,沒有擴展名
    function GetFileName(AFileName: string): string;
    //保存文件
    procedure SaveToFile(AList: TStringList = nil);
    //取取選擇數(shù)據(jù)表的數(shù)量
    function GetSelTableCount(AclbTable: TCheckListBox): integer;
  public
    { Public declarations }
  end;

var
  FrmMain: TFrmMain;

implementation

uses UDM, UFrmConDBServer, USysPublic;

{$R *.dfm}

function TFrmMain.ReadDBNameList: TStringList;
begin
  DBList.Clear;
  with DM do
  begin
    qryTemp.Close;
    qryTemp.SQL.Text := 'SELECT name AS DBName FROM master.dbo.sysdatabases';
    qryTemp.Open;

    qryTemp.First;
    while not qryTemp.Eof do
    begin
      DBList.Add(qryTemp.FieldByName('DBName').AsString);
      qryTemp.Next;
    end;
    DBList.Sorted := True;
    Result := DBList;
  end;
end;

function TFrmMain.ReadTableNameList: TStringList;
begin
  TableList.Clear;
  with DM do
  begin
    qryTemp.Close;
    qryTemp.SQL.Text := 'select name as TableName from sysobjects where xtype=''U'' '
      + 'AND (name<>''dtproperties'' AND name<>''LoanBank'') ';
    qryTemp.Open;

    qryTemp.First;
    while not qryTemp.Eof do
    begin
      TableList.Add(qryTemp.FieldByName('TableName').AsString);
      qryTemp.Next;
    end;
    TableList.Sorted := True;
    Result := TableList;
  end;
end;

procedure TFrmMain.RefreshDB;
begin

end;

procedure TFrmMain.ToolButton1Click(Sender: TObject);
begin
  inherited;
  if ConnectDBServer then
  begin
    cbxDBName.Items := ReadDBNameList;
    //MessageBox(0, '數(shù)據(jù)庫連接成功!', '錯誤', MB_OK);
  end
  else
    MessageBox(0, '數(shù)據(jù)庫連接失敗!', '錯誤', MB_OK);
end;

procedure TFrmMain.FormCreate(Sender: TObject);
begin
  inherited;
  DBList := TStringList.Create;
  TableList := TStringList.Create;
  ClassInfoList := TStringList.Create;
end;

procedure TFrmMain.FormDestroy(Sender: TObject);
begin
  inherited;
  DBList.Free;
  TableList.Free;
end;

procedure TFrmMain.cbxDBNameChange(Sender: TObject);
begin
  inherited;
  with DM do
  begin
    ADOCon.Close;
    ADOCon.ConnectionString := ADOCon.ConnectionString
      + ';Initial Catalog=' + cbxDBName.Text;
    ADOCon.Open;
  end;

  clbTable.Items := ReadTableNameList;
end;

function TFrmMain.TableToClassInfo(ATableName: string): TStrings;
var
  FieldList, PropertyList: TStringList;
  ColumnName, ColumnType: string;
begin
  //字段列表
  FieldList := TStringList.Create;
  FieldList.Clear;

  //保存屬性聲明
  PropertyList := TStringList.Create;
  PropertyList.Clear;

  with DM do
  begin
    qryTemp.Close;
    qryTemp.SQL.Text := 'SELECT C.name as ColumnName, C.xtype AS ColumnType '
      + 'FROM sysobjects T,syscolumns C WHERE T.id =C.id AND T.xtype=''U'' '
      + 'AND T.name=''' + ATableName + '''';
    qryTemp.Open;

    qryTemp.First;
    FieldList.Add('  T' + ATableName + ' = class(' + BaseClassName + ')');
    FieldList.Add('  private');
    PropertyList.Add('  public' );
    while not qryTemp.Eof do
    begin
      ColumnName := qryTemp.FieldByName('ColumnName').AsString;
      {if (not cbAutoID.Checked) and (qryTemp.FieldByName('ColumnType').AsInteger = 108) then //自動編號字段
      begin
        qryTemp.Next;
        continue;
      end;}

      ColumnType := GetColumnType(qryTemp.FieldByName('ColumnType').AsInteger);
      if cbNote.Checked = False then
        FieldList.Add('    F' + ColumnName + ': ' + ColumnType + ';')
      else
        FieldList.Add('    F' + ColumnName + ': ' + ColumnType + ';'
          + GetDBColumnType(qryTemp.FieldByName('ColumnType').AsInteger));  

      PropertyList.Add('    property ' + ColumnName + ': '  + ColumnType + ';');
      qryTemp.Next;
    end;
    PropertyList.Add('  end;' );
    FieldList.Text := FieldList.Text + PropertyList.Text ;
    Result := FieldList;
  end;


  PropertyList.Free;
  //SetmethodList.Free;
end;

procedure TFrmMain.IniSystem;
begin
  BlankCount := 2;
end;

procedure TFrmMain.ToolButton2Click(Sender: TObject);
var
  i, iCount: integer;
begin
  if DM.ADOCon.Connected = False then
  begin
    MessageBox(Handle, '請先連接SQLServer服務器!', '提示', MB_OK);
    Exit;
  end;

  if cbxDBName.Text = '' then
  begin
    MessageBox(Handle, '請選擇數(shù)據(jù)庫名稱!', '提示', MB_OK);
    Exit;
  end;

  iCount := 0;
  for i := 0 to clbTable.Items.Count - 1 do
  begin
    if clbTable.Checked[i] then
      inc(iCount);
  end;

  if iCount = 0 then
  begin
    MessageBox(Handle, '沒有要選擇的表,請先選擇表!', '提示', MB_OK);
    Exit;
  end;

  BaseClassName := Trim(edtBaseClass.Text);
  case rdgFileType.ItemIndex of
    0: GenerateUnitFile;
    1: GenerateClassInfo;
  end;
end;

function TFrmMain.GetColumnType(AType: integer): string;
begin
  case AType of
    34: Result := 'TStream'; //image
    35: Result := 'string'; //text
    36: Result := ''; //uniqueidentifier
    48: Result := 'integer'; //tinyint
    56: Result := 'integer'; //int
    52: Result := 'integer'; //smallint
    58: Result := 'TDateTime'; //smalldatetime
    59: Result := 'real'; //real
    60: Result := 'real'; //money
    61: Result := 'TDate'; //datetime
    62: Result := 'real'; //float
    98: Result := 'TStream'; //sql_variant
    99: Result := 'string'; //ntext
    104: Result := 'boolean'; //bit
    106: Result := 'real'; //decimal
    108: Result := 'integer'; //numeric
    122: Result := 'real'; //smallmoney
    127: Result := 'Longint'; //bigint
    165: Result := 'TStream'; //varbinary
    167: Result := 'string'; //varchar
    173: Result := 'TStream'; //binary 二進制數(shù)據(jù)
    175: Result := 'char'; //char
    189: Result := 'Tdatetime'; //timestamp
    231: Result := 'string'; //nvarchar
    239: Result := 'string'; //nchar
    else
      Result := '';
  end;
end;

procedure TFrmMain.mmFileKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if (ssCtrl in Shift) and (Key = 65) then
  begin
    if Sender is TMemo then
      TMemo(Sender).SelectAll;
  end;  
end;

function TFrmMain.GetDBColumnType(AType: integer): string;
begin
  case AType of
    34: Result := ' //image';
    35: Result := ' //text';
    36: Result := ' //uniqueidentifier';
    48: Result := ' //tinyint';
    56: Result := ' //int';
    52: Result := ' //smallint';
    58: Result := ' //smalldatetime';
    59: Result := ' //real';
    60: Result := ' //money';
    61: Result := ' //datetime';
    62: Result := ' //float';
    98: Result := ' //sql_variant';
    99: Result := ' //ntext';
    104: Result := ' //bit';
    106: Result := ' //decimal';
    108: Result := ' //numeric';
    122: Result := ' //smallmoney';
    127: Result := ' //bigint';
    165: Result := ' //varbinary';
    167: Result := ' //varchar';
    173: Result := ' //binary'; //二進制數(shù)據(jù)
    175: Result := ' //char';
    189: Result := ' //timestamp';
    231: Result := ' //nvarchar';
    239: Result := ' //nchar';
    else
      Result := '';
  end;
end;

procedure TFrmMain.GenerateClassInfo;
var
  i: integer;
begin
  inherited;
  ClassInfoList.Clear;

  ProgressBar1.Max := GetSelTableCount(clbTable);
  ProgressBar1.Position := 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区二区在线| 经典三级在线一区| 91麻豆swag| 亚洲日本免费电影| 日本高清不卡视频| 亚洲成在人线免费| 欧美裸体一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 555www色欧美视频| 国产一区欧美日韩| 国产精品视频你懂的| 99久精品国产| 日韩va亚洲va欧美va久久| 精品国产一区二区三区久久久蜜月| 韩国成人福利片在线播放| 精品久久一二三区| 99久久伊人精品| 亚洲国产精品久久久男人的天堂| 日韩视频一区二区在线观看| 国产精品18久久久久久久久久久久 | wwwwxxxxx欧美| 成人avav影音| 欧美亚洲国产一区在线观看网站| 亚洲福中文字幕伊人影院| 日韩网站在线看片你懂的| 国产凹凸在线观看一区二区| 樱花影视一区二区| 26uuu亚洲综合色欧美| 不卡av电影在线播放| 亚洲一区二区三区中文字幕 | 精品亚洲国内自在自线福利| 欧美激情在线一区二区| 在线免费不卡视频| 韩国av一区二区| 一区二区三区产品免费精品久久75| 91精品国产一区二区三区香蕉| 国产成人在线视频播放| 亚洲高清免费视频| 国产日产欧美一区二区视频| 欧美日韩精品一区二区三区| 国产成人鲁色资源国产91色综 | 五月天激情小说综合| 国产午夜一区二区三区| 欧美精品亚洲一区二区在线播放| 国产91丝袜在线播放| 午夜免费久久看| 国产精品美女久久久久高潮| 欧美一级黄色大片| 欧洲视频一区二区| 风间由美性色一区二区三区| 免费人成在线不卡| 亚洲另类春色国产| 中文字幕av一区二区三区免费看 | 色狠狠av一区二区三区| 国内精品不卡在线| 午夜视频一区二区三区| 日韩伦理免费电影| 欧美韩国日本综合| 精品国产91洋老外米糕| 欧美情侣在线播放| 色综合久久88色综合天天免费| 精品无人区卡一卡二卡三乱码免费卡| 亚洲国产一区二区三区青草影视| 中文字幕在线一区| 国产精品女主播av| 国产嫩草影院久久久久| 久久免费精品国产久精品久久久久| 91精品国产乱| 欧美美女一区二区在线观看| 欧洲一区在线电影| 在线看国产日韩| 色女孩综合影院| 成人v精品蜜桃久久一区| 国产精品亚洲专一区二区三区| 久久99精品国产麻豆不卡| 日韩电影在线一区二区三区| 亚欧色一区w666天堂| 亚洲第一福利视频在线| 亚洲高清免费视频| 日日摸夜夜添夜夜添精品视频| 亚洲成av人片观看| 性久久久久久久久| 日本午夜精品一区二区三区电影| 五月天欧美精品| 日产国产高清一区二区三区 | 亚洲日本va午夜在线影院| 中文字幕一区二区三区不卡| 国产精品久久影院| 一区二区三区欧美日| 亚洲一区自拍偷拍| 日本免费新一区视频| 精品一区二区三区视频在线观看| 久久99久久久久久久久久久| 国产一区三区三区| 成人app网站| 在线视频欧美精品| 欧美一三区三区四区免费在线看 | 精品国产百合女同互慰| 国产午夜精品久久久久久免费视 | 日韩精品一区二区三区视频| 欧美精品一区二区三区四区 | 久久99精品国产麻豆不卡| 国产伦精品一区二区三区在线观看| 国产乱码精品一区二区三| av资源网一区| 欧美日本免费一区二区三区| 欧美成人官网二区| 亚洲国产精华液网站w| 一区二区三区四区不卡在线| 日韩精品电影在线| 国产成人精品一区二| 色94色欧美sute亚洲线路一久 | 亚洲黄网站在线观看| 日av在线不卡| 成人性色生活片免费看爆迷你毛片| 91麻豆免费视频| 日韩无一区二区| 亚洲欧美偷拍三级| 免费日韩伦理电影| 成人午夜视频在线| 欧美日韩精品一区二区在线播放| 久久色中文字幕| 亚洲v日本v欧美v久久精品| 国产麻豆一精品一av一免费| 91成人免费网站| 久久久久久久久岛国免费| 亚洲资源在线观看| 国产激情一区二区三区四区| 欧美日韩国产一二三| 欧美激情艳妇裸体舞| 蜜臀av性久久久久蜜臀av麻豆| 91首页免费视频| 久久久精品国产免大香伊| 亚洲国产日产av| thepron国产精品| 精品精品欲导航| 亚洲小说春色综合另类电影| 岛国av在线一区| 欧美xxxxx牲另类人与| 亚洲精品乱码久久久久久黑人| 国产精品99久久久久| 日韩一区二区在线免费观看| 一区二区三区四区视频精品免费| 国产激情视频一区二区在线观看 | 久久99精品网久久| 欧美系列亚洲系列| 亚洲日本在线a| 成人伦理片在线| 精品日韩在线观看| 日韩电影在线免费看| 欧洲av在线精品| ●精品国产综合乱码久久久久| 国产精品一区二区在线观看网站| 91精品国产一区二区三区蜜臀| 亚洲韩国一区二区三区| 色综合久久久久综合体桃花网| 国产精品国产精品国产专区不片| 九一久久久久久| 精品久久一区二区| 麻豆精品在线播放| 日韩一卡二卡三卡| 奇米四色…亚洲| 日韩网站在线看片你懂的| 日韩成人精品视频| 日韩午夜av电影| 久久国产精品无码网站| 91精品国产福利| 日韩av成人高清| 日韩欧美国产精品| 久久成人久久爱| 精品国产精品网麻豆系列| 精品一区二区三区日韩| 精品精品国产高清一毛片一天堂| 老司机精品视频导航| 欧美va亚洲va香蕉在线| 久久国产尿小便嘘嘘| 久久这里都是精品| 国产91精品一区二区麻豆亚洲| 国产精品天干天干在线综合| www.亚洲国产| 亚洲免费观看高清完整版在线观看 | 精品午夜久久福利影院| 久久久久久久电影| 成人黄色在线看| 亚洲精品视频在线| 欧美日本一区二区三区四区| 天使萌一区二区三区免费观看| 91精品国产91久久综合桃花| 麻豆国产精品一区二区三区| 久久综合中文字幕| hitomi一区二区三区精品| 亚洲日本在线天堂| 欧美疯狂做受xxxx富婆| 精品一区二区免费| 中文乱码免费一区二区| 欧美亚洲日本一区| 精品在线免费视频| 寂寞少妇一区二区三区| 欧美国产激情二区三区| 色伊人久久综合中文字幕|