以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105951)

--  作者:沪上游客
--  发布时间:2017/8/29 18:54:00
--  [求助]
老师你好,下面这段是在开发版打开项目时出现,然后表没有加载。请问问题出在那里?谢谢!


.NET Framework 版本:2.0.50727.4984
Foxtable 版本:2017.8.18.1
错误所在事件:加载[增值税发票开票登记]失败!
详细错误信息:
无法在 System.Decimal 和 System.DBNull 上执行“Or”操作。


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

[此贴子已经被作者于2017/8/29 18:57:46编辑过]

--  作者:有点蓝
--  发布时间:2017/8/29 20:36:00
--  
设置了加载的条件?贴出来看看
--  作者:沪上游客
--  发布时间:2017/8/30 9:56:00
--  

表事件

 

增值税发票开票登记_PrepareEdit

 

Select Case e.Col.name

    Case "审批人","审批日期"

        e.Cancel = True

    Case Else

        If e.Row.IsNull("审批人") = False Then

            e.Cancel = True

        End If

End Select

 

增值税发票开票登记_DataColChanged

 

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")

        If dr Is Nothing Then

            mr("增值税发票开票金额累计") = mr("本次开票金额")

            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)("本次开票金额")

        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("本次开票金额")

                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)("本次开票金额")

                Next

            End If

        End If

End Select

 

Select Case e.DataCol.name

    Case "发票开票日期","本次应收款收入","本次开票金额"

        If e.DataRow.IsNull("发票开票日期") Then

            e.DataRow("超期天数") = Nothing

        Else

            Dim tp As TimeSpan = Date.today - CDate(e.DataRow("发票开票日期"))

            e.DataRow("超期天数") = Round2(tp.TotalDays -61,0)

        End If

        If e.DataRow("本次应收款收入") = e.DataRow("本次开票金额") Then

            e.DataRow("超期天数") = Nothing

        End If

End Select

 

增值税发票开票登记_BeforeSaveDataRow

 

If e.DataRow.GetParentRow("工程合同基础数据") Is Nothing Then

    MessageBox.Show("主合同编号错误或没有主合同信息!","存盘失败",MessageBoxButtons.OK,MessageBoxIcon.Exclamation) \'提示用户

    e.cancel = True

End If

 

增值税发票开票登记_DataRowAdding

 

e.DataRow("录入人") = User.name

e.DataRow("录入日期") = Date.Now

 

增值税发票开票登记_DataRowDeleting

 

e.DataRow("本次开票金额") = 0

 

增值税发票开票登记_DataRowLockedChanging

 

If User.IsRole("审批") Then

    e.Cancel = False

Else

    e.Cancel = True

End If

 

增值税发票开票登记_AfterMoveRow

 

Dim Key As Decimal

Dim Index As Integer

Dim Filter As String

Dim r As Row

Index = Math.Min(e.OldIndex, e.NewIndex)

Key = e.Table.Rows(Index)("_SortKey")

r = e.Table.Rows(e.NewIndex)

Filter = "[_SortKey] >= " & Key & " And [合同编号] = \'" & r("合同编号") & "\'"

e.Table.DataTable.DataCols("本次开票金额").RaiseDataColChanged(Filter)

 

增值税发票开票登记_DrawCell

 

If e.Col.Name = "超期天数" AndAlso e.Row.IsNull("超期天数") = False Then

    e.StartDraw()

    Dim Width As Integer = (e.Width - 2 )* e.Row("超期天数") \\ 61

    e.Graphics.FillRectangle(Brushes.Red,e.x + 1,e.y + 1, Width, e.Height - 2)

    e.EndDraw()

End If

If e.Col.Name = "超期天数" AndAlso e.Row.IsNull("超期天数") = False Then

    e.StartDraw()

    Dim Width As Integer = (e.Width - 2 )* e.Row("超期天数") \\ -61

    If e.Row("超期天数") <= 0 Then

        e.Graphics.FillRectangle(Brushes.Green,e.x + 1,e.y +1, Width, e.Height - 2)

    End If

    e.EndDraw()

End If

 

增值税发票开票登记_AfterLoad

 

Forms("增值税发票管理筛选树").open()

 

 


