关于修改字段的控制问题!请高手指点!!(高分等待!)

时间:2022-05-17 14:35:05
小弟现在作事遇到一个问题:
就是在下表中对数据进行控制
编码      名次                      金额               回扣       等等        
6000 营业费用
6100 不可控费用
6101 其中:开办费摊销
6102       租赁费
6103       折旧费
6104       装修费
6200 行政管理部
6201 其中:环保费
6202      空调费
6203          物业管理费
6204      修理费
6205          财产保险费
要作到编码中的没有子项目(如6000)的可以修改录入,有子项目的如(6100,它有6101,6102等子项目)不能修改录入,只能通过其子项目(6101等子项目)的值来填充到6100条记录中,如何进行控制,请高手指点一二!

12 个解决方案

#1


某个项目有没有子项目应该好判断的吧?
接下来也就好办了,在修改的时候,在itemchanged中判断,决定是否可以修改

#2


string ls_budgetno,ls_budgetno_next
long li_return
if row > 0 then
ls_budgetno = this.object.budgetno[row]
if isnull(ls_budgetno) or len(ls_budgetno) = 0 then
else
if right(ls_budgetno,2) = '00' then
li_return = in_fee.nf_get_budgetnochild(left(ls_budgetno,2))
if li_return > 0  then
this.SetColumn('编码')
this.scrolltorow(row + 1)
this.SelectRow(0, FALSE)//
this.SelectRow(row + 1, TRUE)
this.SetRow(row + 1)
end if
end if
end if
end if
但是itemchange事件不能完全控制住,我还是可以用鼠标强点修改??
还有想问下如何将数据窗口的值 通过其子项目(6101等子项目)的金额等值合计后填充到6100条记录中,用什么方法来做到。
请高手指点!!

#3


你可以在数据库中添加一个字段来标记项目是否有子项目,如flag
在datawindow中取出这个数据
在itemchanged事件中
if dwo.Name = '项目的字段名'
if dw.object.flag=1 then         //无子项目
else
    return
end if
end if

#4


第二个问题还是同样的办法
你那个标记字段的值做下定义
如 1 表示6000,2 表示6100的
在数据窗口中写一个计算列来计算
你把这个方法自己再优化下,就可以处理了

#5


恩,同意增加一个字段来区分是否包含子项目.

#6


如果增加一个字段,用来标志该项目是否为叶子,只能叶子才能够编辑。
如果非叶子则对该行的编辑属性进行“保护”。

效果可能会比Itemchanging中做这项工作要好。。。

#7


那我具体怎么控制住
 dw.object.flag=1 then         //无子项目
else
    return
end if
就能控制住不能修改录入,感觉好怪怪的呀。

#8


jacksu19(梦幻影像)你好
对该行的编辑属性进行“保护”。
具体怎么做呀??我只听说过列protect只能对列进行控制,那不一棒子打死了??
行有什么可以进行保护的呀??

#9


我现在表中加了两个字段,一个来控制是否有父项目,一个来控制是否有子项目。然后取数据窗口原始值和现在的值差额。然后看他是否有父项,有父项的,父项也要修改。如此可以控制好,好像问题都可以解决。但是现在的问题是如何控制有子项目的不能输入,没有子项目的可以输入的。请各位大侠高手们帮忙考虑下!

#10


具体怎么做呀??我只听说过列protect只能对列进行控制,那不一棒子打死了??
行有什么可以进行保护的呀??
------------------------------------------------------------
你可以在protect中写代码
而且我已经说得很清楚了阿

#11


其实我一直很反对查询窗口和数据修改窗口做到一起。为什么呢?查询需要做得很花哨,这个格式那个格式的,数据修改就应该很严谨(建议free型),格式一花哨就必须用到大量的技巧,这也限制了数据修改能力,因为很多字段都是计算出来的,如何判断非计算列就很难。干脆分开来实现,从软件功能上来说结构清晰了,从代码上来看易懂了,从用户操作上用户容易使用了,这样多好。
所以象你这种情况,干脆在边上放另一个DW2,当这边选中6000后,DW2就显示出数据修改窗口,然后做相应的增删改查工作。这样多好,软件实现起来也简单,用户操作也好。

#12


谢谢大家的鼎立支持,基本控制已经完成。
楼上所说的也是真的好,不过我们领导他们不认为这样,很多时候都是看着那个好看,就要用哪个,跟他们说这些还不如闷头找办法吧。实在不行的话才找出路。象这个,我们公司的系统原版就是grid格式。而且我写的东西也是用在财务方面的,他们就喜欢word,excel那套。相比金碟那些他们可以做的,你就得做到。唉,无赖之举呀!这些问题在二层还好解决,到三层用easerver做就要考虑n多问题,既要效率就要耐看方便。所以楼上基本行不同,单就多开一个数据窗口,就要占资源,无别的,慢。而且项目完成还要培训,培训不好的话还得改。所以能照他们的意思做最好。
换句话,只有他们没想到的,没有你做不到的。

