Marco Web Center |
Home: Code Repository: Mastering Delphi 5Project ADOEMPL
Project StructureADOEMPL.DPRprogram AdoEmpl; uses Forms, AEForm in 'AEForm.pas' {AdoEmplForm}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TAdoEmplForm, AdoEmplForm); Application.Run; end. AEFORM.PASunit AEForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables, StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, ComCtrls, ADODB; type TAdoEmplForm = class(TForm) AdoTable: TADOTable; DataSource1: TDataSource; ADOConnection: TADOConnection; PageControl2: TPageControl; TabSheet1: TTabSheet; TabSheet3: TTabSheet; cbLock: TCheckBox; EditName: TEdit; btnFind: TButton; btnTotal: TButton; BtnStart: TButton; BtnCommit: TButton; BtnRollback: TButton; DBGrid1: TDBGrid; procedure FormCreate(Sender: TObject); procedure btnTotalClick(Sender: TObject); procedure btnFindClick(Sender: TObject); procedure cbLockClick(Sender: TObject); procedure AdoTableBeforeEdit(DataSet: TDataSet); procedure BtnCommitClick(Sender: TObject); procedure BtnRollbackClick(Sender: TObject); procedure BtnStartClick(Sender: TObject); private { Private declarations } end; var AdoEmplForm: TAdoEmplForm; implementation {$R *.DFM} procedure TAdoEmplForm.FormCreate(Sender: TObject); begin // open the new or existing table AdoTable.Open; end; procedure TAdoEmplForm.btnTotalClick(Sender: TObject); var Bookmark: TBookmark; Total: Real; begin {store the current position, crating a new bookmark} Bookmark := AdoTable.GetBookmark; // AdoTable.DisableControls; AdoTable.BlockReadSize := 10; Total := 0; try AdoTable.First; while not AdoTable.EOF do begin Total := Total + AdoTable.FieldByName('Salary').Value; AdoTable.Next; end; finally {go back to the bookmark and destroy it} AdoTable.GotoBookmark (Bookmark); AdoTable.FreeBookmark (Bookmark); // AdoTable.EnableControls; AdoTable.BlockReadSize := 0; end; MessageDlg ('Sum of new salaries is ' + Format ('%m', [Total]), mtInformation, [mbOk], 0); end; procedure TAdoEmplForm.btnFindClick(Sender: TObject); begin if not AdoTable.Locate ('LastName', EditName.Text, []) then MessageDlg ('Name not found', mtError, [mbOk], 0); end; procedure TAdoEmplForm.cbLockClick(Sender: TObject); begin AdoTable.Close; if not cbLock.Checked then AdoTable.LockType := ltPessimistic else AdoTable.LockType := ltOptimistic; AdoTable.Open; end; procedure TAdoEmplForm.AdoTableBeforeEdit(DataSet: TDataSet); begin // start a transaction, if not already started if not AdoConnection.InTransaction then BtnStartClick (Self); end; procedure TAdoEmplForm.BtnCommitClick(Sender: TObject); begin if AdoTable.State = dsEdit then AdoTable.Post; AdoConnection.CommitTrans; // set buttons BtnStart.Enabled := True; BtnCommit.Enabled := False; BtnRollback.Enabled := False; end; procedure TAdoEmplForm.BtnRollbackClick(Sender: TObject); begin AdoTable.Cancel; AdoConnection.RollbackTrans; // refresh AdoTable.Requery; // set buttons BtnStart.Enabled := True; BtnCommit.Enabled := False; BtnRollback.Enabled := False; end; procedure TAdoEmplForm.BtnStartClick(Sender: TObject); begin AdoConnection.BeginTrans; // set buttons BtnStart.Enabled := False; BtnCommit.Enabled := True; BtnRollback.Enabled := True; end; end. AEFORM.DFMobject AdoEmplForm: TAdoEmplForm Left = 275 Top = 134 Width = 520 Height = 361 Caption = 'AdoEmpl' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = True OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object PageControl2: TPageControl Left = 0 Top = 0 Width = 512 Height = 60 ActivePage = TabSheet1 Align = alTop TabOrder = 0 object TabSheet1: TTabSheet Caption = 'Main' object cbLock: TCheckBox Left = 331 Top = 8 Width = 61 Height = 17 Caption = '&Lock' TabOrder = 0 OnClick = cbLockClick end object EditName: TEdit Left = 200 Top = 6 Width = 121 Height = 21 TabOrder = 1 Text = 'Lee' end object btnFind: TButton Left = 112 Top = 4 Width = 75 Height = 25 Caption = '&Find' TabOrder = 2 OnClick = btnFindClick end object btnTotal: TButton Left = 8 Top = 4 Width = 89 Height = 25 Caption = '&Total' TabOrder = 3 OnClick = btnTotalClick end end object TabSheet3: TTabSheet Caption = 'Transactions' ImageIndex = 1 object BtnStart: TButton Left = 8 Top = 3 Width = 75 Height = 25 Caption = 'Start' TabOrder = 0 OnClick = BtnStartClick end object BtnCommit: TButton Left = 88 Top = 3 Width = 75 Height = 25 Caption = 'Commit' Enabled = False TabOrder = 1 OnClick = BtnCommitClick end object BtnRollback: TButton Left = 168 Top = 3 Width = 75 Height = 25 Caption = 'Rollback' Enabled = False TabOrder = 2 OnClick = BtnRollbackClick end end end object DBGrid1: TDBGrid Left = 0 Top = 60 Width = 512 Height = 274 Align = alClient DataSource = DataSource1 TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'MS Sans Serif' TitleFont.Style = [] end object AdoTable: TADOTable CacheSize = 50 Connection = ADOConnection CursorLocation = clUseServer MaxRecords = 50 BeforeEdit = AdoTableBeforeEdit TableDirect = True TableName = 'Employees' Left = 40 Top = 144 end object DataSource1: TDataSource DataSet = AdoTable Left = 120 Top = 88 end object ADOConnection: TADOConnection ConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=c:\md' + '5code\Part3\12\data\MdData.mdb;Mode=Share Deny None;Extended Pro' + 'perties="";Locale Identifier=1033;Persist Security Info=False;Je' + 't OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:' + 'Database Password="";Jet OLEDB:Engine Type=4;Jet OLEDB:Database ' + 'Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Glo' + 'bal Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet O' + 'LEDB:Create System Database=False;Jet OLEDB:Encrypt Database=Fal' + 'se;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compac' + 't Without Replica Repair=False;Jet OLEDB:SFP=False' CursorLocation = clUseServer LoginPrompt = False Provider = 'Microsoft.Jet.OLEDB.4.0' Left = 40 Top = 88 end end
|
||
© Copyright Marco Cantù, 1995-2020, All rights reserved |