home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 May / CMCD0505.ISO / Software / Shareware / Programare / pgedri / Source / Demos / Sequences / Main.pas next >
Encoding:
Pascal/Delphi Source File  |  2005-04-01  |  3.9 KB  |  126 lines

  1. {*******************************************************************}
  2. {                                                                   }
  3. {       Vita Voom Software                                          }
  4. {       Main.pas unit - Sequences Demo                              }
  5. {                                                                   }
  6. {       Copyright (c) 1998-2003 Vita Voom Software                  }
  7. {       ALL RIGHTS RESERVED                                         }
  8. {*******************************************************************}
  9. {                                                                   }
  10. { Please refer to the Readme.txt file for details.                  }
  11. {                                                                   }
  12.  
  13. unit Main;
  14.  
  15. interface
  16.  
  17. uses
  18.   SysUtils, Types, Classes, Variants, QTypes, QGraphics, QControls, QForms,
  19.   QDialogs, QStdCtrls, QExtCtrls, QGrids, QDBGrids, DBXpress, FMTBcd,
  20.   Provider, DBClient, DB, SqlExpr;
  21.  
  22. const
  23.   sqlCreateTable = 'create table sequences_demo(ID serial, name varchar(100), age int2);';
  24.   sqlDeleteTable = 'drop table sequences_demo;';
  25.   sqlPopulate1 = 'insert into sequences_demo values(DEFAULT, )';
  26.  
  27. type
  28.   TForm1 = class(TForm)
  29.     DBGrid1: TDBGrid;
  30.     Panel1: TPanel;
  31.     Button1: TButton;
  32.     Button2: TButton;
  33.     Button3: TButton;
  34.     Button4: TButton;
  35.     DataSource1: TDataSource;
  36.     SQLConnection: TSQLConnection;
  37.     sdsSequences_Demo: TSQLDataSet;
  38.     cdsSequences_Demo: TClientDataSet;
  39.     dspSequences_Demo: TDataSetProvider;
  40.     cdsSequences_Demoid: TIntegerField;
  41.     cdsSequences_Demoname: TStringField;
  42.     cdsSequences_Demoage: TSmallintField;
  43.     sdsGetID: TSQLDataSet;
  44.     Button5: TButton;
  45.     sdsSequences_Demoid: TIntegerField;
  46.     sdsSequences_Demoname: TStringField;
  47.     sdsSequences_Demoage: TSmallintField;
  48.     procedure Button1Click(Sender: TObject);
  49.     procedure Button2Click(Sender: TObject);
  50.     procedure Button4Click(Sender: TObject);
  51.     procedure Button3Click(Sender: TObject);
  52.     procedure cdsSequences_DemoAfterOpen(DataSet: TDataSet);
  53.     procedure cdsSequences_DemoAfterClose(DataSet: TDataSet);
  54.     procedure dspSequences_DemoBeforeUpdateRecord(Sender: TObject;
  55.       SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  56.       UpdateKind: TUpdateKind; var Applied: Boolean);
  57.     procedure Button5Click(Sender: TObject);
  58.   private
  59.     { Private declarations }
  60.   public
  61.   end;
  62.  
  63. var
  64.   Form1: TForm1;
  65.  
  66. implementation
  67.  
  68. {$R *.xfm}
  69.  
  70. procedure TForm1.Button1Click(Sender: TObject);
  71. begin
  72.   SQLConnection.ExecuteDirect(sqlCreateTable)
  73. end;
  74.  
  75. procedure TForm1.Button2Click(Sender: TObject);
  76. begin
  77.   SQLConnection.ExecuteDirect(sqlDeleteTable);
  78.   cdsSequences_Demo.Close;
  79. end;
  80.  
  81. procedure TForm1.Button4Click(Sender: TObject);
  82. begin
  83.   ShowMessage('Table "sequences_demo" creation statment:'#13#10#13#10 + sqlCreateTable);
  84. end;
  85.  
  86. procedure TForm1.Button3Click(Sender: TObject);
  87. begin
  88.   cdsSequences_Demo.Active := not cdsSequences_Demo.Active;
  89. end;
  90.  
  91. procedure TForm1.cdsSequences_DemoAfterOpen(DataSet: TDataSet);
  92. begin
  93.   Button3.Caption := 'Close table';
  94. end;
  95.  
  96. procedure TForm1.cdsSequences_DemoAfterClose(DataSet: TDataSet);
  97. begin
  98.   Button3.Caption := 'Open table';
  99. end;
  100.  
  101. procedure TForm1.dspSequences_DemoBeforeUpdateRecord(Sender: TObject;
  102.   SourceDS: TDataSet; DeltaDS: TCustomClientDataSet;
  103.   UpdateKind: TUpdateKind; var Applied: Boolean);
  104. begin
  105.   // Only for insert events... 
  106.   if UpdateKind = ukInsert then
  107.   begin
  108.     try
  109.       // Open the SQLDataset component that will retrieve the next sequence ID 
  110.       // contents: select nextval('sequences_demo_id_seq');
  111.       sdsGetID.Open;
  112.       // Setting the value manually in the dataset
  113.       DeltaDS.FieldByName('id').NewValue := sdsGetID.Fields[0].AsInteger;
  114.     finally
  115.       sdsGetID.Close;
  116.     end;
  117.   end;
  118. end;
  119.  
  120. procedure TForm1.Button5Click(Sender: TObject);
  121. begin
  122.   cdsSequences_Demo.ApplyUpdates(0)
  123. end;
  124.  
  125. end.
  126.