#1


某个项目有没有子项目应该好判断的吧?
接下来也就好办了,在修改的时候,在itemchanged中判断,决定是否可以修改

#2


string ls_budgetno,ls_budgetno_next
long li_return
if row > 0 then
ls_budgetno = this.object.budgetno[row]
if isnull(ls_budgetno) or len(ls_budgetno) = 0 then
else
if right(ls_budgetno,2) = '00' then
li_return = in_fee.nf_get_budgetnochild(left(ls_budgetno,2))
if li_return > 0  then
this.SetColumn('编码')
this.scrolltorow(row + 1)
this.SelectRow(0, FALSE)//
this.SelectRow(row + 1, TRUE)
this.SetRow(row + 1)
end if
end if
end if
end if
但是itemchange事件不能完全控制住,我还是可以用鼠标强点修改??
还有想问下如何将数据窗口的值 通过其子项目(6101等子项目)的金额等值合计后填充到6100条记录中,用什么方法来做到。
请高手指点!!

#3


你可以在数据库中添加一个字段来标记项目是否有子项目,如flag
在datawindow中取出这个数据
在itemchanged事件中
if dwo.Name = '项目的字段名'
if dw.object.flag=1 then         //无子项目
else
    return
end if
end if

#4


第二个问题还是同样的办法
你那个标记字段的值做下定义
如 1 表示6000,2 表示6100的
在数据窗口中写一个计算列来计算
你把这个方法自己再优化下,就可以处理了

#5


恩,同意增加一个字段来区分是否包含子项目.

#6


如果增加一个字段,用来标志该项目是否为叶子,只能叶子才能够编辑。
如果非叶子则对该行的编辑属性进行“保护”。

效果可能会比Itemchanging中做这项工作要好。。。

#7


那我具体怎么控制住
 dw.object.flag=1 then         //无子项目
else
    return
end if
就能控制住不能修改录入,感觉好怪怪的呀。

#8


jacksu19(梦幻影像)你好
对该行的编辑属性进行“保护”。
具体怎么做呀??我只听说过列protect只能对列进行控制,那不一棒子打死了??
行有什么可以进行保护的呀??

#9


我现在表中加了两个字段,一个来控制是否有父项目,一个来控制是否有子项目。然后取数据窗口原始值和现在的值差额。然后看他是否有父项,有父项的,父项也要修改。如此可以控制好,好像问题都可以解决。但是现在的问题是如何控制有子项目的不能输入,没有子项目的可以输入的。请各位大侠高手们帮忙考虑下!

#10


具体怎么做呀??我只听说过列protect只能对列进行控制,那不一棒子打死了??
行有什么可以进行保护的呀??
------------------------------------------------------------
你可以在protect中写代码
而且我已经说得很清楚了阿

#11


其实我一直很反对查询窗口和数据修改窗口做到一起。为什么呢?查询需要做得很花哨,这个格式那个格式的,数据修改就应该很严谨(建议free型),格式一花哨就必须用到大量的技巧,这也限制了数据修改能力,因为很多字段都是计算出来的,如何判断非计算列就很难。干脆分开来实现,从软件功能上来说结构清晰了,从代码上来看易懂了,从用户操作上用户容易使用了,这样多好。
所以象你这种情况,干脆在边上放另一个DW2,当这边选中6000后,DW2就显示出数据修改窗口,然后做相应的增删改查工作。这样多好,软件实现起来也简单,用户操作也好。

#12


谢谢大家的鼎立支持,基本控制已经完成。
楼上所说的也是真的好,不过我们领导他们不认为这样,很多时候都是看着那个好看,就要用哪个,跟他们说这些还不如闷头找办法吧。实在不行的话才找出路。象这个,我们公司的系统原版就是grid格式。而且我写的东西也是用在财务方面的,他们就喜欢word,excel那套。相比金碟那些他们可以做的,你就得做到。唉,无赖之举呀!这些问题在二层还好解决,到三层用easerver做就要考虑n多问题,既要效率就要耐看方便。所以楼上基本行不同,单就多开一个数据窗口,就要占资源,无别的,慢。而且项目完成还要培训,培训不好的话还得改。所以能照他们的意思做最好。
换句话,只有他们没想到的,没有你做不到的。