Files
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

181 lines
5.3 KiB
Plaintext

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB, ExtCtrls, wdbreg, DBClient,
Provider;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
Memo1: TMemo;
DataSource1: TDataSource;
ADODataSet2: TADODataSet;
DataSource2: TDataSource;
Panel1: TPanel;
DBGrid2: WDBGRID;
DBGrid1: WDBGRID;
Splitter1: TSplitter;
Splitter2: TSplitter;
DataSetProvider1: TDataSetProvider;
ClientDataSet1: TClientDataSet;
ClientDataSet1MAXItem: TAggregateField;
Panel2: TPanel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
ADODataSet2MaxItem: TAggregateField;
ClientDataSet1CDSDesigner: TWideStringField;
ClientDataSet1CDSDesigner2: TSmallintField;
ClientDataSet1CDSDesigner3: TWideStringField;
ClientDataSet1CDSDesigner4: TWideStringField;
ClientDataSet1CDSDesigner5: TSmallintField;
ClientDataSet1CDSDesigner6: TSmallintField;
ClientDataSet1PK: TWideStringField;
ClientDataSet1FK: TWideStringField;
ClientDataSet1CDSDesigner7: TWideStringField;
ClientDataSet1CDSDesigner8: TWideStringField;
ClientDataSet1CDSDesigner9: TWideStringField;
ClientDataSet1CDSDesigner10: TWideStringField;
ADODataSet2DSDesigner: TWideStringField;
ADODataSet2DSDesigner2: TSmallintField;
ADODataSet2DSDesigner3: TWideStringField;
ADODataSet2DSDesigner4: TWideStringField;
ADODataSet2DSDesigner5: TSmallintField;
ADODataSet2DSDesigner6: TSmallintField;
ADODataSet2PK: TWideStringField;
ADODataSet2FK: TWideStringField;
ADODataSet2DSDesigner7: TWideStringField;
ADODataSet2DSDesigner8: TWideStringField;
ADODataSet2DSDesigner9: TWideStringField;
ADODataSet2DSDesigner10: TWideStringField;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ListBox1Click(Sender: TObject);
procedure ADODataSet1AfterScroll(DataSet: TDataSet);
procedure Button1Click(Sender: TObject);
procedure ClientDataSet1AfterInsert(DataSet: TDataSet);
procedure ClientDataSet1AfterPost(DataSet: TDataSet);
private
procedure GenerateCreateSQL;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
ADOConnection1.Connected := True;
ADODataSet1.Open;
ADODataSet2.Open;
//ClientDataSet1.Open;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADODataSet2.Close;
ADODataSet1.Close;
ADOConnection1.Connected := False;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
//if ListBox1.ItemIndex = -1 then
// Exit;
//ADODataSet1.Active := False;
//ADODataSet1.CommandText := Format('SELECT * FROM [%S]', [ListBox1.Items[ListBox1.ItemIndex]]);
//ADODataSet1.Active := True;
//GenerateCreateSQL;
end;
procedure TForm1.GenerateCreateSQL;
var recno: integer;
s: string;
fieldName, fieldType: string;
aLength, aDecimal: integer;
begin
Memo1.Lines.Clear;
Memo1.Lines.Append(Format('CREATE TABLE %s (', [ADODataSet2.FieldByName('表格名稱').AsString]));
ClientDataSet1.DisableControls;
ClientDataSet1.First;
recno := 1;
while not ClientDataSet1.Eof do
begin
fieldName := ClientDataSet1.FieldByName('欄位名稱').AsString;
fieldType := ClientDataSet1.FieldByName('型態').AsString;
aLength := ClientDataSet1.FieldByName('長度').AsInteger;
aDecimal := ClientDataSet1.FieldByName('小數').AsInteger;
s := Format(' %s %s', [fieldName, fieldType]);
if fieldType = 'DECIMAL' then
s := s + Format(' (%d, %d)', [aLength, aDecimal])
else if Pos(fieldType, 'CHAR,NCHAR,VARCHAR,NVARCHAR') > 0 then
s := s + Format(' (%d)', [aLength]);
if ClientDataSet1.FieldByName('PK').AsString = 'V' then
s := s + ' NOT NULL ';
if recno < ClientDataSet1.RecordCount then
s := s + ' ,'
else
s := s + ' )';
Memo1.Lines.Append(s);
Inc(recno);
ClientDataSet1.MoveBy(1);
end;
Memo1.Lines.Append('GO');
ClientDataSet1.First;
ClientDataSet1.EnableControls;
end;
procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
begin
ClientDataSet1.Close;
ADODataSet2.DisableControls;
ADODataSet2.Close;
ADODataSet2.Parameters.ParamValues['表格名稱'] := ADODataSet1.FieldValues['表格名稱'];
ADODataSet2.Open;
ClientDataSet1.Open;
ADODataSet2.EnableControls;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
GenerateCreateSQL;
end;
procedure TForm1.ClientDataSet1AfterInsert(DataSet: TDataSet);
begin
if VarIsNull(ClientDataSet1.FieldByName('MAXItem').Value) then
//ClientDataSet1.FieldByName('項次').AsInteger := 1
ADODataSet2.FieldByName('項次').AsInteger := 1
else
//ClientDataSet1.FieldByName('項次').AsInteger := ClientDataSet1.FieldByName('MAXItem').Value + 1;
ADODataSet2.FieldByName('項次').AsInteger := ClientDataSet1.FieldByName('MAXItem').Value + 1;
//ClientDataSet1.FieldByName('表格名稱').AsString := ADODataSet1.FieldValues['表格名稱'];
ADODataSet2.FieldByName('表格名稱').AsString := ADODataSet1.FieldValues['表格名稱'];
end;
procedure TForm1.ClientDataSet1AfterPost(DataSet: TDataSet);
//var i: integer;
begin
//i := ClientDataSet1.ApplyUpdates(0);
end;
end.