--  作者:沪上游客
--  发布时间:2017/8/30 9:58:00
--  

项目事件

 

Initialize

 

For Each dt As DataTable In DataTables

    dt.GlobalHandler.BeforeSaveDataRow = True

Next

 

AfterOpenProject

 

Tables("应收款收入数据").Cols.Remove("工程名称")

Tables("工程合同基础数据").Cols.Remove("财务编号系统生成")

Tables("工程合同基础数据").Cols.Remove("合同信息")

Tables("工程合同基础数据").Cols.Remove("补充合同或决算记录数")

Tables("工程合同基础数据").Cols.Remove("开票记录数")

Tables("工程合同基础数据").Cols.Remove("支出合同数")

Tables("工程合同基础数据").Cols.Remove("应收款记录数")

Tables("增值税发票开票登记").Cols.Remove("差额税金")

Tables("支出合同收支表").Cols.Remove("收票金额")

Tables("支出合同收支表").Cols.Remove("支出金额")

Tables("支出合同基础数据").Cols.Remove("支出合同补充或决算记录数")

Tables("支出合同基础数据").Cols.Remove("支出合同收支记录数")

Tables("支出合同基础数据").Cols.Remove("支出合同印花税记录数")

Tables("支出合同基础数据").Cols.Remove("工程材料费")

Tables("支出合同基础数据").Cols.Remove("人工费用")

Tables("支出合同基础数据").Cols.Remove("机械费")

Tables("支出合同基础数据").Cols.Remove("专项分包费")

Tables("支出合同收支表").Cols.Remove("采购合同金额")

Tables("支出合同收支表").Cols.Remove("劳务分包金额")

Tables("支出合同收支表").Cols.Remove("设备租赁金额")

Tables("支出合同收支表").Cols.Remove("专项分包金额")

Tables("支出合同印花税统计表").Cols.Remove("应交税费")

Tables("增值税发票开票登记").Cols("合同编号").DropForm = "查找合同编号"

Tables("支出合同基础数据").Cols("主合同编号").DropForm = "支出合同查找合同编号"

Tables("支出合同收支表").Cols("支出合同编号").DropForm = "支出合同收支"

Tables("支出合同印花税统计表").Cols("支出合同编号").DropForm = "印花税查找编号"

 

With DataTables("应收款超期提醒")

    .DataRows.Clear() \'清除所有行

End With

Dim f As New Filler

f.SourceTable = DataTables("工程合同基础数据") \'指定数据来源

f.SourceCols = "合同编号" \'指定数据来源列

f.DataTable = DataTables("应收款超期提醒") \'指定数据接收表

f.DataCols = "合同编号" \'指定数据接收列

f.Fill() \'填充数据

Tables("应收款超期提醒").Filter = "[超期提醒] Is Not Null"

Tables("应收款超期提醒").Sort = "超期提醒 DESC"

 

Output.Logs("登录日志").Add(User.Name & ":" & Date.Now )

Output.Logs("登录日志").Save("d:\\test\\日志信息\\登录log.txt",True)

Output.Logs("登录日志").Clear

 

LoadUserSetting

 

For Each t As Table In Tables

    t.Visible = True

    t.AllowEdit = True

    For Each c As Col In t.Cols

        c.Visible = True

        c.AllowEdit = True

    Next

Next

Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )

If User.Type = UserTypeEnum.User Then

    For Each dr As DataRow In DataTables("授权表").Select("用户名 = \'" & User.Name & "\'" )

        If dr.IsNull("列名") Then

            Tables(dr("表名")).Visible = Not dr("不可见")

            Tables(dr("表名")).AllowEdit = Not dr("不可编缉")

        Else

            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")

            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编缉")

        End If

    Next

End If

If User.Type = UserTypeEnum.Administrator Or User.Type = UserTypeEnum.Developer Then

    DataTables("工程合同基础数据").LoadFilter = ""

Else If User.Group = "总公司" Then

    DataTables("工程合同基础数据").LoadFilter = ""

Else If User.Group = "上海区域" Then

    DataTables("工程合同基础数据").LoadFilter = "录入部门 = \'" & User.Group & "\'"

