Foxtable(狐表)用户栏目专家坐堂 → 报错,另收款凭证无法删除单


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

主题:报错,另收款凭证无法删除单

美女呀,离线,留言给我吧!
采菊东篱下
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/5 11:47:00 [只看该作者]

以下是引用有点蓝在2021/6/5 11:33:00的发言:
我也不知道为什么,把项目文件复制到其它目录试试

东西不可能无缘无故多的。我天天坐在家里也没看到多一块馅饼出来。

至于导进导出这种情况是正常的,新窗口重新调整即可

你说偶尔一两次多一个控件就是自己可能误点了窗口中复制按钮不知,可这种情况常发生就很讨厌了!不信自已常犯这种低级错误,常发生啊,心累了!感觉这软件很不隐定!幸好懂点查找、消除错误的技巧,知道问题在哪?遇到不懂的老板,直接否定了整个软件,给了3万多元首付,最后也否定了整个项目,签了10多万的开发合同直接不要了,有钱人就是任性,说不要就不要,眼都不眨一下,在我们眼里这是小问题,在客户眼里他是直接的不信任!
[此贴子已经被作者于2021/6/5 11:48:03编辑过]

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


加好友 发短信
等级:超级版主 帖子:107863 积分:548678 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/6/5 11:53:00 [只看该作者]

这种情况确实很讨厌。但是为什么我从来就没有碰到过!也没见其他用户反应经常多控件的问题?先把自己的开发状态稳定下来,再说别人的软件是否稳定吧。

看您窗口大部分都差不多,应该都是同一个窗口框模板导进来改的。估计是导进来前最早设计的窗口控件就已经多了

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/5 12:12:00 [只看该作者]

多出的控件不在同一窗口发生,所有窗口都发生过,而且我这边常发生关闭管理项目中的窗口又重复弹出窗口,重装过几次问题依旧,你却说你没问题,这些都不可能人为吧?唉!常这样真很容易不知何时出错的!

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/8 10:52:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:收款凭证0608.foxdb

因为要选收借方科目才能决定收款凭证到底是现收还是银收,从而影响日期控件上动态生成的凭证单号,我已用代码限定其录入先后顺序,录入、保存、生成动态凭证号都没问题,可双击财务数据源表弹出凭证时却总提示报错。
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.29.1
错误所在事件:窗口,收款凭证,rq,ValueChanged
详细错误信息:
Index and length must refer to a location within the string.
Parameter name: length
但关闭报错窗口弹出的凭证内容是完整、无误的,我想应是窗口要求先选借方科目,然后选日期,再生成凭证单号的先后顺序造成其报错的,这种情况下如何消除报错呢?
[此贴子已经被作者于2021/6/8 11:02:22编辑过]

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


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

提示索引超标,出现问题的时候先学会调试定位到错误的代码

看代码应该是【(e.Form.Controls("TextBox2").text).SubString(0,2) 】有问题,比如文本框没有输入内容,或者输入的内容长度不大于1,就会出错

还有就是【CInt(max1.Substring(10,5))】,如果返回的最大编号不足15位长度就会出错

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/6/8 11:50:00 [只看该作者]

我知道是e.Form.Controls("TextBox2").text为空造成报错的,无论红色标注代码写成If e.Form.Controls("ComboBox3").text IsNot Nothing And e.Sender.value IsNot Nothing then,还是下面的三个控件都不为行,其实,第三个条件是前面二个条件不为空自动生成的,问题都没解决
'以这代码为准:
e.Sender.WriteValue()
Dim yzdh As WinForm.TextBox = e.Form.Controls("dh")'dh是单号控件
Dim di As String = yzdh.Value 'di单号控件中的变量
Dim d As Date  = e.Sender.Value
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim Days As Integer = Date.DaysInMonth(y,m)
Dim fd As Date = New Date(y,m,1) '获得该月的第一天
Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
Dim Max0 As String
Dim idx As Integer
Dim flt As String = "[字号] = '" & (e.Form.Controls("TextBox2").text).SubString(0,2) & "' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "#"
If e.Form.Controls("ComboBox3").text IsNot Nothing And e.Sender.value IsNot Nothing And e.Form.Controls("TextBox2").text IsNot Nothing Then
    Dim dts As Integer = DataTables("财务数据源").Compute("Count([会计科目])","[字号] = '" & e.Form.Controls("TextBox2").text & "' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "# And [凭证号] = '" & di & "'")
    If dts = 0 Then
        Max0 = DataTables("财务数据源").Compute("Max(凭证号)",flt) '取得该月的相同工程代码的最大单据编号
        If Max0 > "" Then '如果存在最大单据编号
            idx = CInt(Max0) + 1 '获得最大单据编号的后四位顺序号,并加1
        Else
            idx = 1 '否则顺序号等于1
        End If
        di = idx
        yzdh.Value = di
    End If
Else
    yzdh.Value = Nothing
End If
[此贴子已经被作者于2021/6/8 13:46:50编辑过]

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


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

1、先取了值,再去判断,逻辑混乱
2、出错的是TextBox2控件,却去判断其它控件,有点饥不择食
……
Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
Dim Max0 As String
Dim idx As Integer
dim s as string = e.Form.Controls("TextBox2").text
if s.length >2 then s = s.SubString(0,2)
Dim flt As String = "[字号] = '" & s & "' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "#"
Dim dts As Integer = DataTables("财务数据源").Compute("Count([会计科目])","[字号] = '" & e.Form.Controls("TextBox2").text & "' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "# And [凭证号] = '" & di & "'")
……

 回到顶部
总数 17 上一页 1 2