Fdmemtable Memory Table Operations

Source: Internet
Author: User

Unit umemtable;

Interface

Uses
System.sysutils, System.types, System.uitypes, system.classes, System.variants,
FMX. Types, FMX. Controls, FMX. Forms, FMX. Graphics, FMX. Dialogs, System.rtti,
FMX. Layouts, FMX. Grid, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Param,
FireDAC.Stan.Error, Firedac.dats, FireDAC.Phys.Intf, FireDAC.DApt.Intf, Data.db,
FireDAC.Comp.DataSet, FireDAC.Comp.Client, FMX. Controls.presentation, Fmx.stdctrls,
DATA.BIND.ENGEXT, Fmx.Bind.DBEngExt, Fmx.Bind.Grid, System.Bindings.Outputs,
Fmx.Bind.Editors, Data.Bind.Components, Data.Bind.Grid, Data.Bind.DBScope, FMX. Edit;

Type
TForm1 = Class (Tform)
Button1:tbutton;
fdmemtable1:tfdmemtable;
Datasource1:tdatasource;
Grid1:tgrid;
Bndsrcdb1:tbindsourcedb;
Bndngslst1:tbindingslist;
Lnkgrdtdtsrcbindsourcedb:tlinkgridtodatasource;
Button2:tbutton;
Button3:tbutton;
Button4:tbutton;
Edit1:tedit;
Edit2:tedit;
Edit3:tedit;
Lbl1:tlabel;
Label1:tlabel;
Label2:tlabel;
Button5:tbutton;
Button6:tbutton;
Button7:tbutton;
Button8:tbutton;
Button9:tbutton;
Button10:tbutton;
Button11:tbutton;
Button12:tbutton;
Button13:tbutton;
Button14:tbutton;
Button15:tbutton;
Button16:tbutton;
Button17:tbutton;
Procedure Button1Click (Sender:tobject);
Procedure Button2click (Sender:tobject);
Procedure Button5click (Sender:tobject);
Procedure Button6click (Sender:tobject);
Procedure Button8click (Sender:tobject);
Procedure Button7click (Sender:tobject);
Procedure Button9click (Sender:tobject);
Procedure Button10click (Sender:tobject);
Procedure Button11click (Sender:tobject);
Procedure Button12click (Sender:tobject);
Procedure Button13click (Sender:tobject);
Procedure Button14click (Sender:tobject);
Procedure Button15click (Sender:tobject);
Procedure Button16click (Sender:tobject);
Procedure Button17click (Sender:tobject);
Private

{Private declarations}
Public
{Public declarations}
End

Var
Form1:tform1;
Id:integer;

Implementation

{$R *.FMX}

Procedure Tform1.button10click (Sender:tobject);
Begin
Empty
Fdmemtable1.emptyview;
End

Procedure Tform1.button11click (Sender:tobject);
Var
Frow, Frow2:tfddatsrow;
Begin
Frow: = FDMEMTABLE1.TABLE.ROWS.ADD ([1, ' Hello ', ' 2015-09-15 ']);
FRow2: = FDMemTable1.Table.NewRow ();
Frow2.setvalues ([2, ' Hello2 ', ' 2015-09-15 ']);
FDMEMTABLE1.TABLE.ROWS.ADD (FROW2);
The following Method 2 shows an increase in success
Fdmemtable1.cachedupdates;
Fdmemtable1.commitupdates;
Fdmemtable1.applyupdates;
Fdmemtable1.commitupdates;
End

Procedure Tform1.button12click (Sender:tobject);
Begin
Fdmemtable1.filter: = ' Value = ' + quotedstr (' Hello ');
fdmemtable1.filtered: = True;
End

Procedure Tform1.button13click (Sender:tobject);
Begin
Fdmemtable1.filter: = ' Value = ' ' Hello ';
Fdmemtable1.filter: = ' Value = ' hel* ';
When focaseinsensitive, the conditional string literals in the "Filter" property are not case-sensitive when compared to field values.
Fonopartialcompare Force Delphi to interpret an asterisk (*) as a literal character rather than a wildcard. By default,
Filteroptions set to Empty
Fdmemtable1.filteroptions: = [focaseinsensitive];
fdmemtable1.filtered: = True;

End

Procedure Tform1.button14click (Sender:tobject);
Begin
Fdmemtable1.filter: = ' Value like ' ' hel% ';
fdmemtable1.filtered: = True;

End

Procedure Tform1.button15click (Sender:tobject);
Begin
Fdmemtable1.filter: = ' id<10 and Value like ' he% ';
fdmemtable1.filtered: = True;

End

Procedure Tform1.button16click (Sender:tobject);
Var
Fconnintf:ifdphysconnection;
Fcommintf:ifdphyscommand;
Omechfilter:tfddatsmechfilter;
Fdataview:tfddatsview;
Begin

Fdataview: = FDMemTable1.Table.DefaultView;
Fdataview.sort: = ' Id ASC ';
FDataView.Mechanisms.AddSort (' Id DESC; Value ASC ');
FDMemTable1.View.Mechanisms.AddSort (' Id ');
FDataView.Mechanisms.Clear;


fdmemtable1.view.sort:= ' Id DESC; '
FDMemTable1.View.SortingMechanism;
4) Filtering
Omechfilter: = tfddatsmechfilter.create (' ID > 3 ');
FDMEMTABLE1.VIEW.MECHANISMS.ADD (Omechfilter);

