以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]哪位大神帮忙看看代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=90131)

--  作者:陈嘉淳
--  发布时间:2016/9/6 10:20:00
--  [求助]哪位大神帮忙看看代码
代码是实现先增加行的日期值必须比上一行的日期值大的要求,测试出来的结果全错的,d2的输出是00:00:00,在命令窗口都是好的

If e.Col.Name="日期" Then
     Dim b As Integer
     Dim dr As Row
     Dim d1,d2 As Date  
     b=e.Row.Index
      If b>1 Then
     dr=Tables("现金日记账").Rows(b-2)
     d1=dr("日期")
      d2=e.Row("日期")
        If d2<d1 Then
        e.Cancel=True     
       End If
       End If
End If

--  作者:有点蓝
--  发布时间:2016/9/6 10:27:00
--  
上例子测试
--  作者:狐狸爸爸
--  发布时间:2016/9/6 10:52:00
--  

If e.Col.Name="日期" AndAlso e.text > "" AndAlso e.Row.Index > 0  Then
    Dim d1 As Date
    Dim d2 As Date
    If  Date.TryParse(e.text,d1) Then
        d2 = e.Table.Rows(e.Row.Index-1)("日期")
        If d2 > d1 Then
            e.Cancel=True
        End If
    End If
End If

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目274.table


--  作者:陈嘉淳
--  发布时间:2016/9/6 11:03:00
--  
谢谢你
--  作者:陈嘉淳
--  发布时间:2016/9/6 11:20:00
--  
大神能不能指点一下我的代码问题出在哪里啊,我实在看不出来问题点在哪里。请原谅菜鸟的无知。
--  作者:狐狸爸爸
--  发布时间:2016/9/6 11:43:00
--  

1、首先要判断是否已经输入了内容,如果没有输入,就没有必要比较了,所以才有 e.text > ""

2、要判断输入的内容是否是正确的日期,所以才有If  Date.TryParse(e.text,d1) Then

3、If b>1 Then 是不对的,应该是>0,因为第一行的编号是0。

4、 If d2<d1 也不对,应该是if d2<d1,原因自己想一下。

 

这些问题,对于新手很正常,你已经做得很不错了。

可以继续按顺序看帮助学些,或者看置顶的视频教程:

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187

 

 

 

[此贴子已经被作者于2016/9/6 11:49:36编辑过]

--  作者:陈嘉淳
--  发布时间:2016/9/6 13:09:00
--  
 If d2<d1 也不对,应该是if d2<d1 这一点真的不明白,就是一个大小写的区别。望指点迷津
--  作者:有点蓝
--  发布时间:2016/9/6 14:22:00
--  
笔误,看3楼

If d2 > d1 Then

--  作者:飞飞
--  发布时间:2016/9/6 14:27:00
--  
以下是引用狐狸爸爸在2016/9/6 11:43:00的发言:

1、首先要判断是否已经输入了内容,如果没有输入,就没有必要比较了,所以才有 e.text > ""

2、要判断输入的内容是否是正确的日期,所以才有If  Date.TryParse(e.text,d1) Then

3、If b>1 Then 是不对的,应该是>0,因为第一行的编号是0。

4、 If d2<d1 也不对,应该是if d2<d1,原因自己想一下。

 

这些问题,对于新手很正常,你已经做得很不错了。

可以继续按顺序看帮助学些,或者看置顶的视频教程:

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67187

 

 好耐心,赞!!

 

[此贴子已经被作者于2016/9/6 11:49:36编辑过]


--  作者:陈嘉淳
--  发布时间:2016/9/9 10:10:00
--  
我写的D2是当前行输入的日期,而D1是之前行输入的日期,如果D2<D1取消输入,从代码上来说是没错的。而且B>1是用来判断当前输入列之前是否有数据列存在,从理论上来说也没错。我觉得是我的思路出现了问题导致代码不能实现想要的结果,指出代码的错误处比告诉我这个功能怎么实现要有帮助的多。不然下次我写代码的时候还会按照原来的思路去写,这样类似的问题还是会出现的