以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 这个事件代码如何设置?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2268)

--  作者:wcs
--  发布时间:2009/4/2 15:17:00
--  [求助] 这个事件代码如何设置?
if e.datacol.name = "年" orelse e.datacol.name = "月" orelse e.datacol.name = "日" then
   e.datarow("日期")=e.datarow("年")&"-"&e.datarow("月")&"-"&e.datarow("日")
end if

在datachanged 事件中,我设置了上述代码。

年、月、日这三列的数据总是同时更新的,所以我设置为 orelse 

但是,执行总是出错:“2009--”类型错,不能 记入日期列中。


后来,我设置为了 and

但是,执行以后,日期列为空值,不能触发事件!

请教各们如果计算“日期”列啊?

--  作者:wcs
--  发布时间:2009/4/2 15:21:00
--  
年、月、日 是从其他数据库中查询追加进来的。
--  作者:狐狸爸爸
--  发布时间:2009/4/2 15:25:00
--  

if e.datacol.name = "年" orelse e.datacol.name = "月" orelse e.datacol.name = "日" then
   dim txt As String  = e.datarow("年")&"-"&e.datarow("月")&"-"&e.datarow("日")
   Dim Dt As Date
   If Date.TryParse(txt,dt) Then
        e.datarow("日期")=dt
   Else

        e.datarow("日期")= nothing

   end if
end if


--  作者:czy
--  发布时间:2009/4/2 15:31:00
--  
这样好象也可以。

Dim dr As DataRow = e.DataRow
if e.datacol.name = "年" orelse e.datacol.name = "月" orelse e.datacol.name = "日" then
    if dr.IsNull("年") = false And dr.IsNull("月") = false And dr.IsNull("日") = false Then
        dr("日期")= CDate(dr("年") & "-" & dr("月") &"-"& dr("日"))
    End If
end if

--  作者:wcs
--  发布时间:2009/4/2 15:32:00
--  
设置一下转换?

试试!
--  作者:czy
--  发布时间:2009/4/2 15:34:00
--  
呵,我的不好。还得加个分支才行。

Dim dr As DataRow = e.DataRow
if e.datacol.name = "年" orelse e.datacol.name = "月" orelse e.datacol.name = "日" then
    if dr.IsNull("年") = false And dr.IsNull("月") = false And dr.IsNull("日") = false Then
        dr("日期")= CDate(dr("年") & "-" & dr("月") &"-"& dr("日"))
    Else
        dr("日期") = Nothing
    End If
end if

--  作者:wcs
--  发布时间:2009/4/2 15:48:00
--  
这个问题解决了,但是在datachanged事件中,还有这样一段代码:

if  e.datacol.name = "账套编号" orelse  e.datacol.name = "年"  orelse  e.datacol.name = "月" orelse  e.datacol.name = "日" orelse e.datacol.name = "凭证类型" orelse  e.datacol.name = "凭证编号" orelse  e.datacol.name = "附件张数" then
    dim bm as string = e.datarow("凭证编号").tostring()
    e.datarow("关联") = e.datarow("账套编号")&" "&e.datarow("年")&"年"&e.datarow("月")&"月"&e.datarow("日")&"日"&e.datarow("凭证类型")&bm.PadLeft(4," ")&"号 附件"&e.datarow("附件张数")
end if

这段代码的意思是,当"账套编号"、"年"等等列的内容发生变化时,就更新"关联"列的内容,其中 "凭证编号"转换了一下类型。

执行以后就出现这样的错误提示:


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看


我是一段一段地测试代码的,可以确定就是这一段出错了。
[此贴子已经被作者于2009-4-2 15:49:13编辑过]

--  作者:smileboy
--  发布时间:2009/4/2 15:55:00
--  
&符号前后要有空格
--  作者:wcs
--  发布时间:2009/4/2 15:58:00
--  

已试过了,还是出相同的错误!

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

--  作者:smileboy
--  发布时间:2009/4/2 16:05:00
--  
传文件看看