ClientDataSet 是以多表视图显示,加入了其他表的字段,现在需要在这个ClientDataSet上去掉不属于这个表的字段,或者是保留指定字段,可以新建个ClientDataSet,也可以直接处理OleVariant,只要求在ClientDataSet.data中不存在这些字段,而不单单不显示。不知道如何处理?
解决方案 »
- List index out of bounds(0)
- 如何传递一个参数给另外一个窗口
- 在局域网内如何制做互相通信小程序
- Einouterror异常该怎么处理,错误提示file not found
- 初恋女朋友来了,我不敢见她...
- 用power(256,3)求出来的是Extended型,如何把它直接转换成Integer型啊
- 求网络高手相助,最好熟NETBIOS
- 请教高手dbexpress 中Tsqlconnect连接数据库的设置?在线等待
- com+的问题!!李维《delphi5.x ado/mts/com+高级程序设计》中更新对象为什么不起作用?
- 奇怪,为什么显示不了图片?
- cxTreeView与TreeView,cxListView与ListView的区别
- WebBrowser怎么获取网页高度?
select * from t 就是显示全部字段
select A,B,C from t 就只有A,B,C字段
这样可以不,试试。
procedure TForm1.Button1Click(Sender: TObject);
var fied:array[0..1]of Tfield;//括号内的范围,是指定的字段数目
CDSet:TClientDataSet;//若要在其他过程中使用,就别在这里定义(定义为全局性)
i:integer;
begin
CDSet:=TClientDataSet.Create(self);//动态建立一个用来保存指定字段的数据集(也可以静态建立)
try
//建立静态字段:
for i:=0 to 1 do begin
fied[i]:=TStringField.Create(CDSet);//指定要的两个字段为字符类型(可据实相应处理)
with fied[i] do begin
FieldName:=ClientDataSet.Fields[i+1].FieldName;//假定指定的字段在第 1、2
FieldKind:=fkData;
DataSet:=CDSet;
end;
end;
CDSet.Data:=ClientDataSet.Data;//复制指定字段的数据
//你要处理数据的语句.....
finally
//释放动态建立的东西(若为全局性,则在进程关闭之前执行)
CDSet.Close;
FreeAndNil(CDSet);
end;
end;
你只是对ClientDataSet显示字段做了限制,
CDSet.Data:=ClientDataSet.Data;Data还是原来的Data,里面的数据是不变的。
看 clientdataset 的data属性的相关代码。
说白了 data 就是一二维数组。 没必要再去折腾。