Foxtable(狐表)用户栏目专家坐堂 → 编号


  共有35736人关注过本帖树形打印复制链接

主题:编号

帅哥哟,离线,有人找我吗?
blackzhu
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
编号  发帖心情 Post By:2008/9/11 22:03:00 [显示全部帖子]

如果发生变化的是日期列,而且已经输入日期
If e.DataCol.Name = "日期" And e.Datarow.IsNull("日期")  = False Then
    Dim dt As Date = e.DataRow("日期") '获得输入的日期
    '计算编号
    e.Datarow("编号") =  Format(dt,"yyMMdd") & Format(e.DataTable.Compute("Count(日期)", "[日期] = #" & dt & "# And [_identify] < " & e.DataRow("_Identify")) + 1,"000")
End If


我想问一下,如果变化的不是日期列,而是其他的什么任意列,但我要达到这样的效果,应该怎么写?我跟着你的代码修改过,但做不出了。

还有,如果我有一个日期列,在其他列输入数据时,日期列可以自动显示,易表我用IF函数加上TODAY就可以搞定,但狐表我用IIF做不出来,还有返回日期的函数是什么(TODAY()还是DATE())?我看了帮助有TODAY,DATE,DATEDAY,我一一试过都不行!

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/12 12:30:00 [显示全部帖子]

我可能太笨了,代码实在有一点不懂。如我在表达式中:字段IO为空值的时候,日期列为空值,否则返回当天的日期。这一个表达式怎么写,计算代码怎么写?


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/12 13:10:00 [显示全部帖子]

以下是引用kylin在2008-9-12 12:35:00的发言:
iif (e.Datarow.IsNull("日期")  = True and e.Datarow.IsNull("IO")  = True ,DBNull.value,data.taday() )

   我测试了一下,不行!


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  4楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/12 17:47:00 [显示全部帖子]

LXL老师你太好了,这个代码我一定要学会它!

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/12 17:48:00 [显示全部帖子]

以下是引用lxl在2008-9-12 12:57:00的发言:

             If      e.DataCol.Name                =   "日期" And        e.Datarow.IsNull("日期")  = False Then
意思是 如果   数据改变事件.所在的列.的名称  是  "日期"  并且 数据改变事件.所在的行.日期列不为空值   那么 ……

因此其他任意列的代码就是:
                 If e.DataCol.Name  = "改变列的列名"  Then    




以下是引用blackzhu在2008-9-12 12:30:00的发言:

我可能太笨了,代码实在有一点不懂。如我在表达式中:字段IO为空值的时候,日期列为空值,否则返回当天的日期。这一个表达式怎么写,计算代码怎么写?

这个不能写成表达式列,只能用数据列通过计算代码计算。(用表达式列会把所有记录的日期变成today)
DataColChanged 事件代码
If e.DataCol.Name  = "IO" Then       '如果数据改变列是 IO字段
    If e.Datarow.IsNull("IO")  Then    '如果IO改变的结果是空值,即删除IO字段的值
        e.Datarow("日期") = DBNull.Value   '那么删除日期列的值
   Else  e.Datarow("日期") = Date.Today  '否则,日期列为今天
End If                 



其实翻来覆去都是这几个代码,只要理解了就简单了

就是不理解才造成的。


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/13 13:52:00 [显示全部帖子]


If e.DataCol.Name  = "IO" Then       

 e.datarow("ID")= Format(e.DataTable.Compute("Count(IO)", "[IO] = #" & e.datarow("IO") & "# And [_identify] < " & e.DataRow("_Identify")) + 1,"000")

  END IF

  我的意思是随着IO的变化而变化,如:IO#BEN3224  有三个记录,ID为1,2,3, IO#BEN3225  有四个记录,ID为1,2,3,4.我上面的代码是根据上面的日期编号改的,但显示不出,是函数不对还是代码完全错了? 



 

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/13 15:26:00 [显示全部帖子]

以下是引用lxl在2008-9-13 14:09:00的发言:
"[IO] = #" & e.datarow("IO") & "# And [_identify] < " &
两个#号都是多余的


对于date 类型的数据来说 才需要加#
比如 #2008-09-13#
[此贴子已经被作者于2008-9-13 14:11:33编辑过]

LXL老师:

去掉了"#",并且将 AND[_IDENTIFY]<"也去掉了,也不行,保留"and [identify]<"也不行
应该怎样?底下的代码有问题吗?

l.Name  = "IO"   '如果数据改变列是 IO字段
e.datarow("ID")= Format(e.DataTable.Compute("Count(IO)" & e.datarow("IO") & e.DataRow("_Identify"))+1,000")
 
End If


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/13 15:45:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跟单系统-4.table



    加了个示例,在订单明细表中。

 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/13 16:51:00 [显示全部帖子]

以下是引用lxl在2008-9-13 16:02:00的发言:

你10楼的公式
把#换成'

 

这样帮助你理解
Compute第2个参数 是一个字符串,表示计算的条件

"[IO] = '" & e.datarow("IO") & "' And [_identify] < " & e.DataRow("_Identify")
就是几节字符串相连,连起来刚好是一个条件,
把e.datarow("IO") 换成BEN3203 把e.DataRow("_Identify")换成数字

"[IO] = 'BEN3203' And [_identify] < 3"

[此贴子已经被作者于2008-9-13 16:06:19编辑过]

   LXL老师:

   你真伟大!终于搞定,出现我所要求的东西了。谢谢。以后有不懂还请多多指教。,在你的帮助下,代码一些写法有一点懂了,但函数还是有一些不懂,慢慢地学习。再次谢谢!


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57640 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2008/9/15 15:43:00 [显示全部帖子]

以下是引用lxl在2008-9-13 16:02:00的发言:

你10楼的公式
把#换成'

 

这样帮助你理解
Compute第2个参数 是一个字符串,表示计算的条件

"[IO] = '" & e.datarow("IO") & "' And [_identify] < " & e.DataRow("_Identify")
就是几节字符串相连,连起来刚好是一个条件,
把e.datarow("IO") 换成BEN3203 把e.DataRow("_Identify")换成数字

"[IO] = 'BEN3203' And [_identify] < 3"

[此贴子已经被作者于2008-9-13 16:06:19编辑过]

  
如果我想加多一个条件,将“供应商编号”加进去应该怎么写?

 我想在IO和供应商编号相同的时候,"ID"号码也相同。


 回到顶部
总数 17 1 2 下一页