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

📄 transactions.pas

📁 Crlab公司用来连接MySQL数据库的控件
💻 PAS
字号:
unit Transactions;

interface

uses
{$IFNDEF LINUX}
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, ToolWin, ComCtrls, Buttons, MyDacVcl,
{$ELSE}
  SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls,
  QDBCtrls, QComCtrls, QExtCtrls, QGrids, QDBGrids, QButtons, MyDacClx,
{$ENDIF}
  DAScript, DBAccess, MyAccess, DB, MemDS, MyScript, DemoFrame;

type
  TTransactionsFrame = class(TDemoFrame)
    DBGrid: TDBGrid;
    DataSource: TDataSource;
    ToolBar: TPanel;
    MyQuery: TMyQuery;
    Panel1: TPanel;
    RefreshRecord: TSpeedButton;
    DBNavigator: TDBNavigator;
    btClose: TSpeedButton;
    btOpen: TSpeedButton;
    Panel2: TPanel;
    Panel3: TPanel;
    Label1: TLabel;
    Panel4: TPanel;
    btRollbackTrans: TSpeedButton;
    btCommitTrans: TSpeedButton;
    btStartTrans: TSpeedButton;
    procedure btOpenClick(Sender: TObject);
    procedure btCloseClick(Sender: TObject);
    procedure btStartTransClick(Sender: TObject);
    procedure btCommitTransClick(Sender: TObject);
    procedure btRollbackTransClick(Sender: TObject);
    procedure DataSourceDataChange(Sender: TObject; Field: TField);
    procedure DataSourceStateChange(Sender: TObject);
    procedure btRevertRecordClick(Sender: TObject);
    procedure RefreshRecordClick(Sender: TObject);
  private
    { Private declarations }
    procedure ShowTrans;
    procedure ShowPending;
  public
    // Demo management
    procedure Initialize; override;
    procedure SetDebug(Value: boolean); override;
  end;

implementation

uses MyDacDemoForm;

{$IFDEF CLR}
{$R *.nfm}
{$ENDIF}
{$IFDEF WIN32}
{$R *.dfm}
{$ENDIF}
{$IFDEF LINUX}
{$R *.xfm}
{$ENDIF}

procedure TTransactionsFrame.ShowTrans;
begin
  if MyDACForm.MyConnection.InTransaction then
    MyDACForm.StatusBar.Panels[2].Text:= 'In Transaction'
  else
    MyDACForm.StatusBar.Panels[2].Text:= '';
end;

procedure TTransactionsFrame.ShowPending;
begin
  if MyQuery.UpdatesPending then
    MyDACForm.StatusBar.Panels[1].Text:= 'Updates Pending'
  else
    MyDACForm.StatusBar.Panels[1].Text:= '';
end;

procedure TTransactionsFrame.btOpenClick(Sender: TObject);
begin
  MyQuery.Open;
end;

procedure TTransactionsFrame.btCloseClick(Sender: TObject);
begin
  MyQuery.Close;
end;

procedure TTransactionsFrame.btStartTransClick(Sender: TObject);
begin
  MyDACForm.MyConnection.StartTransaction;
  ShowTrans;
end;

procedure TTransactionsFrame.btCommitTransClick(Sender: TObject);
begin
  MyDACForm.MyConnection.Commit;
  ShowTrans;
end;

procedure TTransactionsFrame.btRollbackTransClick(Sender: TObject);
begin
  MyDACForm.MyConnection.Rollback;
  ShowTrans;
end;

procedure TTransactionsFrame.DataSourceStateChange(Sender: TObject);
begin
  ShowPending;
  MyDACForm.StatusBar.Panels[3].Text:= 'Record: ' + IntToStr(MyQuery.RecNo) + ' of '+ IntToStr(MyQuery.RecordCount);
end;

procedure TTransactionsFrame.DataSourceDataChange(Sender: TObject; Field: TField);
begin
  DataSourceStateChange(nil);
end;

procedure TTransactionsFrame.btRevertRecordClick(Sender: TObject);
begin
  MyQuery.RevertRecord;
  ShowPending;
end;

procedure TTransactionsFrame.RefreshRecordClick(Sender: TObject);
begin
  MyQuery.RefreshRecord;
end;

// Demo management
procedure TTransactionsFrame.Initialize;
begin
  MyQuery.Connection:= Connection as TCustomMyConnection;
end;

procedure TTransactionsFrame.SetDebug(Value: boolean);
begin
  MyQuery.Debug:= Value;
end;

end.


⌨️ 快捷键说明

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