起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 584|回复: 26

数据集临时字段赋值错误**

[复制链接]
发表于 2008-6-20 11:16:53 | 显示全部楼层 |阅读模式
DataSetCheciAnalySingle是我的数据集,我在它的afteropen事件里调用下面的方法,出现错误:     

       DataSetCheciAnalySingle.Edit;
       DataSetCheciAnalySingle.FieldByName('ordercustsum').value := ordernum;
       DataSetCheciAnalySingle.FieldByName('custsum').value := custnum;
       DataSetCheciAnalySingle.FieldByName('LCLJ').value := glsnum;

上面的三个字段均是临时字段,且都是数字类型,不应该有错的啊

ac.jpg

288.85 KB, 下载次数: 230

回复

使用道具 举报

发表于 2008-6-20 11:19:06 | 显示全部楼层
检查一下ordernum,custnum,glsnum三个变量的值
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 11:25:26 | 显示全部楼层
最初由 gaihl 发布
[B]检查一下ordernum,custnum,glsnum三个变量的值 [/B]

前两个是integer,后一个是double  临时字段属性里,前两个是整数,后一个是数字
回复 支持 反对

使用道具 举报

发表于 2008-6-20 11:27:56 | 显示全部楼层
是用Ctrl+F7看到的吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 11:30:50 | 显示全部楼层
这个是干么用的。。。
我设断点时,是到了edit这句报错的
回复 支持 反对

使用道具 举报

发表于 2008-6-20 11:49:16 | 显示全部楼层
是可以看变量的。
贴一下数据字段定义,和三个变量的声明吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 13:05:38 | 显示全部楼层
object FIELD_CheciAnalySingle_ordercustsum: TInternalDataField
    ID = 'ordercustsum'
    DisplayName = #35746#36135#37327#32047#35745
    DataType = dtInteger
    EditStyleID = 'Number'
    Alignment = taRightJustify
    Attributes.ReadOnly.Text = 'True'
    AutoFillDef.Trigger = [ftOnInsert, ftOnEdit, ftOnDataChange]
  end
  object FIELD_CheciAnalySingle_custsum: TInternalDataField
    ID = 'custsum'
    DisplayName = #23458#25143#24635#35745
    DataType = dtInteger
    EditStyleID = 'Number'
    Alignment = taRightJustify
    AutoFillDef.Trigger = [ftOnInsert, ftOnEdit, ftOnDataChange]
  end
    object FIELD_CheciAnalySingle_LCLJ: TInternalDataField
    ID = 'LCLJ'
    DisplayName = #37324#31243#32047#35745
    DataType = dtNumber
    DataTypeAttribute.Precision = 15
    DataTypeAttribute.Scale = 2
    EditStyleID = 'Number'
    Alignment = taRightJustify
    AutoFillDef.Trigger = [ftOnInsert, ftOnEdit, ftOnDataChange]
  end
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 13:06:53 | 显示全部楼层
var
  ordernum:integer;
  custnum:integer;
  glsnumouble;
回复 支持 反对

使用道具 举报

发表于 2008-6-20 13:17:47 | 显示全部楼层
把afteropen中的完整代码贴出来看看,不应出现这情况!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-20 13:27:02 | 显示全部楼层
procedure TCCFX.dsbCheciSingleAfterOpen(DataSet: TDataSet);
begin
  //jsDialogs.ShowMsg(sysutils.IntToStr(dsbCheciSingle.DataSet.RecordCount),' l');
  CheciAnaly.TCheciAnaly(InfoBrokerCHECIANALY.Info).setTempData(CheciAnaly.TCheciAnaly(InfoBrokerCHECIANALY.Info).getZzLiang());
end;

function TCheciAnaly.setTempData(zzliang:integer):TIntArray;
var
  ordernum:integer;
  custnum:integer;
  glsnumouble;
  qyid:string;
  tempqyid:string;
  row:integer;
  i:integer;
  tempche:integer;
  che:integer;
  len:integer;
  barray:TIntArray;
begin
//直接为数据集的临时字段赋值
  ordernum :=0;
  custnum :=0;
  glsnum :=0.00;
  qyid:='';
  row := 0;
  tempche :=0;
  che :=0;
  i :=0;
  //为数组赋值0
  //length := DataSetCheciAnalySingle.ChangeCount;
  len := DataSetCheciAnalySingle.RecordCount;
  //len := 10;
  SetLength(barray,len);
  SetLength(gridarray,len);
  for i:=0 to len-1 do
  begin
    barray:=0;
  end;
  i :=0;
  DataSetCheciAnalySingle.First;
     while(DataSetCheciAnalySingle.Eof=False) do
     begin
       ordernum := ordernum + DataSetCheciAnalySingle.FieldByName('orderSum').AsInteger;
       custnum := custnum+1;
       tempqyid := DataSetCheciAnalySingle.FieldByName('QYLJID').AsString;
       tempche := ordernum div zzliang;
       if(qyid.Equals(tempqyid)=False)then
       begin
         glsnum := glsnum+ DataSetCheciAnalySingle.FieldByName('ZD').AsFloat;
         qyid := tempqyid;
         barray:= row;
         i := i+1;
       end;
       //同一区域里,需要换车的时候记录行数
         if(che <> tempche)then
         begin
           che := tempche;
           barray:=row;
           i:=i+1;
         end;
       //第几条记录的时候row为几-1;
       row := row +1;
       //DataSetCheciAnalySingle.Edit;
       DataSetCheciAnalySingle.FieldByName('ordercustsum').value := ordernum;
       DataSetCheciAnalySingle.FieldByName('custsum').value := custnum;
       DataSetCheciAnalySingle.FieldByName('LCLJ').value := glsnum;
       DataSetCheciAnalySingle.Next;
     end;
  gridarray := barray;
  Result := barray;
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-20 00:28 , Processed in 0.040740 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表