以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教。。某列的值自动等于某列  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2284)

--  作者:卟离卟弃
--  发布时间:2009/4/4 14:41:00
--  请教。。某列的值自动等于某列
我想让第二列的值等于自动第一列(当第一列有内容时,第一列是表达式列)
第二列不是表达式列。
不怎么做?

请教下。
[此贴子已经被作者于2009-4-4 14:41:46编辑过]

--  作者:cpayinyuan
--  发布时间:2009/4/4 14:45:00
--  
以下是引用卟离卟弃在2009-4-4 14:41:00的发言:
我想让第二列的值等于自动第一列(当第一列有内容时)
第二列不是表达式列。
不怎么做?

请教下。

在表的DatacolChanged 事件中编写:
 if e.Datacol.Name="第一列"
    if e.DataRow.isnull("第一列")=False
      e.DataRow("第二列")=e.DataRow("第一列")
   end if
end if

补充:要把代码中的"第一列"改为第一列的列名,把"第二列"改为第二列的列名.

[此贴子已经被作者于2009-4-4 14:48:51编辑过]

--  作者:smileboy
--  发布时间:2009/4/4 15:07:00
--  
2楼代码缺少空值判断。
if e.Datacol.Name="第一列"
    if e.DataRow.isnull("第一列")=False then
      e.DataRow("第二列")=e.DataRow("第一列")
else
      e.DataRow("第二列")=nothing
   end if
end if

--  作者:卟离卟弃
--  发布时间:2009/4/4 15:27:00
--  
第一列是表达式的时候,,不行。。。
--  作者:cpayinyuan
--  发布时间:2009/4/4 15:33:00
--  
以下是引用卟离卟弃在2009-4-4 15:27:00的发言:
第一列是表达式的时候,,不行。。。

    当然不行,表达式列变化的时候,是不会触发DatacolChanged事件的.编写代码的时候,千万注意表达式列的问题,稍不小心,就会掉进表达式列的陷阱里.我还是觉得把列区分为表达式列不舒服,目前的表达式列这儿不能用那儿不能用有点别扭.
    我刚开始看的时候,好像没有看到说第一列是表达式列啊?
    难道是我眼花了!

[此贴子已经被作者于2009-4-4 15:35:10编辑过]

--  作者:卟离卟弃
--  发布时间:2009/4/4 15:35:00
--  

有劳了,
是我后来加上去的,
谢谢


--  作者:卟离卟弃
--  发布时间:2009/4/4 15:40:00
--  
软件中不是有 这么一列吗?[_Identify]
我想用这一列编个编码
因为这一列是永远不会重复的。。
比如说
第三列的内容=第一列+第二列+[_Identify]
这样形成一个唯一的编码///。。。
怎么做?
第一二三列都不是表达式列。。
[此贴子已经被作者于2009-4-4 15:41:44编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/4/4 21:20:00
--  
以下是引用smileboy在2009-4-4 15:07:00的发言:
2楼代码缺少空值判断。
if e.Datacol.Name="第一列"
    if e.DataRow.isnull("第一列")=False then
      e.DataRow("第二列")=e.DataRow("第一列")
else
      e.DataRow("第二列")=nothing
   end if
end if


应该这样:
if e.Datacol.Name="第一列"
     e.DataRow("第二列")=e.DataRow("第一列")
end if


--  作者:狐狸爸爸
--  发布时间:2009/4/4 21:22:00
--  
以下是引用卟离卟弃在2009-4-4 15:40:00的发言:
软件中不是有 这么一列吗?[_Identify]
我想用这一列编个编码
因为这一列是永远不会重复的。。
比如说
第三列的内容=第一列+第二列+[_Identify]
这样形成一个唯一的编码///。。。
怎么做?
第一二三列都不是表达式列。。
[此贴子已经被作者于2009-4-4 15:41:44编辑过]

Select Case e.DataCol.Name
    Case "第一列","第二列"
       e.DataRow("第三列") = e.DataRow("第一列") & e.DataRow("第二列") & e.DataRow("_Identify")
End Select