Foxtable(狐表)用户栏目专家坐堂 → 窗口中添加上一单按钮


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

主题:窗口中添加上一单按钮

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
窗口中添加上一单按钮  发帖心情 Post By:2021/6/9 16:39:00 [只看该作者]

在窗口中添加上一单按钮,这样写报错:
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.29.1
错误所在事件:窗口,收款凭证,Button1,Click
详细错误信息:
Object reference not set to an instance of an object.


DataTables("收款凭证_Table1").deletefor( "[凭证号] Is Null")
DataTables("收款凭证_Table1").loadfilter = "1=2"
DataTables("收款凭证_Table1").load
Dim dr As DataRow = DataTables("财务数据源").SQLFind("[日期] = #" & (e.Form.Controls("rq").Value).Month & "# And [字号] = '" & e.Form.Controls("TextBox2").Value & "' And [凭证号] = '" & e.Form.Controls("dh").text + 1 & "'")
Dim dr1 As DataRow = DataTables("财务数据源").SQLFind("[日期] = #" & (e.Form.Controls("rq").Value).Month & "# And [字号] = '" & e.Form.Controls("TextBox2").Value & "' And [凭证号] = '" & e.Form.Controls("dh").text + 1 & "' And [借或贷] = '借'")
Forms("收款凭证").Controls("ComboBox3").text = dr1("会计科目")
Forms("收款凭证").Controls("rq").text = dr1("日期")
Forms("收款凭证").Controls("dh").text = dr1("凭证号")
Forms("收款凭证").Controls("dh1").text = dr1("安日期生成单号辅助列")
Forms("收款凭证").Controls("TextBox2").text = dr1("字号")
Forms("收款凭证").Controls("RadioButton1").Checked = dr1("已审核")
Forms("收款凭证").Controls("shr").text = dr1("审核人")
Forms("收款凭证").Controls("TextBox1").text = dr1("附件张数")
With Tables("收款凭证_Table1")
    Dim Filter As String = "安日期生成单号辅助列 = '" & dr("安日期生成单号辅助列") & "' And [字号] ='" & dr("字号") & "' And [凭证号] = '" & dr("凭证号") & "' And [借或贷] = '贷'"
    DataTables("收款凭证_Table1").LoadFilter = Filter '设置加载条件
    DataTables("收款凭证_Table1").Load() '加载数据
    If dr.IsNull("外币金额") And dr.IsNull("数量") Then
        Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(0)
        Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(0)
        .SetColVisibleWidth("摘要|300|贷方总账科目|100|明细科目|250|金额|100")
    ElseIf dr.IsNull("外币金额") And dr.IsNull("数量") = False Then
        Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(0)
        Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(1)
        .SetColVisibleWidth("摘要|300|贷方总账科目|100|明细科目|180|数量|60|单价|50|金额|60")
    ElseIf dr.IsNull("外币金额") = False And dr.IsNull("数量") Then
        Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(1)
        Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(0)
        .SetColVisibleWidth("摘要|250|贷方总账科目|100|明细科目|160|币种|60|汇率|60|外币金额|60|金额|60")
        .Cols("外币金额").GrandTotal = True
    ElseIf dr.IsNull("外币金额") = False And dr.IsNull("数量") = False Then
        Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(1)
        Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(1)
        .SetColVisibleWidth("摘要|130|贷方总账科目|100|明细科目|110|数量|60|单价|60|币种|60|汇率|50|外币金额|60|外币金额|60|金额|60")
        .Cols("外币金额").GrandTotal = True
    End If
    .Cols("贷方总账科目").DropForm = "科目"
    .Cols("金额").GrandTotal = True
    .GrandTotal = True
    'If e.Col.Name = "摘要" Or e.Col.Name = "贷方总账科目" Or e.Col.Name = "明细科目" Then
        '.AutoSizeRow(e.Row.Index)
    'End If
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1 'Count加上参数True
        r = .Rows(i,True) 'Rows也需要加上参数True
        If r.Level Then '如果是合计行
            .Cols("摘要").TextAlign = TextAlignEnum.Center
        End If
    Next
    If .Rows.Count < 10 Then
        .AddNew(10 - .Rows.Count)
    End If
End With

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


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

调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm,看哪一句代码出错

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


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

我加入这语句连弹窗都没有,表上没加载任何数据!
MessageBox.Show(Filter)

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


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

DataTables("收款凭证_Table1").deletefor( "[凭证号] Is Null")
msgbox(1)
DataTables("收款凭证_Table1").loadfilter = "1=2"
msgbox(2)
DataTables("收款凭证_Table1").load
msgbox(3)
Dim dr As DataRow = DataTables("财务数据源").SQLFind("[日期] = #" & (e.Form.Controls("rq").Value).Month & "# And [字号] = '" & e.Form.Controls("TextBox2").Value & "' And [凭证号] = '" & e.Form.Controls("dh").text + 1 & "'")
msgbox(4)
Dim dr1 As DataRow = DataTables("财务数据源").SQLFind("[日期] = #" & (e.Form.Controls("rq").Value).Month & "# And [字号] = '" & e.Form.Controls("TextBox2").Value & "' And [凭证号] = '" & e.Form.Controls("dh").text + 1 & "' And [借或贷] = '借'")
msgbox(5)
Forms("收款凭证").Controls("ComboBox3").text = dr1("会计科目")
msgbox(6)
……

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


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

