以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]“投保日期”上366天,如何写代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1859)

--  作者:yndlyh
--  发布时间:2009/2/18 14:47:00
--  [求助]“投保日期”上366天,如何写代码
日期计算问题.有一列“投保日期”是由用户输入的,现在要加上366天,得到另一日期列“保险到期”。请予指教。
[此贴子已经被smileboy于2009-2-20 11:51:32编辑过]

--  作者:don
--  发布时间:2009/2/18 15:06:00
--  
建议先认真看N次帮助文件,特别是:『开发篇』---『事件编程』---『事件实例』----『使用事件进行计算』部分

将该表的DataColChanged事件设置为:
If e.DataCol.Name = "投保日期" Then
      Dim dr As DataRow = e.DataRow
      IF dr.IsNull("投保日期") Then
           dr("保险到期")  = Nothing
      Else
           dr("保险到期")  =  dr("投保日期").AddDays(366) 
      End If
End If
[此贴子已经被作者于2009-2-18 15:39:38编辑过]

--  作者:yndlyh
--  发布时间:2009/2/18 16:17:00
--  [求助]谢谢
一切正常 ,谢谢无私帮助,今后一定努力学习。
--  作者:yndlyh
--  发布时间:2009/2/19 20:10:00
--  再次向老师求助
十再不好意思,再次向老师求助:我的数据库有一列日期型数据,字段名为:“二维到期”,现在我要知道这个字段的值(日期)离系统日期有几天(在易表里可以用“Number([行车证副到期])-Number(Today())”的刷新公式获得)。我想增设列“二维日龄”来解决这个问题。也认真看了FoxTable官方论坛关于“日龄”的例子,但始终不得要领。一句话,请老师指教:如何从系统日期和“二维到期”中获得“二维日龄”的数据。
--  作者:狐狸爸爸
--  发布时间:2009/2/19 21:05:00
--  

Dim dr As DataRow = e.DataRow
If e.DataCol.Name = "投保日期" Then
    IF dr.IsNull("投保日期") Then
        dr("保险到期")  = Nothing
    Else
       dr("保险到期")  =  dr("投保日期").AddDays(366) 
    End If
ElseIf e.DataCol.Name = "二维到期" Then
    IF dr.IsNull("二维到期") Then
      dr("二维日龄")  = Nothing
    Else
       Dim Val As Date = dr("二维到期")
       dr("二维日龄") = (Date.Today -Val).Days
    End If
End If

[此贴子已经被作者于2009-2-19 21:10:55编辑过]

--  作者:程兴刚
--  发布时间:2009/2/19 21:28:00
--  
楼主为什么不dr("投保日期").Addyears(1) ?

那一年要不是366天呢?

      楼主的要求应该改为一年吧?
[此贴子已经被作者于2009-2-19 21:29:05编辑过]

--  作者:yndlyh
--  发布时间:2009/2/19 22:06:00
--  [求助]收到。十分感谢
收到。十分感谢。但是——
1) Dim dr As DataRow = e.DataRow
   If e.DataCol.Name = "投保日期" Then
    IF dr.IsNull("投保日期") Then
        dr("保险到期")  = Nothing
    Else
       dr("保险到期")  =  dr("投保日期").AddDays(366)
    End If
    中的第二语句“If e.DataCol.Name = "投保日期" Then”编译错误。不知是何原因?
2) ElseIf e.DataCol.Name = "二维到期" Then
    IF dr.IsNull("二维到期") Then
      dr("二维日龄")  = Nothing
    Else
       Dim Val As Date = dr("二维到期")
       dr("二维日龄") = (Date.Today -Val).Days
    End If
End If
   中的第一语句“ElseIf e.DataCol.Name = "二维到期" Then”编译错误。不知是何原因?
3) 第一次给的——
    If e.DataCol.Name = "投保日期" Then
      Dim dr As DataRow = e.DataRow
      IF dr.IsNull("投保日期") Then
           dr("保险到期")  = Nothing
      Else
           dr("保险到期")  =  dr("投保日期").AddDays(366)
      End If
End If
    一开始并没有错,但是,今天我在加载“\'如果刚刚输入的不是"班线类别"或"经营线路"列
If e.DataCol.Name <> "班线类别" AndAlso e.DataCol.Name <> "经营线路" Then
    Return \'则返回
End If
\'如果"班线类别"或"经营线路"列的内容为空
If e.DataRow.IsNull("班线类别") OrElse e.DataRow.IsNull("经营线路") Then
    \'则清除"途经地"和"经营里程""高速公路里程"三列的内容
    e.DataRow("途经地") = Nothing
    e.DataRow("经营里程") = Nothing
    e.DataRow("高速公路里程") = Nothing
    Return \'然后返回
End If
Dim dr As DataRow
\'在"经营线路表"查找所输入"班线类别""经营线路"的行
dr = DataTables("经营线路表").Find("[班线类别] = \'" & e.DataRow("班线类别") & "\' And [经营线路] = \'" & e.DataRow("经营线路") & "\'")
If dr IsNot Nothing Then \'如果找到
    \'将找到行的"途经地""经营里程""高速公路里程"内容填入到正在输入的行中.
    e.DataRow("途经地") = dr("途经地") \'
    e.DataRow("经营里程") = dr("经营里程")
    e.DataRow("高速公路里程") = dr("高速公路里程")
End If”语句时(全部语句无错误),第二语句“Dim dr As DataRow = e.DataRow”编译错误。无法理解。

--  作者:狐狸爸爸
--  发布时间:2009/2/19 22:13:00
--  
IF和End IF,这两个要成双成对的
不同的If 和End IF之间,可以定义相同名称的变量。
但是If 和End If之外和之内,不能定义相同名称的变量。

最好传上文件,告诉在哪个表的哪个事件设置了什么代码通不过,否则我们也只能稀里糊涂地猜想。

[此贴子已经被作者于2009-2-19 22:15:45编辑过]

--  作者:yndlyh
--  发布时间:2009/2/19 23:00:00
--  [求助]谢谢!现在我把文件传上
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人员及车辆管理系统.rar


--  作者:狐狸爸爸
--  发布时间:2009/2/19 23:11:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:人员及车辆管理系统.rar