Foxtable(狐表)用户栏目专家坐堂 → [求助]哪位大神帮忙看看代码


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

主题:[求助]哪位大神帮忙看看代码

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


加好友 发短信
等级:婴狐 帖子:19 积分:208 威望:0 精华:0 注册:2016/8/29 10:35:00
[求助]哪位大神帮忙看看代码  发帖心情 Post By: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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110585 积分:562821 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/6 10:27:00 [只看该作者]

上例子测试

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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


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


加好友 发短信
等级:婴狐 帖子:19 积分:208 威望:0 精华:0 注册:2016/8/29 10:35:00
  发帖心情 Post By:2016/9/6 11:03:00 [只看该作者]

谢谢你

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


加好友 发短信
等级:婴狐 帖子:19 积分:208 威望:0 精华:0 注册:2016/8/29 10:35:00
  发帖心情 Post By:2016/9/6 11:20:00 [只看该作者]

大神能不能指点一下我的代码问题出在哪里啊,我实在看不出来问题点在哪里。请原谅菜鸟的无知。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:婴狐 帖子:19 积分:208 威望:0 精华:0 注册:2016/8/29 10:35:00
  发帖心情 Post By:2016/9/6 13:09:00 [只看该作者]

 If d2<d1 也不对,应该是if d2<d1 这一点真的不明白,就是一个大小写的区别。望指点迷津

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110585 积分:562821 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/6 14:22:00 [只看该作者]

笔误,看3楼

If d2 > d1 Then

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


加好友 发短信
等级:三尾狐 帖子:621 积分:5130 威望:0 精华:1 注册:2014/8/7 6:56:00
  发帖心情 Post By: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编辑过]


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


加好友 发短信
等级:婴狐 帖子:19 积分:208 威望:0 精华:0 注册:2016/8/29 10:35:00
  发帖心情 Post By:2016/9/9 10:10:00 [只看该作者]

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

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