这几天在帮女朋友做个小东西
如此原始单据(这个是外销的,呵呵,帮女朋友作做)
packNo  code          Color      S  M  L  XL  ONESIZE  TOTAL  G.W.  N.W.
1       IBBFLC602  AZURE/OZON    5    26  5            18  12.00  10.00 
2       IBBFLC602  AZURE/OZON             26           26  12.00  10.00 
3       IBBFLC602  AZURE/OZON    45    26              71  12.00  10.00 
4       IBBFLC602  AZURE/OZON    26                    26  12.00  10.00 
5       IBBFLC602  AZURE/OZON    10           26       36  12.00  10.00 
6       IBBFLC602  AZURE/OZON    26                    23  12.00  10.00 
7       IBBFLE01  BLACK                       26       26  12.00  10.00 
8       IBBFLE01  BLACK          26    3               29  12.00  10.00   
9       IBBFLC602  AZURE/OZON    10           26       88  12.00  10.00 
        IBBFLC602  AZURE/OZON    26  
        IBBFLE01   BLACK                      26     
10      IBBFLE01   BLACK         26    3               29  12.00  10.00   最终结果:                     **进出口有限公司  
                         ** COMPANY LIMITED
                                               INVOICE NO:GI00105001N12
                                               S/C NO: GI00105001  
                                               DATE:JUL.28, 2005  
                             Packing List
packNo  code          Color      S  M  L  XL  ONESIZE  TOTAL  G.W.  N.W.
1       IBBFLC602  AZURE/OZON    5    26  5            36  12.00  10.00 
2       IBBFLC602  AZURE/OZON             26           26  12.00  10.00 
3       IBBFLC602  AZURE/OZON    45    26              71  12.00  10.00 
4       IBBFLC602  AZURE/OZON    26                    26  12.00  10.00 
5       IBBFLC602  AZURE/OZON    10           26       36  12.00  10.00 
6       IBBFLC602  AZURE/OZON    26                    26  12.00  10.00 
7       IBBFLE01  BLACK                       26       26  12.00  10.00 
8       IBBFLE01  BLACK          26    3               29  12.00  10.00   
9       IBBFLC602  AZURE/OZON    10           26       88  12.00  10.00 
        IBBFLC602  AZURE/OZON    26  
        IBBFLE01   BLACK                      26     
10      IBBFLE01   BLACK         26    3               29  12.00  10.00   
问题:
估计看出来了,工厂出来的数据可能total计算得不准确,要我写个程序,
1÷导入工厂数据
2÷自动计算total
3÷能在程序界面对于导入的数据进行修改(修改数量,并自动计算total),并能撤销或保存修改
3÷格式化为标准的packinglist
4÷导出为excel表格
5÷要求程序能正常打印Packinglist我只做了第一二步,第三步就死翘翘了,我发现数据如果使用数据敏感控件
(我用cxgrid,所以我系统能继续保留使用cxgrid,要未保存数据的情况下进行直接格和格之间的计算很麻烦,我至今没找到如何取得正在写入一个cell的值)
当然有人说DataController.Values[x,y]就可以,呵呵,试试看吧,要真的做到Excel那样一写入移开Total字段就自动计算,并不保存到数据集,等到确定保存还是撤销的时候才决定是保存还是取消,我弄了一下午还没搞定(当然我cxgrid不是很了解,请指教了)
这个功能如果能实现了,其他估计不是问题,请各位大侠给点意见,通宵了,今晚。。

