Foxtable(狐表)用户栏目专家坐堂 → 求教


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

主题:求教

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


加好友 发短信
等级:二尾狐 帖子:554 积分:5343 威望:0 精华:0 注册:2011/6/7 13:33:00
求教  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:554 积分:5343 威望:0 精华:0 注册:2011/6/7 13:33:00
  发帖心情 Post By: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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/10 14:14:00 [只看该作者]

 回复1楼,这句代码错了,可能max字符串没有9位那么多

 

max=CInt(dt.DataRows(0)("编号").SubString(6,3))+1

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/7/10 14:16:00 [只看该作者]

回复2楼,代码没有错。和sqlserver或access无关

 回到顶部