内存表 FDMemTable ClientDataSet CreateDataSet 动态创建字段
https://community.embarcadero.com/index.php/blogs/entry/firedac-in-memory-dataset-tfdmemtable
ClientDataSet FieldDefs Add Field CreateDataSet 动态创建字段
FDMemTable1.Close();
FDMemTable1.FieldDefs.Clear();
FDMemTable1.FieldDefs.Add('ID', ftInteger, 0, True);
FDMemTable1.FieldDefs.Add('Name', ftString, 20, false);
FDMemTable1.CreateDataSet();
FDMemTable1.AppendRecord([101, 'aaa']);
FDMemTable1.AppendRecord([102, 'bbb']);
FDMemTable1.AppendRecord([103, 'ccc']);
TFDMemTable *table= new TFDMemTable();
delete table;
void __fastcall TForm1::createField()
{
ClientDataSet1->Close(); ClientDataSet1->Fields->Clear();
ClientDataSet1->FieldDefs->Clear(); ClientDataSet1->Open();
ClientDataSet1->Close();
for(int i = ;i < ClientDataSet1->Fields->Count ;i++)
ClientDataSet1->Fields->Fields[]->Free();//释放所有的静态字段 for(int i = ;i < ClientDataSet1->FieldDefs->Count ;i++)
ClientDataSet1->FieldDefs->Items[i]->CreateField(ClientDataSet1); TBooleanField *NewField;
NewField = new TBooleanField(ClientDataSet1);
NewField->FieldName="SelectMe";
NewField->DisplayLabel = "选择";
NewField->FieldKind=fkInternalCalc;
NewField->DataSet=ClientDataSet1;
NewField->Index = ;
ClientDataSet1->Open();
}
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
sql = "select from TABLE1 ";
this->ADOQuery1->Close();
this->ADOQuery1->SQL->Clear();
this->ADOQuery1->SQL->Add(this->sql);
this->ADOQuery1->Open();
this->createField();
}
cds1->Close();
cds1->FieldDefs->Clear();
cds1->FieldDefs->Add("ID", ftInteger, , true);
cds1->FieldDefs->Add("Name", ftString, , false);
cds1->FieldDefs->Add("DT", ftDateTime, , false);
cds1->CreateDataSet();
cds1->AppendRecord( ARRAYOFCONST((,"aaa",Now().DateTimeString() )));
cds1->AppendRecord( ARRAYOFCONST((,"bbb",Now().DateTimeString() )));
cds1->AppendRecord( ARRAYOFCONST((,"ccc",Now().DateTimeString() )));
ClientDataSet1.Close();
ClientDataSet1.FieldDefs.Clear();
ClientDataSet1.FieldDefs.Add('ID', ftInteger, , true);
ClientDataSet1.FieldDefs.Add('Name', ftString, , false);
ClientDataSet1.FieldDefs.Add('DT', ftDateTime, , false);
ClientDataSet1.FieldDefs.Add('chk', ftBoolean, , false);
ClientDataSet1.CreateDataSet();
ClientDataSet1.Open;
ClientDataSet1.Append;
ClientDataSet1.FieldByName('id').Value := ;
ClientDataSet1.FieldByName('name').Value := 'abc';
ClientDataSet1.FieldByName('dt').Value := Now;
ClientDataSet1.Post;
ClientDataSet1.AppendRecord([,'bbb',Now()]);
ClientDataSet1.AppendRecord([,'ccc',Now()]);
CreateDataSet
FDMemTable1->Close();
FDMemTable1->FieldDefs->Clear();
FDMemTable1->FieldDefs->Add("ID", ftInteger, , true);
FDMemTable1->FieldDefs->Add("Name", ftString, , false);
FDMemTable1->FieldDefs->Add("DT", ftDateTime, , false);
FDMemTable1->CreateDataSet();
FDMemTable1->AppendRecord(ARRAYOFCONST((, "aaa", Now().DateTimeString())));
FDMemTable1->AppendRecord(ARRAYOFCONST((, "bbb", Now().DateTimeString())));
FDMemTable1->AppendRecord(ARRAYOFCONST((, "ccc", Now().DateTimeString())));
FDMemTable1->First();
AddFieldDef
with CDS2 do
begin
with FieldDefs.AddFieldDef do
begin
DataType := ftInteger;
Name := 'Field1';
end;
with FieldDefs.AddFieldDef do
begin
DataType := ftString;
Size := ;
Name := 'Field2';
end;
with IndexDefs.AddIndexDef do
begin
Fields := 'Field1';
Name := 'IntIndex';
end;
CreateDataSet;
C++也可以这样写
TVarRec row[] = {user, password, purview, "", 0};
int value_size =8;
qry->AppendRecord(row, value_size);
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TFieldDefs *pDefs = CDS2->FieldDefs;
TFieldDef *pDef = pDefs->AddFieldDef();
pDef->DataType = ftInteger;
pDef->Name = "Field1"; pDef = pDefs->AddFieldDef();
pDef->DataType = ftString;
pDef->Size = ;
pDef->Name = "Field2"; TIndexDef *pIDef = CDS2->IndexDefs->AddIndexDef();
pIDef->Fields = "Field1";
pIDef->Name = "IntIndex"; CDS2->CreateDataSet();
}
2016.8.25 FDMemTable 试验成功 ,三种创建的方式都最终成了InternalCalcField字段。
ClientDataSet1->Close();
ClientDataSet1->Fields->Clear();
ClientDataSet1->FieldDefs->Clear();
TFieldDef *fd;
fd = ClientDataSet1->FieldDefs->AddFieldDef();
fd->InternalCalcField = true;
fd->Name = "calc1";
fd->DataType = ftString;
fd->Size = ;
fd = ClientDataSet1->FieldDefs->AddFieldDef();
fd->InternalCalcField = true;
fd->Name = "flag";
fd->DataType = ftBoolean;
ClientDataSet1->FieldDefs->Add("ID", ftString, , false);
ClientDataSet1->FieldDefs->Add("Name", ftString, , false);
ClientDataSet1->FieldDefs->Add("DT", ftString, , false);
ClientDataSet1->FieldDefs->Add("my", ftString, , false);
ClientDataSet1->FieldDefs->Find("my")->InternalCalcField = true;
for(int i = ;i < ClientDataSet1->FieldDefs->Count ;i++)
ClientDataSet1->FieldDefs->Items[i]->CreateField(ClientDataSet1);
TBooleanField *NewField;
NewField = new TBooleanField(ClientDataSet1);
NewField->FieldName="SelectMe";
NewField->DisplayLabel = "选择";
NewField->FieldKind=fkInternalCalc;
NewField->DataSet=ClientDataSet1;
// ClientDataSet1->CreateDataSet(); 有了上面的CreateField,此句可不要。仅此句还不能创建fkInternalCalc字段,创建变成了fkData
ClientDataSet1->Open();
for (int i = ; i < ClientDataSet1->Fields->Count; i++)
{
ClientDataSet1->Fields->Fields[i]->FieldName;
ClientDataSet1->Fields->Fields[i]->FieldKind;
}
如果dfm窗体文件定义了字段,那么不用createDataSet了,只要open就可以了。
object ds1: TFDMemTable
OnCalcFields = ds1CalcFields
FieldDefs = <>
CachedUpdates = True
IndexDefs = <>
FetchOptions.AssignedValues = [evMode]
FetchOptions.Mode = fmAll
ResourceOptions.AssignedValues = [rvSilentMode]
ResourceOptions.SilentMode = True
UpdateOptions.AssignedValues = [uvCheckRequired, uvAutoCommitUpdates]
UpdateOptions.CheckRequired = False
UpdateOptions.AutoCommitUpdates = True
StoreDefs = True
Left = 352
Top = 160
object ds1Field: TDateTimeField
FieldName = aaa
end
object ds1Field2: TStringField
FieldName = bbb
end
object ds1Field3: TStringField
FieldName = ccc
end
ds1->Close();
ds1->Open();
内存表 FDMemTable ClientDataSet CreateDataSet 动态创建字段的更多相关文章
- odoo 动态创建字段的方法
动态创建字段并非一个常见的的需求,但某些情况下,我们确实又需要动态地创建字段. Odoo 中创建字段的方法有两种,一种是通过python文件class中进行定义,另一种是在界面上手工创建,odoo通过 ...
- DevExpress GridControl 动态创建字段及主细关系表过程
原文地址:http://hi.baidu.com/qdseashore/item/38f1153e9d0143637d034b7a 在做项目中,往往需要在查询基类模板窗口内做主细关系Grid,引用一下 ...
- delphi 新版内存表 FDMemTable
c++builder XE 官方demo最全60多个 http://community.embarcadero.com/blogs?view=entry&id=8761 FireDAC.Com ...
- C#动态创建和动态使用程序集、类、方法、字段等
C#动态创建和动态使用程序集.类.方法.字段等 分类:技术交流 (3204) (3) 首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动 ...
- kbmMemTable关于内存表的使用,以及各种三层框架的评价
关于内存表的使用(kbmMemTable) 关于内存表的使用说明一. Delphi使用内存表1.1 Delphi创建内存表步骤:1. 创建一个Ttable实例.2. 设置一个DataBaseName为 ...
- 关于Delphi内存表的使用说明
关于Delphi内存表的使用说明: 1.建立临时表 数据输入是开发数据库程序的必然环节.在Client/Server结构中,客户端可能要输入一批数据后,再向服务器的后台数据库提交,这就需要在本地(客 ...
- silverlight依据json字符串动态创建实体类
1.接收json字符串: //用JsonValue转换json字符串是为了之后获得json字符串的每行数据和每一列的列名 JsonValue jv = JsonValue.Parse(json); ...
- 022. ASP.NET为DataSet中数据集添加关系及动态创建主子表和添加主子表关系
protected void Page_Load(object sender, EventArgs e) { string connectionString = "server=.;data ...
- YII2框架动态创建表模型
YII2框架动态创建表模型 在YII2中,每个表对应一个model类 在开发过程中,我们在填写一个大型表单的时候,表单里有N个select下拉列表,每个下拉select来自于不同的表: 如果要在程序里 ...
随机推荐
- Gitea docker-compose.yaml
docker-compose.yaml version: "2" networks: gitea: external: false services: server: image: ...
- Spring4 MVC HelloWorld 注解和JavaConfig实例
在这一节中,我们以 Spring4 MVC HelloWorld 注释/JavaConfig为示例,一步一步以简单的方式学习Spring4 MVC 的注解,项目设置,代码,部署和运行. 在先前的 Sp ...
- UVALive-3972 March of the Penguins (最大流:节点容量)
题目大意:有n个带有裂缝的冰块.已知每个冰块的坐标和已经站在上面的企鹅数目,每当一个企鹅从一个冰块a跳到另一个冰块b上的时候,冰块a上的裂缝便增大一点,还知道每个冰块上最多能被跳跃的次数.所有的企鹅都 ...
- 使用PMD进行代码审查(转)
原文地址:使用PMD进行代码审查 很久没写博客了,自从上次写的设计模式的博客被不知名的鹳狸猿下架了一次之后兴趣大减,那时候就没什么兴致写博客了,但是这段时间还没有停下来,最近也在研究一些其他的东西,目 ...
- Centos7环境下安装python3.6.4 并与python2共存
最近安装了新系统centos7,本身自带python2.7,但是由于需要使用python3 来运行一些应用,所以想到在centos环境下安装python3,并保证其和python2 可以共存. 步骤如 ...
- LOJ10131. 「一本通 4.4 例 2」暗的连锁【树上差分】
LINK solution 很简单的题 你就考虑实际上是对每一个边求出两端节点分别在两个子树里面的附加边的数量 然后这个值是0第二次随便切有m种方案,如果这个值是1第二次只有一种方案 如果这个值是2或 ...
- opencrud graphql 数据操作指南
opencrud 是社区团队提出,同时prisma框架就是按照这个标准设计的,里面包含了对于graphql 数据 操作的最佳实践,目前还在完善中,但是设计以及指南覆盖的功能还是比较全的,如果用过 pr ...
- 一步搞定私有Git服务器部署(Gogs)
http://www.jianshu.com/p/424627516ef6 零.安装 Docker 和 Compsoe 首先安装 Docker: $ curl -sSL https://get.doc ...
- xmlns和xsi之schemaLocation
appplicationContex.xml文件报错:元素 "util:constant" 的前缀 "util" 未绑定 在根节点添加了“xmlns:util= ...
- bzoj 5020(洛谷4546) [THUWC 2017]在美妙的数学王国中畅游——LCT+泰勒展开
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5020 https://www.luogu.org/problemnew/show/P4546 ...