以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]测试周历,提示索引超出范围  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=106822)

--  作者:jyh7081
--  发布时间: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
图片点击可在新窗口打开查看



--  作者:有点蓝
--  发布时间:2017/9/16 9:30:00
--  
别人的例子我测试没有问题。上传你的实例说明
--  作者:jyh7081
--  发布时间:2017/9/16 10:19:00
--  
是开发板的外部数据实例,请蓝版主指教:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:事务管理-外数.rar

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

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

--  作者:有点蓝
--  发布时间: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
--  发布时间:2017/9/16 17:42:00
--  
谢谢蓝版主!
不报错了,我再看看其他的会不会受影响。

--  作者:李小胖
--  发布时间:2017/9/18 15:45:00
--  
呵呵 ,今天我自己也碰到这问题了,论坛一收就解决啦 谢谢蓝版主,
--  作者:李小胖
--  发布时间: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
--  发布时间:2017/9/18 16:16:00
--  
mark
--  作者:有点甜
--  发布时间: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: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编辑过]