, TDataSet. TClientDataSet ( ) , DLL, . ( , dll dongle).
, Microsoft DataTable : ADO Recordset.
ADO Recordset, , TADODataSet, Delphi TDataSet ( ADO Recordset ).
var
rs: Recordset;
//Use ADO Recordset to hold our in-memory table
rs := CoRecordset.Create;
rs.CursorLocation := adUseClient; //default is adUseServer
, , :
rs.Fields.Append('InvoiceNumber', adInteger, 0, adFldUpdatable, EmptyParam);
rs.Fields.Append('CustomerName', adVarWChar, 200, adFldUpdatable, EmptyParam);
rs.Fields.Append('CreatedDate', adDBTimeStamp, 0, adFldUpdatable, EmptyParam);
rs.Fields.Append('Comments', adLongVarWChar, -1, adFldUpdatable, EmptyParam);
rs.Fields.Append('Quantity', adDouble, 0, adFldUpdatable, EmptyParam);
rs.Fields.Append('InvoiceTotal', adCurrency, 0, adFldUpdatable, EmptyParam);
Open :
var
o: OleVariant;
o := (rs as IDispatch);
o.Open;
. :
rs.AddNew(EmptyParam, EmptyParam);
rs.Fields['InvoiceNumber'].Value := 1783;
rs.Fields['CustomerName'].Value := 'Hubert Farnsworth';
rs.Fields['CreatedDate'].Value := Now;
rs.Fields['Comments'].Value := 'The quick brown fox jumped over the lazy dog';
rs.Fields['Quantity'].Value := 19809.32;
rs.Fields['InvoiceTotal'].Value := 99.95;
rs.AddNew('InvoiceNumber', 1784);
rs.AddNew(VarArrayOf(['InvoiceNumber', 'InvoiceTotal']), VarArrayOf([1784, 22.37]));
rs.AddNew(VarArrayOf([0, 2]), VarArrayOf([1785, Now]));
if (not rs.BOF) or (not rs.EOF) then
rs.MoveFirst;
, , TDataSet:
var
dataset: TDataSet;
dataset := TADODataSet.Create(nil);
dataset.Recordset := rs;
, :
var
ds: TDataSet;
begin
ds := CreateMemoryDataSet();
ShowMessage(DataSetToMarkdown(ds));
:
| InvoiceNumber | CustomerName | CreatedDate | Comments | Quantity | InvoiceTotal |
|---------------|-------------------|----------------------|----------|----------|--------------|
| 1783 | Hubert Farnsworth | 7/25/2017 3:32:21 PM | The quick brown fox jumped over the lazy dog | 19809.32 | 99.95 |
| 1784 | | | | | |
| 1784 | | | | | 22.37 |
| 1785 | | 7/25/2017 3:32:22 PM | | | |
:
ds := CreateMemoryDataSet();
ds.First;
ds.Edit;
ds.FieldByName('InvoiceNumber').AsInteger := 1786;
ShowMessage(DataSetToMarkdown(ds));
| InvoiceNumber | CustomerName | CreatedDate | Comments | Quantity | InvoiceTotal |
|---------------|-------------------|----------------------|----------|----------|--------------|
| 1786 | Hubert Farnsworth | 7/25/2017 3:32:21 PM | The quick brown fox jumped over the lazy dog | 19809.32 | 99.95 |
| 1784 | | | | | |
| 1784 | | | | | 22.37 |
| 1785 | | 7/25/2017 3:32:22 PM | | | |