Multi-layer structure must not be a few TclientDataSet comprehensive analysis
In the three-layer structure, the status of TclientDataSet is unrecivalent. Her use is very critical, this article explains her use from the following aspects, I hope to help you.
Dynamic index
Procedure TFORM1.DBGRID1TITLECLICK (Column: Tcolumn);
Begin
IF
Not column.field
Is TBLOBFIELD)
THEN
// TBLOBFIELD can not index, binary
ClientDataSet1.indexfieldNames: = column.field.fieldname;
END;
2. Implementation of the master from the table in multi-layer structure
Standby CLIENTDATASET1.PACKETRECORD is -1, all records
Set from the table clientDataSet1.packetRecord to 0, current record
3.Taggregates use
(1) AGGREGATES in the field editing
After setting Expression (Expression)
Set Active: =
True
Use dbEDit's field for the former
(2) Use aggergates attribute Add design expression test
transfer
ShowMessage (FLOATSTR (ClientDataSet1.aggRegates.count);
ShowMessage (ClientDataSet1.aggregates.Items [0] .value);
4. Don't BDE in a single layer database
Use ClientDataSet instead of table, loadFileName with ClientDataSet to load CDS
Instead of Table TableName DB or DBF
The original program transformation method:
Add a ClientDataSet, use the right-click Assign Locate Data
After Savetofile, then loadFromfile, remove Table
Set the DataSource of the original Table to ClientDataSet
The only thing to pay is: To copy midas.dll to system or current directory
5. Implementation method of briefcase of the three-layer structure
At the same time, set 1: filename (*. CDS) 2.Remote Server
6. You can assign a value for DATA (from another data set)
ClientDataSet2.data:=ClientDataSet1.data;
ClientDataSet2.Open;
or
ClientDataSet2.clonecursor (ClientDataSet1,
True);
ClientDataSet2.Open;
7. Additional data
The client requests data to the application server. If TclientDataSet
The fetchondemand property is set to
True,
The client will automatically retrieve the value of the attached packet such as the value of the blob of the blob or the contents of the hidden table as needed.
otherwise,
The client needs to explicitly call GetNextPacket to get these additional packets.
ClientDataSet's PacketRecords sets a number of records obtained at a time
8.ClientDataSet and server-side QUERY connection method
(1) SQL content is empty
ClientDataSet1.Close;
ClientDataSet1.commandtext: = Edit1.Text;
// 即 SQL content
ClientDataSet1.Open;
Filter such as: Country Like 'a%' for no application server
FILTERED =
TRUE can implement SQL functionality
(2) Parameters
If the server Query's SQL is
Select * from animalswhere
Name Like: DD
Then: Client ClientDataSet
VAR
PM: tParam;
Begin
ClientDataSet1.Close;
ClientDataSet1.ProviderName: = 'DataSetProvider1';
PM: = tParam.create
NIL);
PM.
Name: = 'DD';
Pm.DataType: = ftstring;
ClientDataSet1.Params.clear;
ClientDataSet1.Params.Addparam (PM);
ClientDataSet1.Params.Parambyname ('DD'). Asstring: = Edit1.Text;
ClientDataSet1.Open;
PM.Free;
END;
9. Update management of data
(1) SavePoint saves the current data status so that it can be restored to this state
VAR
PP: integer;
Begin
PP: = ClientDataSet1.savePoint;
ClientDataSet1.EDIt;
ClientDataSet1.fieldbyName ('Name') .sstring: = 'Old Tell';
ClientDataSet1.post;
Table1.refresh;
END;
Recovery point
ClientDataSet1.savePoint: = PP;
(2) Cancel, RevertRecord
Cancel the changes to the current record, only suitable for POST, if POST, call
RevertRecord
(3) Cancelupdate
Cancel all modifications to the database
(4) UndolastChange (Boolean), ChangeCount
Cancel the last modification, you can achieve continuous undo
Parameter
True: Cursor to Restore
FALSE: The cursor does not move in the current location
ChangeCount returns the number of times of modifying records, a record modification multiple times, return only one
But undolastchange only withdraws once
10. Well-writable Recno
Recno for TTable and Tquery is read-only, and TclientDataSet's Recno readable can be writable
ClientDataSet1.Recno: = 5; It is the fifth record as the current record
11. Data save
For Table Using POST to update data
The POST of ClientDataSet1 only updates memory data, and updates server data to use
Applyupdates (MaxerRors: Integer), he has a parameter and is allowed to make an error
The number of times, -1 indicates countless times, and it is often set to 0 when using SimpleObjectBroker, automatic fault tolerance and load balancing.
Note: I have limited level, it is inevitable that there will be a lot of guides.