clientdataset 动态创建 字段,特别是查找字段 ( 积分: 100 )

  • 主题发起人 主题发起人 wpw72
  • 开始时间 开始时间
W

wpw72

Unregistered / Unconfirmed
GUEST, unregistred user!
cdsTemp&nbsp;:=&nbsp;TClientDataset.Create(Self);<br>&nbsp;&nbsp;with&nbsp;cdsTemp&nbsp;do&nbsp;//&nbsp;添加字段定义<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;FieldDefs.AddFieldDef&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataType&nbsp;:=&nbsp;ftSmallint;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;:=&nbsp;'SN';<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;FieldDefs.AddFieldDef&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataType&nbsp;:=&nbsp;ftString;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size&nbsp;:=&nbsp;7;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;:=&nbsp;'SerialNumber';<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;cdsTemp.CreateDataset;<br>接下来如何创建查找字段?
 
TClientDataset好像不能动态创建查找字段的
 
其实就是对数据集存在的创建字段列表,不存在的可以创建计算字段。<br>procedure&nbsp;GetAddAllField(FdName:string;DSName:TDataSet;dt:TFieldClass);<br>var<br>&nbsp;&nbsp;i:integer;<br>begin<br>&nbsp;&nbsp;if&nbsp;DSName.FindField(FdName)&nbsp;&lt;&gt;&nbsp;nil&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;exit;<br>&nbsp;&nbsp;DSName.Close;<br>&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;dt.Create(DSName)&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FieldName&nbsp;:=&nbsp;FdName;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayLabel&nbsp;:=&nbsp;FdName;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FieldKind&nbsp;:=&nbsp;fkData;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name&nbsp;:=&nbsp;DSName.Name&nbsp;+&nbsp;'DSDesigner'&nbsp;+&nbsp;inttostr(DsName.FieldCount);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;dt&nbsp;=&nbsp;TStringField&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i:=0&nbsp;to&nbsp;TableFieldList.FieldCount-1&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Copy(FieldName,1,Length(FieldName)-1)=TableFieldList.Fields.FieldName&nbsp;then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size:=TableFieldList.Fields.Size;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;:=&nbsp;DSName.FieldCount;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataSet&nbsp;:=&nbsp;DSName;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DSName.FieldDefs.Update;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;except<br>&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;e:&nbsp;exception&nbsp;do<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;raise&nbsp;Exception.Create(E.Message);<br>&nbsp;&nbsp;end;<br>end;
 

Similar threads

后退
顶部