找回密码
 立即注册

QQ登录

只需一步,快速开始

hezhilin

初级会员

34

主题

100

帖子

450

积分

初级会员

积分
450

活字格认证

hezhilin
初级会员   /  发表于:2013-3-19 00:00  /   查看:13133  /  回复:15
我要实现一个商品销售表的录入,该表是绑定数据库的,
从数据库提取出已有数据,也可新增行,
要实现discount 列=lowqty*highqty 当然这个公式用户有可能随时会变,可能是加减乘除,括号等内容组成的公式,如何实现??
示例代码如附件所示

销售公式.rar (283.66 KB, 下载次数: 316)

15 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2013-3-19 09:12:00
沙发
回复 1楼hezhilin的帖子

你好,
根据附件,无法获取你的数据库结构,关于自定义公式可以参考帮助文档:Creating a Custom Function 章节。
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2013-3-19 16:58:00
板凳
结合数据库的自定义公式我做过,感觉你不会很快做起来。
我有个偷懒的建议啊,你把你的 discount =lowqty*highqty  转换成 spread天然支持的公式,比如
A1=B1*C1
A2=B2*C2
。。。
要做到这个很简单,这个公式再怎么动态变,根据列名和列label的对应关系直接替换,如果存在不可见列,就设置为隐藏列,如果隐藏列参与计算问题就在前台用CSS控制列的不可见。
绑定完成后,你逐行设置公式就可以了,自定义公式的话,每行参数也是不同的。
回复 使用道具 举报
hezhilin
初级会员   /  发表于:2013-3-19 21:30:00
地板
回复 3楼taxsoft的帖子

谢谢,基于Infragistics控件使用SQL我也实现公式自定义了,但感觉那个控件不如spread控件在WEB下表现良好,所以转到这个控件来,而且公式是使用的客户端计算,应该可减少与服务器交互!
taxsoft 说的办法我考虑了一下,肯定可行,但就是怕用户拖动了列的前后顺序, 这样我生成的公式可能就不对了

如discount =lowqty*highqty     lowqty是A列,highqty  是B列,discount 是F列,我在F列写公式 = A1+B1  但如果用户把highqty  由第2列拖到了第3列,变成C1了,这样生成的公式A1+B1就不对了,难道只有禁止拖到列顺序这一个办法 ?
回复 使用道具 举报
taxsoft
中级会员   /  发表于:2013-3-20 08:51:00
5#
回复 3楼taxsoft的帖子

谢谢,基于Infragistics控件使用SQL我也实现公式自定义了,但感觉......
hezhilin 发表于 2013-3-19 21:30:00


用自定义公式自然好啊

其实呢,要是画面不用编辑呢,只要计算一次就可以了,此后取消公式保留文本也可以啊
回复 使用道具 举报
hezhilin
初级会员   /  发表于:2013-3-20 15:57:00
6#
回复 2楼iceman的帖子

你好,我已实现了公式自定义,但现在发现如下问题:
1.
我测试项目中
   grd.ClientAutoCalculation = True
    grd.Cells(i, 4).Formula = "C1*D1"
就可以计算,在我实际项目里,执行了同样的代码,就是不自动计算!我想问一下,自动计算还有什么地方在控制!

2.  F1设置了公式 C1*D1 在C1和D1值变化时,F1的值会变,但在F1上双击,可以看到公式 =C1*D1,如果不小心把公式删了,或录入了其他数字,公式就丢了,不再起使用
    如果这一列锁定倒是可以,但有些列计算完,我可能还需要可以编辑,所以锁定的办法不行,能否隐藏了公式,或都不让编辑公式
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-3-20 18:25:00
7#
回复 6楼hezhilin的帖子

hezhilin 你好,
问题正在处理中,明天回复。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-3-21 12:26:00
8#
回复 6楼hezhilin的帖子

hezhilin 你好,
1.公式在我这边也起作用。我并没有重现,该问题。请问是否绑定了数据源?
2.输入其他数值是指,删除公式,输入其他文本吗?这个恐怕无法做到。除非在编辑该单元格后重新设置公式。
但是,如果需要公式一直保留,为什么要编辑呢?
回复 使用道具 举报
hezhilin
初级会员   /  发表于:2013-3-25 13:25:00
9#
回复 8楼iceman的帖子

你好!
第二个问题我明白了,我想办法处理!
第一个问题是我在给你发的小项目里做了公式,可以计算,但到我真正的大项目里,代码一样,却不计算,所以想问一下你,控制是否计算还有哪些地方的参数,比如是不是WEB.config里改什么东西!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-3-25 19:08:00
10#
请确认一下属性设置:
  1.     FpSpread1.ClientAutoCalculation = true;
  2.     FpSpread1.Sheets[0].AutoCalculation = true;
  3.     FpSpread1.EnableClientScript = true;
复制代码


并且检查参与公式计算的单元格/列/行所设置的 CellType 是否一致
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部