如何删除动态删除计算字段?急!急!急!(100分)

  • 主题发起人 主题发起人 bright_xiao
  • 开始时间 开始时间
B

bright_xiao

Unregistered / Unconfirmed
GUEST, unregistred user!
如何删除动态删除计算字段?急!急!急!
 
试试:
ADOTable1.Fields.Remove(ADOTable1.Fields[3]);
 
delete from query where a=:a
 
to :blue_morning
不能用ADOTABLE
TO:ugvanxk
只能用TABLE,因牵扯数据量的问题,用查询对大量数据不行。如何做?
 
delete from table1 where a=:a,不行吗
你的问题我没怎么看懂

 
其实它的真正意思为第一次把TABLE中的所有字段取出,
再建一个新的计算字段,而第二次,又要把TABLE中的所有字段取出,
再建一个新的计算字段,而第一次建的计算字段不能再有,就是每次建不
同的计算字段,相当一个新的table,但又不能用不同的TABLE,否则用的TABLE
太多
 
ADOTable只是一个类名而已。那么:
DataSet.Fields.Remove(DataSet.Fields[3]);呢?
你不要告诉我又是DataSet不是Table,它们都是从TDataSet继承来的Fields.Remove(AField: TFields);
是TDataSet.fields的方法,所以两个都可用。你把他改一下不就可以了(扯远了)。

第一次:
Table.FieldDefs.Add('第一次', ftCalculated, 0, True);
为Table.OnCalcFields事件指定一个处理方法

第二次:
for i := 0 to Table.FieldCount - 1
begin
if Table.Fields.DataType = ftCalculated then
beign
Table.Fiesds.Remove(Table.Fields);
end;
重复第一步,建立新的计算字段,指定计算方法。
end;
 
在删除后加一条 
Break;
创建新字段的方法写在for的外面.

不好意思。 :)
 
同意blue_morning
 
to:blue_morning
您 好!
不知是我太笨还是怎么着,竟然找不到ftCalculated类型,可否将例程给我一份,多谢!
 
改为经下语句成功,多谢大家的帮助。
if Table1.Fields.FieldKind=fkCalculated then
 
多人接受答案了。
 
你好,昨天写的程序是没有在Delphi下测试过,想着反正就这个道理,结果看到你的邮件后
我测试有好几个错误,对不起。下面的程序在D5中已经测试通过
procedure TForm1.Button2Click(Sender: TObject);
var
i: Integer;
begin
with ADOTable1 do
begin
for i := 0 to FieldCount - 1 do
if Fields.FieldKind = fkCalculated then
begin
ShowMessage(Fields.FieldName);
Fields.Remove(Fields);
Inc(iDelCount);//在这里记一个全局变量
Break;
end;
ShowMessage(IntToStr(FieldCount));
//如果不刷新则数据敏感控件上可以看到已经删除的字段
Close;
Open;
end;
end;
你把删除的字段次数用一个变量记下来,在计算事件中用一个Case来进行选择计算
Case iDelCount of
1: begin
//指定算法
end;
2: begin
//指定的算法
end;
end;
我的思路大概就是这样了。
 
to:blue_morning
你好,已经解决此问题,多谢你的帮助。以后可以常和我联系
我的MAIL:bright_xiao@21cn.com.谢谢!
 
后退
顶部