Foxtable(狐表)用户栏目专家坐堂 → 老师,我做的日历报错


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

主题:老师,我做的日历报错

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


加好友 发短信
等级:狐精 帖子:3049 积分:20399 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/12/19 17:50:00 [只看该作者]

还是没找到问题所在,请老师看看,我用部门:管理员,账号gly登录没问题,用其他部门账号登录就会有问题,发布前,发不够都一样。

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


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/20 20:03:00 [只看该作者]

哪一句代码出错?

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


加好友 发短信
等级:狐精 帖子:3049 积分:20399 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/12/22 9:25:00 [只看该作者]

老师,这一段代码有问题,1、2出来了,3不出来?

'数据表刷新方法
Public Sub 数据刷新()
Dim Filter As String = n事务时间 & ">='" & _表首 & "' and " & n事务时间 & "<='" & _表尾 & "' and " & n姓名 & "='" & _UserXingMing & "' or " & n公开部门 & "='" & _UserGroup & "'"       'SQL Server数据源
If 事务主表_dt.SourceType = 2 Then   'SQL Server数据源
    Filter = n事务时间 & ">='" & _表首 & "' and " & n事务时间 & "<='" & _表尾 & "' and " & n姓名 & "='" & _UserXingMing & "' or " & n公开部门 & "='" & _UserGroup & "'"
End If
msgbox(1)
事务主表_dt.LoadFilter = Filter
事务主表_dt.LoadTop = "5000"         '2020.02.04 这里是代码修改的部分(如果不添加此代码, 你查看自己的事务日历永远只有10条记录,5000代表可加载5000条记录)
事务主表_dt.LoadOrder = n事务时间
事务主表_dt.Load()
msgbox(2)
End Sub

 

Public Sub 当前表数据刷新()
msgbox(3)
Dim Filter As String = n事务时间 & ">='" & _表首 & "' and " & n事务时间 & "<='" & _表尾 & "' and " & n姓名 & "='" & _UserXingMing & "' or " & n事务对象 & "='" & _UserXingMing & "' or " & n公开部门 & "='" & _UserGroup & "'"       'SQL Server数据源
If 事务主表_dt.SourceType = 2 Then 'SQL Server数据源
Filter = n事务时间 & ">='" & _表首 & "' and " & n事务时间 & "<='" & _表尾 & "' and " & n姓名 & "='" & _UserXingMing & "' or " & n事务对象 & "='" & _UserXingMing & "' or " & n公开部门 & "='" & _UserGroup & "'"
End If
msgbox(4)

'*****************************************新增查询条件1********************************
Dim Filter1 As String = ""
Dim lx As Integer
Select Case Forms("日历").Controls("事务类型").Text
    Case "会议"
        lx = 1
    Case "商务"
        lx = 2
    Case "法务"
        lx = 3
    Case "私人"
        lx = 4
End Select
Filter1 = IIF(lx = 0,filter,"事务类型 = " & lx & " And " & filter)
msgbox(5)
'*****************************************新增查询条件2(逻辑列)********************************
Dim Filter2 As String = ""
Dim lc As Integer = -1
Select Case Forms("日历").Controls("日程状态").Text '确定还是使用"事务类型"的内容做判断?
    Case "已完成"
        lc = 1 '这个列到底是逻辑列还是整数列?上面定义的是整数,这里赋值逻辑值?
    Case "未完成"
        lc = 0