FDefaultView.Mechanisms.Clear;
5) too
FDMemTable1.View.Mechanisms.AddFilter (' Id DESC ');
FDefaultView.Mechanisms.Clear;
FDefaultView.Mechanisms.Clear;
5) too
FDefaultView.Mechanisms.AddFilter (' ID > 5 ');
FDefaultView.Mechanisms.Clear;

End

Procedure Tform1.button17click (Sender:tobject);
Var
Omech:tfddatsmechfilter;
I:integer;
Fdataview:tfddatsview;
Begin
Fdataview: = FDMemTable1.Table.DefaultView;
Locate row using locating mechanism
Omech: = Tfddatsmechfilter.create (' id=5 ');
Omech.locator: = True;
FDATAVIEW.MECHANISMS.ADD (Omech);
Fdataview.locate (I, True, true);
If I <>-1 Then
Begin
ShowMessage (' find delete ');
fdataview.de;
End
Else
Begin
ShowMessage (' NO ');
End
FDataView.Mechanisms.Clear;
End


Procedure Tform1.button1click (Sender:tobject);
Var
I:integer;
Begin
If Fdmemtable1.active Then
Fdmemtable1.close;
With Fdmemtable1.fielddefs do
Begin
Clear;
ADD (' Id ', Ftinteger, 0, False);
ADD (' Value ', ftstring, False);
ADD (' time ', Ftdatetime, 0, False);
End
With Fdmemtable1.indexdefs do
Begin
Clear;
ADD (' Index1 ', ' Id ', []); Defining an index positive order
ADD (' Index1 ', ' Id ', [ixdescending]); Define index Reverse
End
Fdmemtable1.createdataset;
For I: = 1 to
Begin
Fdmemtable1.appendrecord ([I, ' ID ' + inttostr (i), now ()]);
End

End

Procedure Tform1.button2click (Sender:tobject);
Begin
Fdmemtable1.appendrecord ([Strtoint (Edit1.text), Edit2.text, Strtodate (Edit3.text)]);
End

Procedure Tform1.button5click (sender:tobject);
var
Fld_id:tintegerfield;
Fld_value:tstringfield;
Fld_time:tdatetimefield;
I:integer;
Begin
//Insert
with FDMemTable1 do
begin
Disablecontrols;//Disconnect Data-aware control
Try
Open;//open
//define field
fld_id: = Tintegerfield (Fieldbyname (' Id '));
Fld_value: = Tstringfield (Fieldbyname (' Value '));
Fld_time: = Tdatetimefield (Fieldbyname (' time '));
for I: = 0 to 9 do
begin
Inc (Id);
Append; Append Data
//Assignment
Fld_id.asinteger: = ID;
Fld_value.asstring: = ' Hello pfeng! ' + inttostr (ID);
fld_time.asdatet IME: = Now;
Post;//OK
end;
//updateindexes;//Update index
finally
Enablecontrols;//Connect Data-aware control
end;
End;
End;

Procedure Tform1.button6click (Sender:tobject);
Var
Fld_id:tintegerfield;
Fld_value:tstringfield;
Fld_time:tdatetimefield;
Begin
Update
With FDMemTable1 do
Begin
Open;
fld_id: = Tintegerfield (Fieldbyname (' Id '));
Fld_value: = Tstringfield (Fieldbyname (' Value '));
Fld_time: = Tdatetimefield (Fieldbyname (' time '));
If Locate (' Id ', 5, []) then
Begin
Edit;
Fld_value.asstring: = ' content modified ';
Fld_time.asdatetime: = Now;
Post;
End
End
End

Procedure Tform1.button7click (Sender:tobject);
Var
Fld_id:tintegerfield;
Fld_value:tstringfield;
Fld_time:tdatetimefield;
Begin
Delete
With FDMemTable1 do
Begin
Open;
fld_id: = Tintegerfield (Fieldbyname (' Id '));
Fld_value: = Tstringfield (Fieldbyname (' Value '));
Fld_time: = Tdatetimefield (Fieldbyname (' time '));
If Locate (' Id ', 5, []) then
Begin
Delete;
updateindexes;
End
End
End

Procedure Tform1.button8click (sender:tobject);
var
Fld_id:tintegerfield;
Fld_value:tstringfield;
Fld_time:tdatetimefield;
Begin
//query
with FDMemTable1 do
begin
Open;
fld_id: = Tintegerfield (Fieldbyname (' Id '));
Fld_value : = Tstringfield (Fieldbyname (' Value '));
Fld_time: = Tdatetimefield (Fieldbyname (' time '));
If Locate (' Id ', 5, []) then
ShowMessage (fld_value.asstring),
//can also be implemented with FindKey, combined with faster indexing speed
// kbmmemtable1.indexfieldnames:= ' Id ';
//If Kbmmemtable1.findkey ([5]) then ...
End;
End;

Procedure Tform1.button9click (Sender:tobject);
Var
Fld_id:tintegerfield;
Fld_value:tstringfield;
Fld_time:tdatetimefield;
Id:integer;
Begin
Cycle Compare Minimum value
With FDMemTable1 do
Begin
Open;
fld_id: = Tintegerfield (Fieldbyname (' Id '));
Fld_value: = Tstringfield (Fieldbyname (' Value '));
Fld_time: = Tdatetimefield (Fieldbyname (' time '));
Disablecontrols;
Try
First;
ID: = Fld_id.asinteger;
While don't Eof do
Begin
If ID > Fld_id.asinteger Then
ID: = Fld_id.asinteger;
Next;
End
Locate (' ID ', ID, []);
Finally
Enablecontrols;
End
End
End

End.

Fdmemtable Memory Table Operations

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.