解决方案 »

  1.   

    请问哪里可以下载到TBarcode的控件?谢谢!!!qq13665393
      

  2.   

    关注先:楼上的TBarCode,FastReport中有一个做条码的控件,见意试一下!
      

  3.   

    你设置AdoQuery 的LockType 的属性为ltBatchOptimistic
    保存用:   ADOQuery1.UpdateBatch(arAll);
    取消用:   ADOQuery1.CancelBatch(arAll);然后在 AdoQuery 中选择 字段1,字段2,字段3 双击OnSetText事件
    procedure TTemplateForm1.cdsCZHTTotalSetText(Sender: TField; const Text: String);
    var
      lInput:string;
    begin
      lInput:=Trim(Text);
      if lInput='' then lInput:='0'
      Sender.AsString:=lInput;
      Sender.DataSet.FieldByName('totle').AsFloat :=
        Sender.DataSet.FieldByName('字段1').AsFloat +
        Sender.DataSet.FieldByName('字段2').AsFloat +
        Sender.DataSet.FieldByName('字段3').AsFloat ;
    end;
      

  4.   

    TO konhon(优华) 这个方法我也试过,但关键在:
      Sender.DataSet.FieldByName('totle').AsFloat :=
        Sender.DataSet.FieldByName('字段1').AsFloat +
        Sender.DataSet.FieldByName('字段2').AsFloat +
        Sender.DataSet.FieldByName('字段3').AsFloat ;
    total字段不会及时更新,虽然dataset已经是我们想要的值了,如何跟新??
      

  5.   

    我使用cxgrid,发现奇怪的问题,如果在同一行,不同的字段移动的话,total能自动计算,但只要一焦点离开这条记录,字段1,2,3的倒是没变,total却返回原来的值了。这什么问题?
      

  6.   

    total字段不会及时更新,虽然dataset已经是我们想要的值了,如何跟新??
    不明白你的意思?
      

  7.   

    可能是我的问题,呵呵,发现我的total怎么也更新不了,老会返回数据原来的值。
    字段的readonly是为false啊,怎么搞的,呵呵
      

  8.   

    我的意思是,我跟踪total字段
    在  Sender.DataSet.FieldByName('totle').AsFloat :=
        Sender.DataSet.FieldByName('字段1').AsFloat +
        Sender.DataSet.FieldByName('字段2').AsFloat +
        Sender.DataSet.FieldByName('字段3').AsFloat ;
    的时候total的值是我们想要的,计算出来的新值,但一离开当前的这条记录,total又返回原来的值了。真是郁闷。
    其他字段都很好的。
      

  9.   

    哦,呵呵,不好意思,大哥,我知道,我在sql取得数据的时候用了一个转换
    把原本string类型的Total强制转换为int类型,所以数据无法更新怎么ds就这么笨? 转化过来的数据就没法保存??呵呵,有办法吗? 还是需要该access表
      

  10.   

    在OnBeforePost事件下強制賦值試下啦.
    Sender.DataSet.FieldByName('totle').AsFloat :=
        Sender.DataSet.FieldByName('字段1').AsFloat +
        Sender.DataSet.FieldByName('字段2').AsFloat +
        Sender.DataSet.FieldByName('字段3').AsFloat ;
      

  11.   

    在OnBeforePost事件下強制賦值試下啦.
    Sender.DataSet.FieldByName('totle').AsString :=
        FloatToStr(Sender.DataSet.FieldByName('字段1').AsFloat +
        Sender.DataSet.FieldByName('字段2').AsFloat +
        Sender.DataSet.FieldByName('字段3').AsFloat) ;
      

  12.   

    我弄了一个上午,还不知道TcxVerticalGrid这东西如果增加一个Editor,并把新建的Editor的editProperties更改为CheckGroup,并在里面加入了20个Items,怎么取得某个Item的状态??
    我都去了devexpress的网站了,还是每找到,呵呵,估计太简单了,我刚用,发现这东西不错,就是最基本的取得值都弄不出来?!请帮忙。
      

  13.   

    最近对ExpressQuantumGrid 也就是cxGrid做了一些改动,大家看看是否实用。(含Source可下载) 
    增加了: 
    1、分组行是否隐藏
    2、分组字段是否隐藏
    3、分组行的(+/-)号是否显示
    4、分组行缩排的功能
    5、多个字段做为一个组来同级分组
    (比如将编号和名称合并做为同一级来分组)
    下载地址:
    http://www.dcmscn.cn/dispbbs.asp?boardid=8&id=308