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

📄 trans_f.pas

📁 县级供电企业电费核算源码, 在客户处正常运行8年以上, Delphi 5开发,数据库为Interbase/Firebird, 深入使用Procedure和Trigger等, 对入门者具有很好的参考价值
💻 PAS
字号:
unit Trans_F;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, DBGrids, StdCtrls, ExtCtrls, DBCtrls, Db, DBTables, ComCtrls;

type
  TF_Trans = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Button1: TButton;
    Memo1: TMemo;
    DB_New: TDatabase;
    DB_Old: TDatabase;
    Ds_New: TDataSource;
    Ds_Old: TDataSource;
    Tb_New: TTable;
    Tb_Old: TTable;
    DBN: TDBNavigator;
    PC: TPageControl;
    TS_Set: TTabSheet;
    Label1: TLabel;
    Label2: TLabel;
    E_New: TEdit;
    E_Old: TEdit;
    Bt_Trans: TButton;
    Bt_Open: TButton;
    Ts_SQL: TTabSheet;
    Panel3: TPanel;
    Button2: TButton;
    DBG_SQL: TDBGrid;
    CB_OldDB: TCheckBox;
    M_SQL: TMemo;
    Q_SQL: TQuery;
    CB_Select: TCheckBox;
    Ds_SQL: TDataSource;
    M_sFields: TMemo;
    M_dFields: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Bt_OpenClick(Sender: TObject);
    procedure Bt_TransClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure CB_OldDBClick(Sender: TObject);
  private
    { Private declarations }
	procedure SetTable(tablename:String);
    procedure AddField(sField, dField:String);
    Procedure ExecTrans;
  public
    { Public declarations }
  end;

var
  F_Trans: TF_Trans;

implementation


{$R *.DFM}


procedure Tf_Trans.SetTable(tablename:String);
begin
	Tb_New.Active := False;
    Tb_Old.Active := False;
	Tb_New.TableName := TableName;
    Tb_Old.TableName := TableName;
    Tb_New.Active := True;
    Tb_Old.Active := True;
    M_sFields.Lines.Clear;
    M_dFields.Lines.Clear;
end;

procedure TF_Trans.AddField(sField, dField:String);
Begin
    M_sFields.Lines.Add(sField);
	If dField = '' Then
	    M_dFields.Lines.Add(sField)
    Else
		M_dFields.Lines.Add(dField)
End;

Procedure Tf_Trans.ExecTrans();
var
	I:Integer;
Begin
    Tb_Old.First;
	While Not Tb_Old.Eof Do
    Begin
    	Tb_New.Insert;
        For I:=0 To M_sFields.Lines.Count - 1  Do
        	Tb_New[M_dFields.Lines.Strings[I]] := Tb_Old[M_sFields.Lines.Strings[I]];
		Tb_New.Post();            
        Tb_Old.Next;
    End;
End;

procedure TF_Trans.Button1Click(Sender: TObject);
begin
	Close();
end;


procedure TF_Trans.Button2Click(Sender: TObject);
begin
	If Q_SQL.Active Then
    	Q_SQL.Close;
	Q_SQL.SQL.Clear;
    Q_SQL.SQL.Add(M_SQL.Text);
	If CB_Select.Checked Then
    	Q_SQL.Open
    Else
	    Q_SQL.ExecSQL;
end;







procedure TF_Trans.Bt_OpenClick(Sender: TObject);
begin
	With DB_Old,Params Do
    Begin
    	If Connected Then
        	Connected := False;
        Clear();
		Add('Server Name='+E_Old.Text);
        Add('User Name=sysdba');
        Add('password=masterkey');
        Connected := True;
    End;
	With DB_new,Params Do
    Begin
    	If Connected Then
        	Connected := False;
        Clear();
		Add('Server Name='+E_New.Text);
        Add('User Name=sysdba');
        Add('password=masterkey');
        Connected := True;
    End;
end;







procedure TF_Trans.Bt_TransClick(Sender: TObject);
begin
	//村子
    SetTable('Tb_Village');
   	AddField('F_Village_No','');
    AddField('f_Town_No','');
    AddField('f_Village_Name','');
    ExecTrans;

    //变压器
    SetTable('Tb_Transfer');
   	AddField('F_Transfer_No','');
    AddField('f_Line_No','');
    AddField('f_Transfer_Name','');
    ExecTrans;

    //户
    SetTable('Tb_House');
   	AddField('F_House_No','');
    AddField('f_Transfer_No','');
    AddField('f_House_Name','');
    AddField('f_village_no','');
    AddField('f_position','');
    AddField('f_telephone','');
    AddField('f_elect_no','');
    AddField('f_voltage_no','');
    AddField('f_ct_up','');
    AddField('f_ct_down','');
    AddField('f_box_no','');
    AddField('f_date','');
    AddField('f_adjust_count','');
    AddField('f_subfix_rate1','F_Rate1');
    AddField('f_subfix_rate2','F_Rate2');
    AddField('f_elect_no1','');
    AddField('f_elect_no2','');
	ExecTrans;

    //表
    SetTable('Tb_Ammeter');
   	AddField('F_Ammeter_No','');
	AddField('f_house_no','');
	AddField('f_ammeter_Date','');
	AddField('f_ammeter_count','');
	AddField('f_ammeter_last_count','');
	AddField('f_this_count','');
	AddField('f_ammeter_model','');
	AddField('f_ammeter_right','');
	AddField('f_ct_no','');
	AddField('f_ct_model','');
    ExecTrans;
end;

procedure TF_Trans.FormActivate(Sender: TObject);
begin
	PC.ActivePage := TS_Set;
end;

procedure TF_Trans.CB_OldDBClick(Sender: TObject);
begin
	If Q_SQL.Active Then
    	Q_SQL.Active := False;
	If Q_SQL.DatabaseName = 'Old' Then
    	Q_Sql.DatabaseName := 'New'
    Else
    	Q_Sql.DatabaseName := 'Old';
end;


end.

⌨️ 快捷键说明

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