http://www.foxtable.com/webhelp/topics/2911.htm,看看示例三的说明。这种问题经常性的错误就没有必要了

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


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

前面三行是删除窗口表上的行,第四、第五行是定义财务数据源符合条件的行,都不会有数据弹出,第6行也没有数据弹出,说明没找到定义的行,可查找的行日期等于窗口日期控件的月份,字号等于e.Form.Controls("TextBox2").Value,单号等于e.Form.Controls("dh").text - 1,应怎么写?

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


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

认真看5楼帮助,一遍看不懂,看10遍

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


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

红色标注代码报错
DataTables("收款凭证_Table1").deletefor( "[凭证号] Is Null")
DataTables("收款凭证_Table1").loadfilter = "1=2"
DataTables("收款凭证_Table1").load
With Tables("收款凭证_Table1")
    Dim drs As List(Of DataRow) = DataTables("财务数据源").Select("year([日期]) = #" & e.Form.Controls("rq").Value.year & "# And Month([日期]) = #" & e.Form.Controls("rq").Value.Month & "# And [字号] = '" & e.Form.Controls("TextBox2").Value & "' And [凭证号] = '" & e.Form.Controls("dh").text - 1 & "'")
    For Each dr As DataRow In drs
        If dr IsNot Nothing Then
            If dr("借或贷") = "借" Then
                Forms("收款凭证").Controls("ComboBox3").text = dr("会计科目")
                Forms("收款凭证").Controls("rq").text = dr("日期")
                Forms("收款凭证").Controls("dh").text = dr("凭证号")
                Forms("收款凭证").Controls("dh1").text = dr("安日期生成单号辅助列")
                Forms("收款凭证").Controls("TextBox2").text = dr("字号")
                Forms("收款凭证").Controls("RadioButton1").Checked = dr("已审核")
                Forms("收款凭证").Controls("shr").text = dr("审核人")
                Forms("收款凭证").Controls("TextBox1").text = dr("附件张数")
            ElseIf dr("借或贷") = "贷" Then
                Dim Filter As String = "安日期生成单号辅助列 = '" & dr("安日期生成单号辅助列") & "' And [字号] ='" & dr("字号") & "' And [凭证号] = '" & dr("凭证号") & "' And [借或贷] = '贷'"
                DataTables("收款凭证_Table1").LoadFilter = Filter '设置加载条件
                DataTables("收款凭证_Table1").Load() '加载数据
                If dr.IsNull("外币金额") And dr.IsNull("数量") Then
                    Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(0)
                    Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(0)
                    .SetColVisibleWidth("摘要|300|贷方总账科目|100|明细科目|250|金额|100")
                ElseIf dr.IsNull("外币金额") And dr.IsNull("数量") = False Then
                    Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(0)
                    Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(1)
                    .SetColVisibleWidth("摘要|300|贷方总账科目|100|明细科目|180|数量|60|单价|50|金额|60")
                ElseIf dr.IsNull("外币金额") = False And dr.IsNull("数量") Then
                    Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(1)
                    Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(0)
                    .SetColVisibleWidth("摘要|250|贷方总账科目|100|明细科目|160|币种|60|汇率|60|外币金额|60|金额|60")
                    .Cols("外币金额").GrandTotal = True
                ElseIf dr.IsNull("外币金额") = False And dr.IsNull("数量") = False Then
                    Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").controls("combobox2").items(1)
                    Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").controls("combobox1").items(1)
                    .SetColVisibleWidth("摘要|130|贷方总账科目|100|明细科目|110|数量|60|单价|60|币种|60|汇率|50|外币金额|60|外币金额|60|金额|60")
                    .Cols("外币金额").GrandTotal = True
                End If
            End If
        End If
    Next
    .Cols("贷方总账科目").DropForm = "科目"
    .Cols("金额").GrandTotal = True
    .GrandTotal = True
    If e.Col.Name = "摘要" Or e.Col.Name = "贷方总账科目" Or e.Col.Name = "明细科目" Then '自动行高报错
    .AutoSizeRow(e.Row.Index)
    End If
    Dim r As Row
    For i As Integer = 0 To .Rows.Count(True) - 1 'Count加上参数True
        r = .Rows(i,True) 'Rows也需要加上参数True
        If r.Level Then '如果是合计行
            .Cols("摘要").TextAlign = TextAlignEnum.Center
        End If
    Next
    If .Rows.Count < 10 Then
        .AddNew(10 - .Rows.Count)
    End If
End With

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


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

日期问题看:http://www.foxtable.com/webhelp/topics/1284.htm

表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

例如:

Tables("订单").Filter = "[产品] = 'PD01'"  '字符用单引号括起来
Tables("订单").Filter = "[日期] = #3/17/1999#"  '日期用#括起来
Tables("订单").Filter = "[折扣] = 0.1"  '数值直接使用


年份是一个完整的日期值吗?!!


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


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

哦,代码做在按钮上不能用e参数!

 回到顶部
总数 20 1 2 下一页