内存表 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来自于不同的表: 如果要在程序里 ...
随机推荐
- 在python中引用jar包
在本文中,首先创建一个maven项目,然后打包成jar包,在python中调用jar包,执行java类方法. 1.在eclipse中创建maven项目 我这里创建一个普通java项目,择选择 “mav ...
- bzoj1069: [SCOI2007]最大土地面积 凸包+旋转卡壳求最大四边形面积
在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成的多边形面积最大. 题解:先求出凸包,O(n)枚举旋转卡壳,O(n)枚举另一个点,求最大四边形面积 /* ...
- 2-10~2-11 配置iptables防火墙增强服务 selinux简单讲解
学习一个服务的过程: 1.此服务器的概述:名字,功能,特点,端口号 2.安装 3.配置文件的位置 4.服务启动关闭脚本,查看端口 5.此服务的使用方法 6.修改配置文件,实战举例 7.排错(从下到上, ...
- 非关联容器|hash|unordered_map/multimap,unordered_set/multiset
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- C++设计模式之适配器模式
对象适配器有以下特点: 有的时候,你会发现,不是很容易去构造一个Adaptee类型的对象: 当Adaptee中添加新的抽象方法时,Adapter类不需要做任何调整,也能正确的进行动作: 可以使用多肽的 ...
- <NET CLR via c# 第4版>笔记 第6章 类型和成员基础
6.1 类型的各种成员 6.2 类型的可见性 public 全部可见 internal 程序集内可见(如忽略,默认为internal) 可通过设定友元程序集,允许其它程序集访问该程序集中的所有inte ...
- Ubuntu系统安装,适用于14.04,16.04和17.10
本文以14.04为案例进行安装,其他版本相关问题会做注解 1.选择要安装的系统语言 本界面建议选择English,之后再选择中文安装 注意: 安装服务器版时,对于14.x版本第一步选择中文没有问题,但 ...
- 为什么有logistics函数
直观地看: 如果是softmax函数,我想有跟多的选择方向吧
- RabbitMQ部署
操作步骤: 安装依赖文件 -->yum install ncurses-devel 进入opt目录创建rabbitmq目录 -->cd /opt -->mkdir rabbitMQ ...
- flask第二十六篇——模板【控制语句】【2】
如果你也在学flask,就请加船长的公众号:自动化测试实战 我们先补充一下for循环的知识,我们之前说过,flask是由Jinja2+sqlAlchemy+werkzeug组成的,我们现在学的控制语句 ...