Foxtable(狐表)用户栏目专家坐堂 → [求助]测试周历,提示索引超出范围


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

主题:[求助]测试周历,提示索引超出范围

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8434 威望:0 精华:0 注册:2012/10/3 13:25:00
[求助]测试周历,提示索引超出范围  发帖心情 Post By:2017/9/16 8:38:00 [只看该作者]

测试李小胖分享的周历时,当运行到“_my日历.日期 = MyDate1”,遇到下图提示,如何处理?全部代码是:

'首先计算出今天是本月第几周(这个第几周是表的第一周,并非真正意义上的第几周)
Dim 月首 As Date = Date.Today
月首 = Format(月首,"yyyy-MM-" & "01")
Dim 月首星期 As Integer  = 月首.DayOfWeek
Dim 表首日期 As Date  = 月首.AddDays(-月首星期 + 1)
output.Show(表首日期)
Dim jt As Date = Date.Today 
Dim Ts As TimeSpan =  jt  - 表首日期 
Dim 第几周 As Integer = Ts.days
第几周 = Math.Floor(第几周 /7)
'
Dim 周历选项 As WinForm.RadioButton = e.Form.Controls("RBtWeek")
If 周历选项.Checked = False  Then 周历选项.Checked = True
周历开个 =  1
周 =  第几周
Dim MyDate1 As Date = _my日历.日期
Dim Date2 As Date =  Date.Today
Dim 月差 As Integer  =  Date2.Month - MyDate1.Month 
MyDate1 = MyDate1.AddMonths(月差) '加上月差,
e.Form.Controls("L_当前年月").text = MyDate1.Year & "年" & MyDate1.Month & "月"
_my日历.日期 = MyDate1
_my日历.刷新


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



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


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

别人的例子我测试没有问题。上传你的实例说明

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8434 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/9/16 10:19:00 [只看该作者]

是开发板的外部数据实例,请蓝版主指教:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:事务管理-外数.rar

(打开日历窗口,上边有个简易查询按钮,点击进入,有个切换周历的单选框)

[此贴子已经被作者于2017/9/16 10:34:11编辑过]

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


加好友 发短信
等级:超级版主 帖子:106242 积分:540333 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/9/16 17:34:00 [只看该作者]

没有看透他的用法,全局代码-》事务日程这个地方改改:

Public Sub 事务标签布局()
……
Dim n_行数 As Integer
Dim Left, Top, Width, Height As Integer
'
'循环字典
'
Dim a As 事务标签
For Each str In dc.Keys
    d = (CDate(str) - _表首).Days   '和表首的日期差
    r = (d \ 8) * 2 + 3             '取整数(行),跨行
    c = (d Mod 7) + 1               '取列位置 
    If dc(str).Count > 4 Then
        n_行数 = 4
    Else
        n_行数 = dc(str).Count
    End If
……
[此贴子已经被作者于2017/9/16 17:34:29编辑过]

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


加好友 发短信
等级:四尾狐 帖子:957 积分:8434 威望:0 精华:0 注册:2012/10/3 13:25:00
  发帖心情 Post By:2017/9/16 17:42:00 [只看该作者]

谢谢蓝版主!
不报错了,我再看看其他的会不会受影响。

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


加好友 发短信
等级:童狐 帖子:292 积分:2516 威望:0 精华:0 注册:2017/1/8 15:53:00
  发帖心情 Post By:2017/9/18 15:45:00 [只看该作者]

呵呵 ,今天我自己也碰到这问题了,论坛一收就解决啦 谢谢蓝版主,

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


加好友 发短信
等级:童狐 帖子:292 积分:2516 威望:0 精华:0 注册:2017/1/8 15:53:00
  发帖心情 Post By:2017/9/18 15:49:00 [只看该作者]

以下是引用有点蓝在2017/9/16 17:34:00的发言:
没有看透他的用法,全局代码-》事务日程这个地方改改:

Public Sub 事务标签布局()
……
Dim n_行数 As Integer
Dim Left, Top, Width, Height As Integer
'
'循环字典
'
Dim a As 事务标签
For Each str In dc.Keys
    d = (CDate(str) - _表首).Days   '和表首的日期差
    r = (d \ 8) * 2 + 3             '取整数(行),跨行
    c = (d Mod 7) + 1               '取列位置 
    If dc(str).Count > 4 Then
        n_行数 = 4
    Else
        n_行数 = dc(str).Count
    End If
……
请问蓝版主, 这样修改的原因是什么能告诉下么? 
[此贴子已经被作者于2017/9/16 17:34:29编辑过]

[此贴子已经被作者于2017/9/18 15:52:41编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1131 积分:8199 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2017/9/18 16:16:00 [只看该作者]

mark

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/18 17:15:00 [只看该作者]

4楼的代码有问题,改成下面的。

 

 

    d = (CDate(str) - _表首).Days   '和表首的日期差
   
    If  周历开个 =  0 Then
        r = (d \ 7) * 2 + 3             '取整数(行),跨行
    Else
        If d >= 7 Then
            Continue For
        Else
            r =   3
        End If
    End If

    c = (d Mod 7) + 1               '取列位置


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


加好友 发短信
等级:童狐 帖子:292 积分:2516 威望:0 精华:0 注册:2017/1/8 15:53:00
  发帖心情 Post By:2017/9/19 10:19:00 [只看该作者]

以下是引用有点甜在2017/9/18 17:15:00的发言:

4楼的代码有问题,改成下面的。

 

 

    d = (CDate(str) - _表首).Days   '和表首的日期差
   
    If  周历开个 =  0 Then
        r = (d \ 7) * 2 + 3             '取整数(行),跨行
    Else
        If d >= 7 Then
            Continue For
        Else
            r =   3
        End If
    End If

    c = (d Mod 7) + 1               '取列位置

 谢谢有点甜版主的热心查看代码(要看懂这些代码是需要花很多时间的)  其实我当初设置全局变量的时候   

周历开个(周历开关)其实是这个意思, 另外我把蓝版主的代码修改后,测试了每个月份的每个周, 都没出错, 我感觉还是甜版主的代码好,还是用您的吧

[此贴子已经被作者于2017/9/19 10:56:27编辑过]

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