End Select
Filter2 = IIF(lc = -1,filter1,"终止 = " & lc & " And " & filter1)
'''
事务主表_dt.LoadFilter = Filter2
事务主表_dt.LoadTop = "5000"    '表示可以查看5000条事务
事务主表_dt.LoadOrder = n事务时间
事务主表_dt.Load()
msgbox(6)
End Sub

用管理员登录时,不报错,是因为:用户部门(_UserGroup ),姓名(_UserXingMing )都是:管理员,但是其他账号登录时,部门和姓名不一样。

[此贴子已经被作者于2020/12/22 9:28:50编辑过]

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


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

每个Public Sub xxxx()都是一个独立的函数,像8楼的Panel绑定里根本都没有调用【当前表数据刷新()】这个函数,当然不出来。9楼说【4出来了,5不出来】那就是【事务标签布局()】函数有问题,请到Public Sub 事务标签布局()这个函数里面去调试

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


加好友 发短信
等级:狐精 帖子:3049 积分:20399 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/12/22 10:30:00 [只看该作者]

主要是我用管理员登录又没有报错啊?

 

报错后也能打开,只是没刷新,如下图:

 


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

 

正常的应该如下:

 


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

问题好像不出在前面,还在后面,下面这段代码,14、19、21出来,后报错,用管理员登录不报错,调试代码出来正确顺序是:14、19、21、22、23、26然后循环

Dim n_行数 As Integer
Dim Left, Top, Width, Height As Integer
msgbox(14)
'循环字典
Dim a As 事务标签
For Each str In dc.Keys
' →→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→2020.02.04 这里是代码修改的部分开始
    d = (CDate(str) - _表首).Days   '和表首的日期差
    If  周历开个 =  0 Then '这里的周历开个其实是周历开关的意思, 我(李小胖)后期已经修改了
        r = (d \ 7) * 2 + 3             '取整数(行),跨行
    Else
    msgbox(15)
        If d >= 7 Then
    msgbox(16)
            Continue For
        Else
    msgbox(17)
            r = 3
        End If
    msgbox(18)
    End If
    c = (d Mod 7) + 1               '取列位置
    msgbox(19)
    If dc(str).Count > 4 Then
        n_行数 = 4
msgbox(20)
    Else
        n_行数 = dc(str).Count
    End If
msgbox(21)
    '→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→2020.02.04 这里是代码修改的部结束
    '获取单元格的坐标
    Left = Me.Cols(c).Left
    Width = Me.Cols(c).Right - Left
    Top = Me.Rows(r).Top
    Height = Me.Rows(r).Height - 2
msgbox(22)
    '获取表格空白可容纳的标签数量
    j = Height \ _事务标签_高度
    If dc(str).Count > j Then   '如果标签的数量单元格可容纳的标签数
msgbox(23)
        For i = 0 To j - 2
msgbox(24)
            a = New 事务标签
            a.SetData(dc(str)(i))
            a.Top = Top + _事务标签_高度 * i + 2
            a.Left = Left + 2
            a.Width = Width - 4
            a.Height = _事务标签_高度
            a.de = CDate(str)
            a.BringToFront()
            a.Visible = True
            Me.Controls.Add(a)
msgbox(25)
        Next

        a = New 事务标签
        a.SetData(Nothing)
        a.Top = Top + Height - _事务标签_高度 + 2
        a.Left = Left + 2
        a.Width = Width - 4
        a.Height = _事务标签_高度
        a.de = CDate(str)
        a.BringToFront()
        a.Visible = True
        Me.Controls.Add(a)
msgbox(26)
    Else
msgbox(27)
        i = 0
msgbox(28)
        For Each dr As Foxtable.DataRow In dc(str)
msgbox(29)
            a = New 事务标签
            a.SetData(dr)
            a.Top = Top + _事务标签_高度 * i + 2
            a.Left = Left + 2
            a.Width = Width - 4
            a.Height = _事务标签_高度
            a.de = CDate(str)
            a.BringToFront()
            a.Visible = True
            Me.Controls.Add(a)
            i += 1
        Next
msgbox(30)
    End If
Next
msgbox(31)
End Sub
End Class

[此贴子已经被作者于2020/12/22 10:44:15编辑过]

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


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

纠结这些没有意义,找出有问题的代码。

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


加好友 发短信
等级:狐精 帖子:3049 积分:20399 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/12/22 10:45:00 [只看该作者]

问题好像不出在前面,还在后面,下面这段代码,14、19、21出来,后报错,用管理员登录不报错,调试代码出来正确顺序是:14、19、21、22、23、26然后循环

Dim n_行数 As Integer
Dim Left, Top, Width, Height As Integer
msgbox(14)
'循环字典
Dim a As 事务标签
For Each str In dc.Keys
' →→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→2020.02.04 这里是代码修改的部分开始
    d = (CDate(str) - _表首).Days   '和表首的日期差
    If  周历开个 =  0 Then '这里的周历开个其实是周历开关的意思, 我(李小胖)后期已经修改了
        r = (d \ 7) * 2 + 3             '取整数(行),跨行
    Else
    msgbox(15)
        If d >= 7 Then
    msgbox(16)
            Continue For
        Else
    msgbox(17)
            r = 3
        End If
    msgbox(18)
    End If
    c = (d Mod 7) + 1               '取列位置
    msgbox(19)
    If dc(str).Count > 4 Then
        n_行数 = 4
msgbox(20)
    Else
        n_行数 = dc(str).Count
    End If
msgbox(21)
    '→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→2020.02.04 这里是代码修改的部结束
    '获取单元格的坐标
    Left = Me.Cols(c).Left
    Width = Me.Cols(c).Right - Left
    Top = Me.Rows(r).Top
    Height = Me.Rows(r).Height - 2
msgbox(22)
    '获取表格空白可容纳的标签数量
    j = Height \ _事务标签_高度
    If dc(str).Count > j Then   '如果标签的数量单元格可容纳的标签数
msgbox(23)
        For i = 0 To j - 2
msgbox(24)
            a = New 事务标签
            a.SetData(dc(str)(i))
            a.Top = Top + _事务标签_高度 * i + 2
            a.Left = Left + 2
            a.Width = Width - 4
            a.Height = _事务标签_高度
            a.de = CDate(str)
            a.BringToFront()
            a.Visible = True
            Me.Controls.Add(a)
msgbox(25)
        Next

        a = New 事务标签
        a.SetData(Nothing)
        a.Top = Top + Height - _事务标签_高度 + 2
        a.Left = Left + 2
        a.Width = Width - 4
        a.Height = _事务标签_高度
        a.de = CDate(str)
        a.BringToFront()
        a.Visible = True
        Me.Controls.Add(a)
msgbox(26)
    Else
msgbox(27)
        i = 0
msgbox(28)
        For Each dr As Foxtable.DataRow In dc(str)
msgbox(29)
            a = New 事务标签
            a.SetData(dr)
            a.Top = Top + _事务标签_高度 * i + 2
            a.Left = Left + 2
            a.Width = Width - 4
            a.Height = _事务标签_高度
            a.de = CDate(str)
            a.BringToFront()
            a.Visible = True
            Me.Controls.Add(a)
            i += 1
        Next
msgbox(30)
    End If
Next
msgbox(31)
End Sub
End Class


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


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

   '获取单元格的坐标
msgbox(c & "," & Me.Cols.count)
    Left = Me.Cols(c).Left
msgbox("Left =" & Left )
    Width = Me.Cols(c).Right - Left
msgbox("Width =" & Width )
msgbox(r & "," & Me.Rows.count)
    Top = Me.Rows(r).Top
    Height = Me.Rows(r).Height - 2
msgbox(22)

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


加好友 发短信
等级:狐精 帖子:3049 积分:20399 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2020/12/22 11:01:00 [只看该作者]

  '获取单元格的坐标
msgbox(c & "," & Me.Cols.count)   '出来结果-5,8,然后就报错
    Left = Me.Cols(c).Left
msgbox("Left =" & Left )
    Width = Me.Cols(c).Right - Left
msgbox("Width =" & Width )
msgbox(r & "," & Me.Rows.count)
    Top = Me.Rows(r).Top
    Height = Me.Rows(r).Height - 2
msgbox(22)

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


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

-5?列的索引肯定不能是负数!


'循环字典
Dim a As 事务标签
For Each str In dc.Keys
msgbox("str=" & str)
    'd = (CDate(str) - _表首).Days   '和表首的日期差
    'r = (d \ 7) * 2 + 3             '取整数(行),跨行
    'c = (d Mod 7) + 1               '取列位置
' →→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→2020.02.04 这里是代码修改的部分开始
msgbox("_表首=" & _表首)
    d = (CDate(str) - _表首).Days   '和表首的日期差
msgbox("d=" & d)
    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               '取列位置
msgbox("c=" & c)    
    If dc(str).Count > 4 Then
        n_行数 = 4
    Else
        n_行数 = dc(str).Count
    End If
'→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→2020.02.04 这里是代码修改的部结束
    '获取单元格的坐标
    Left = Me.Cols(c).Left

 回到顶部
总数 29 上一页 1 2 3 下一页