Else If User.Group = "南京区域" Then

    DataTables("工程合同基础数据").LoadFilter = "录入部门 = \'" & User.Group & "\'"

Else If User.Group = "无锡区域" Then

    DataTables("工程合同基础数据").LoadFilter = "录入部门 = \'" & User.Group & "\'"

Else If User.Group = "苏州区域" Then

    DataTables("工程合同基础数据").LoadFilter = "录入部门 = \'" & User.Group & "\'"

Else If User.Group = "南通区域" Then

    DataTables("工程合同基础数据").LoadFilter = "录入部门 = \'" & User.Group & "\'"

Else If User.Group = "宜兴区域" Then

    DataTables("工程合同基础数据").LoadFilter = "录入部门 = \'" & User.Group & "\'"

Else If User.Group = "总公司直属" Then

    DataTables("工程合同基础数据").LoadFilter = "录入部门 = \'" & User.Group & "\'"

Else If User.Group = "天津分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "上海分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "南京分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "马鞍山分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "无锡分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "常熟分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "云南分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "镇江分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "扬州分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "淮安分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "合肥分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "德州分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "徐州分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "江阴分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "张家港分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "无锡岩土分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "常州分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "苏州分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "苏州园区分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "吴江分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "太仓分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "昆山分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "云南分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "南通分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "泰州分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "泰兴分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "连云港分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "盐城分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

Else If User.Group = "湖州分公司" Then

    DataTables("工程合同基础数据").LoadFilter = "分公司 = \'" & User.Group & "\'"

End If

DataTables("工程合同基础数据").Load()

 

MainTableChanged

 

If  MainTable.Name = "工程合同基础数据" Then

    Dim tb As New DropTreeBuilder

    tb.SourceTable = DataTables("分公司编号数据") \'指定目录树表

    tb.TreeCols = "所属区域公司|分公司" \'指定用于生成目录树的列

    tb.SourceCols = "所属区域公司|分公司" \'指定数据来源列

    tb.ReceiveCols = "所属区域公司|分公司" \'指定数据接收列

    Tables("工程合同基础数据").Cols("分公司").DropTree = tb.Build()

End If

 

AfterSaveProject

 

DataTables("增值税发票开票登记").DataCols("发票开票日期").RaiseDataColChanged()

 

BeforeCloseProject

 

Output.Logs("删除日志").Save("d:\\test\\日志信息\\主合同Delete.txt",True)

 

PositionChanged

 

StatusBar.Message1 = "登录名:" & User.Name & "    " & "第" & (e.Table.Position + 1) & "行,共" & e.Table.Rows.Count & "行"

 

 


--  作者:沪上游客
--  发布时间:2017/8/30 10:10:00
--  
老师,好象在项目事件的LoadUserSetting里有一个“Or”
另外请问这与表达列里的公式有关系吗?
[此贴子已经被作者于2017/8/30 10:14:38编辑过]

--  作者:有点甜
--  发布时间:2017/8/30 10:33:00
--  

报错以后,在命令窗口弹出执行以下下面的代码

 

msgbox(DataTables("增值税发票开票登记").LoadFilter)

 

报错和你贴出的代码无关。基本是因为你加载条件写错了导致的。


--  作者:沪上游客
--  发布时间:2017/8/30 10:50:00
--  
那老师,加载条件在那里呢?我是在昨天在主表里加了几列表达式,才有这个问题的。谢谢!

[此贴子已经被作者于2017/8/30 10:55:35编辑过]

--  作者:沪上游客
--  发布时间:2017/8/30 10:57:00
--  

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


按照您的的代码在命令窗口输入msgbox(DataTables("增值税发票开票登记").LoadFilter)后
出现上面提示

--  作者:有点甜
--  发布时间:2017/8/30 11:11:00
--  

出错后,再执行下面代码是否报错?

 

msgbox(DataTables("增值税发票开票登记").LoadFilter)

DataTables("增值税发票开票登记").Load


--  作者:沪上游客
--  发布时间:2017/8/30 11:14:00
--  
老师,确实是加载报错,但原来一直正常的,现在我把主表的加载命令取消了,可以加载了,但我原来是要求与主表有关联的数据才加载进来?应该怎么设置,其它子表者正常,我错在那里了?

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