以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 11.28商业版 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=30385) |
||||
-- 作者:lsf5138 -- 发布时间:2013/3/27 8:59:00 -- 11.28商业版 原来用试用版好好的,上月装了11.28商业版后。 昨天发现用代码自动编号生成会提示调用目标错误!(这个月比较忙很少玩狐表,到现在才发现) 谁有出现这个情况吗?(昨天有装了台TSC342标签打印机,不知有没关系?)
|
||||
-- 作者:lsf5138 -- 发布时间:2013/3/28 8:19:00 -- 输入的日期如果在 2001-01-01 至 2012-12-31 内才可以正常使用 (超前和超后都报错) 调用的目标发生了异常。 .NET Framework 版本:2.0.50727.3643 Foxtable 版本:2012.11.29.1 错误所在事件:表,生产排单,DataColChanged 详细错误信息: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.FormatException: 该字符串未被识别为有效的 DateTime。 在 System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) 在 System.Data.ConstNode..ctor(DataTable table, ValueType type, Object constant, Boolean fParseQuotes) 在 System.Data.ExpressionParser.Parse() 在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type) 在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates) 在 System.Data.DataTable.Select(String filterExpression, String sort, DataViewRowState recordStates) 在 System.Data.DataTable.Compute(String expression, String filter) 在 Foxtable.DataTable.Compute(String O1O0111111, String O10110) 在 UserCode.DataColChanged(DataColEventArgs e) --- 内部异常堆栈跟踪的结尾 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.DataTable.O0100OOO1lOO10l0O0OO0O00(Object O01010, DataColumnChangeEventArgs O) 这是试用版做的例子发现也一样 调用的目标发生了异常。 .NET Framework 版本:2.0.50727.3643 Foxtable 版本:2012.11.28.1 错误所在事件:表,表A,DataColChanged 详细错误信息: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.FormatException: 该字符串未被识别为有效的 DateTime。 在 System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) 在 System.Data.ConstNode..ctor(DataTable table, ValueType type, Object constant, Boolean fParseQuotes) 在 System.Data.ExpressionParser.Parse() 在 System.Data.DataExpression..ctor(DataTable table, String expression, Type type) 在 System.Data.Select..ctor(DataTable table, String filterExpression, String sort, DataViewRowState recordStates) 在 System.Data.DataTable.Select(String filterExpression, String sort, DataViewRowState recordStates) 在 System.Data.DataTable.Compute(String expression, String filter) 在 Foxtable.DataTable.Compute(String OlO1ll1OOO, String OO0Ol0) 在 UserCode.DataColChanged(DataColEventArgs e) --- 内部异常堆栈跟踪的结尾 --- 在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) 在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 在 Foxtable.DataTable.O1100l0O01l110O0l00Oll11(Object O0l0O0, DataColumnChangeEventArgs O)
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/3/28 8:50:00 -- 分析生产排单表的DataColchanged事件,用下面的方法分析,找出是哪一行代码出错,然后分析原因:
http://www.foxtable.com/help/topics/1485.htm
根据错误提示,你合成的compute语句的条件表达式,试图将一个字符串转换为日期和日期列进行比较,但是这个字符串却无法转换为日期,结果出错了。 [此贴子已经被作者于2013-3-28 8:50:26编辑过]
|
||||
-- 作者:lsf5138 -- 发布时间:2013/3/28 9:55:00 -- 3楼的下半部份提示是按帮助里的代码做的例子,也一样呀! 为什么 输入的日期如果在 2001-01-01 至 2012-12-31 内才可以正常使用 (超前和超后都报错)
If e.DataRow.IsNull("日期") Then e.DataRow("编号") = Nothing Else Dim d As Date = e.DataRow("日期") 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 bh As String = Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月. If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前6位不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(编号)","日期 >= #" & fd & "# And 日期 <= #" & ld & "#") \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(7,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = bh & "-" & Format(idx,"000") End If End If End If [此贴子已经被作者于2013-3-28 10:00:12编辑过]
|
||||
-- 作者:lsf5138 -- 发布时间:2013/3/28 10:20:00 -- 比如输入了 2000-12-01 或 2013-03-26 都会报错 但记得上月我有测试2013-02-20是没问题的!
|
||||
-- 作者:lsf5138 -- 发布时间:2013/3/28 10:59:00 -- 你是小庞吗?要不下午我把电脑主机带来厂里我们QQ远程一下。(家里没宽带) |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/3/28 11:02:00 -- 何必这么麻烦啊,直接将文件发上来不就行了吗? |
||||
-- 作者:lsf5138 -- 发布时间:2013/3/28 13:27:00 --
|
||||
-- 作者:FoxMan -- 发布时间:2013/3/28 13:37:00 -- If e.DataCol.Name = "日期" Then If e.DataRow.IsNull("日期") Then e.DataRow("编号") = Nothing Else Dim d As Date = e.DataRow("日期") 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 bh As String = Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月. If e.DataRow("编号").StartsWith(bh) = False \'如果编号的前6位不符 Dim max As String Dim idx As Integer
e.DataRow("编号") = Nothing \'加多这一句 max = e.DataTable.Compute("Max(编号)","日期 >= #" & fd & "# And 日期 <= #" & ld & "#") \'取得该月的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(7,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = bh & "-" & Format(idx,"000") End If End If End If
|
||||
-- 作者:lsf5138 -- 发布时间:2013/3/28 13:55:00 -- 还是老样子 |