以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求教 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=53548) |
-- 作者:zhangxl1964 -- 发布时间:2014/7/10 12:27:00 -- 求教 老师:你好! 一下代码在 SQL server 数据库运行正常,在Access数据库运行出现:错误所在事件:表,收款信息,DataColChanged 详细错误信息: 调用的目标发生了异常。 startIndex 不能大于字符串长度。 参数名: startIndex 怎样修改? Dim cmd As New SQLCommand Dim dt As DataTable \'cmd.C Dim max As Integer If e.DataCol.Name = "日期" Then If e.DataRow.IsNull("日期") Then e.DataRow("编号") = Nothing Else \'cmd.CommandText = "select max(订单编号) as 订单编号 from {订单表} " \'cmd.CommandText = "select IsNull(max(编号),0) as 编号 from {收款信息} where Year(日期)=" & e.DataRow("日期").Year & " and Month(日期)= " & e.DataRow("日期").Month cmd.CommandText = "select max(编号) as 编号 from {收款信息} where Year(日期)=" & e.DataRow("日期").Year & " and Month(日期)= " & e.DataRow("日期").Month dt = cmd.ExecuteReader If dt.DataRows.Count > 0 And dt.DataRows(0)("编号")<>"0" Then \'MessageBox.Show("A") max=CInt(dt.DataRows(0)("编号").SubString(6,3))+1 Else max=1 End If e.DataRow("编号") =cStr(e.DataRow("日期")).SubString(2,3) & Format(e.DataRow("日期").Month,"00") & "-" & Format(max,"000") End If End If |
-- 作者:zhangxl1964 -- 发布时间:2014/7/10 12:39:00 -- 下面代码在 SQL server 数据库运行正常,在Access数据库运行出现:错误所在事件: 详细错误信息: 标准表达式中数据类型不匹配。 怎样修改? Select Case e.DataCol.Name Case "日期","编号","客户名称","摘要","收入","支出","余额","银行账号" Dim dr As DataRow Dim mr As DataRow = e.DataRow Dim drs As List(of DataRow) dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [银行账号] = \'" & mr("银行账号") & "\'", "[_SortKey] Desc") MessageBox.Show("A") If dr Is Nothing Then mr("余额") = mr("收入") - mr("支出")+jcj dr = mr End If drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [银行账号] = \'" & dr("银行账号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") Next If e.DataCol.Name = "银行账号" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then dr = e.DataTable.Find("[_SortKey] < " & mr("_SortKey") & " And [银行账号] = \'" & e.OldValue & "\'", "[_SortKey] Desc") If dr Is Nothing Then dr = e.DataTable.Find("[银行账号] = \'" & e.OldValue & "\'", "[_SortKey]") If dr IsNot Nothing Then dr("余额") = dr("收入") - dr("支出")+jcj End If End If If dr IsNot Nothing Then drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey") & " And [银行账号] = \'" & dr("银行账号") & "\'", "[_SortKey]") For i As Integer = 1 To drs.Count - 1 drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出") Next End If End If End Select |
-- 作者:有点甜 -- 发布时间:2014/7/10 14:14:00 -- 回复1楼,这句代码错了,可能max字符串没有9位那么多
max=CInt(dt.DataRows(0)("编号").SubString(6,3))+1
|
-- 作者:有点甜 -- 发布时间:2014/7/10 14:16:00 -- 回复2楼,代码没有错。和sqlserver或access无关 |