以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  选单问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171025)

--  作者:采菊东篱下
--  发布时间:2021/8/14 17:13:00
--  选单问题
有两个表,一个出纳数据记账源、一个财务数据源,现我想做一个点击收、付款凭证窗品中的金额列单元格或点后台数据源表中的金额列单元格都能弹出共用的选单窗口,选单窗口中的表绑定出纳数据记账源表,并添加未选余额、本次外币录入金额、本次录入金额三列临时列,通过在选单窗口中的本次外币录入金额、本次录入金额输入数据后,双击或回车把数据录入收、付款凭证金额。

我在会计选出纳账数据窗口中的AfterLoad事件写入:

If e.Form.DropTable IsNot Nothing Then
    Select Case e.Form.DropTable.Name
        Case "财务数据源"
            Tables("会计选出纳账数据_Table1").SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|币种|50|借方_外币金额|80|借方_金额|80|贷方_外币金额|80|贷方_金额|80")
            Dim ckb As DataTable = e.Form.Controls("Table1").Table.DataTable
            If ckb.DataCols.Contains("未选余额") = False And ckb.DataCols.Contains("本次外币录入金额") = False And ckb.DataCols.Contains("本次录入金额") = False Then
                ckb.DataCols.add("未选余额", Gettype(Double))
                ckb.DataCols.add("本次外币录入金额", Gettype(Double))
                ckb.DataCols.add("本次录入金额", Gettype(Double))
            End If
            With Tables("会计选出纳账数据_Table1")
                .Cols("未选余额").Width = 80
                .Cols("本次外币录入金额").Width = 80
                .Cols("本次录入金额").Width = 80
            End With
            With DataTables("会计选出纳账数据_Table1")
                .DataCols("借方_外币金额").SetFormat("#,###.##")
                .DataCols("借方_金额").SetFormat("#,###.##")
                .DataCols("贷方_外币金额").SetFormat("#,###.##")
                .DataCols("贷方_金额").SetFormat("#,###.##")
                .DataCols("未选余额").SetFormat("#,###.##")
                .DataCols("本次外币录入金额").SetFormat("#,###.##")
                .DataCols("本次录入金额").SetFormat("#,###.##")
            End With
    End Select
Else
    Select Case e.Form.DropDownBox.Form.Name
        Case "出纳录入收款数据"
            If Forms("出纳录入收款数据").Controls("ComboBox1").text = Forms("出纳录入收款数据").Controls("ComboBox1").Items(0) Then
                Tables("会计选出纳账数据_Table1").SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|借方_金额|80")
            ElseIf Forms("出纳录入收款数据").Controls("ComboBox1").text = Forms("出纳录入收款数据").Controls("ComboBox1").Items(1) Then
                Tables("会计选出纳账数据_Table1").SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|币种|50|借方_外币金额|80|借方_金额|80")
            End If
            Dim ckb As DataTable = e.Form.Controls("Table1").Table.DataTable
            If ckb.DataCols.Contains("未选余额") = False And ckb.DataCols.Contains("本次外币录入金额") = False And ckb.DataCols.Contains("本次录入金额") = False Then
                ckb.DataCols.add("未选余额", Gettype(Double))
                ckb.DataCols.add("本次外币录入金额", Gettype(Double))
                ckb.DataCols.add("本次录入金额", Gettype(Double))
            End If
            With Tables("会计选出纳账数据_Table1")
                .Cols("未选余额").Width = 80
                .Cols("本次外币录入金额").Width = 80
                .Cols("本次录入金额").Width = 80
            End With
            With DataTables("会计选出纳账数据_Table1")
                .DataCols("借方_外币金额").SetFormat("#,###.##")
                .DataCols("借方_金额").SetFormat("#,###.##")
                .DataCols("未选余额").SetFormat("#,###.##")
                .DataCols("本次外币录入金额").SetFormat("#,###.##")
                .DataCols("本次录入金额").SetFormat("#,###.##")
            End With
        Case "出纳录入支出数据"
            If Forms("出纳录入支出数据").Controls("ComboBox1").text = Forms("出纳录入支出数据").Controls("ComboBox1").Items(0) Then
                Tables("会计选出纳账数据_Table1").SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|贷方_金额|80")
            ElseIf Forms("出纳录入支出数据").Controls("ComboBox1").text = Forms("出纳录入支出数据").Controls("ComboBox1").Items(1) Then
                Tables("会计选出纳账数据_Table1").SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|币种|50|贷方_外币金额|80|贷方_金额|80")
            End If
            Dim ckb As DataTable = e.Form.Controls("Table1").Table.DataTable
            If ckb.DataCols.Contains("未选余额") = False And ckb.DataCols.Contains("本次外币录入金额") = False And ckb.DataCols.Contains("本次录入金额") = False Then
                ckb.DataCols.add("未选余额", Gettype(Double))
                ckb.DataCols.add("本次外币录入金额", Gettype(Double))
                ckb.DataCols.add("本次录入金额", Gettype(Double))
            End If
            With Tables("会计选出纳账数据_Table1")
                .Cols("未选余额").Width = 80
                .Cols("本次外币录入金额").Width = 80
                .Cols("本次录入金额").Width = 80
            End With
            With DataTables("会计选出纳账数据_Table1")
                .DataCols("贷方_外币金额").SetFormat("#,###.##")
                .DataCols("贷方_金额").SetFormat("#,###.##")
                .DataCols("未选余额").SetFormat("#,###.##")
                .DataCols("本次外币录入金额").SetFormat("#,###.##")
                .DataCols("本次录入金额").SetFormat("#,###.##")
            End With
    End Select
End If

DropDownClosed事件中写入:

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("会计选出纳账数据_Table1")
    If tbl.Current IsNot Nothing Then
        Select Case e.Form.DropTable.Name
            Case "财务数据源"
                If Tables("财务数据源").Current("字号") = "现收" Or Tables("财务数据源").Current("字号") = "银收" Then
                    e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                    Tables("财务数据源_Table1").Current("外币金额") = tbl.Current("本次外币录入金额")
                    Tables("财务数据源_Table1").Current("借方金额") = tbl.Current("本次录入金额")
                    Tables("财务数据源_Table1").Current("外币借方金额") = tbl.Current("本次外币录入金额")
                ElseIf Tables("财务数据源").Current("字号") = "现付" Or Tables("财务数据源").Current("字号") = "银付" Then
                    e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                    Tables("财务数据源_Table1").Current("外币金额") = tbl.Current("本次外币录入金额")
                    Tables("财务数据源_Table1").Current("贷方金额") = tbl.Current("本次录入金额")
                    Tables("财务数据源_Table1").Current("外币贷方金额") = tbl.Current("本次外币录入金额")
                End If
                If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
                    e.Form.DropTable.FinishEditing()
                Else \'如果是通过窗口下拉的
                    e.Form.DropDownBox.WriteValue()
                End If
        End Select
    End If
    Select Case e.Form.DropDownBox.Form.Name
        Case "收款凭证"
            If Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").Controls("ComboBox1").Items(0) Then
                e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
            ElseIf Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").Controls("ComboBox1").Items(1) Then
                e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                Tables("收款凭证_Table1").Current("外币金额") = tbl.Current("本次外币录入金额")
            End If
            If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
                e.Form.DropTable.FinishEditing()
            Else \'如果是通过窗口下拉的
                e.Form.DropDownBox.WriteValue()
            End If
        Case "付款凭证"
            If Forms("付款凭证").Controls("ComboBox1").text = Forms("付款凭证").Controls("ComboBox1").Items(0) Then
                e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
            ElseIf Forms("付款凭证").Controls("ComboBox1").text = Forms("付款凭证").Controls("ComboBox1").Items(1) Then
                e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                Tables("付款凭证_Table1").Current("外币金额") = tbl.Current("本次外币录入金额")
            End If
            If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
                e.Form.DropTable.FinishEditing()
            Else \'如果是通过窗口下拉的
                e.Form.DropDownBox.WriteValue()
            End If
    End Select
End If

总是提示:不存在会计选出纳账数据_Table1
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.29.1
错误所在事件:AfterLoad
详细错误信息:
Object reference not set to an instance of an object.


及:
.NET Framework 版本:4.0.30319.17929
Foxtable 版本:2021.5.29.1
错误所在事件:DropDownClosed
详细错误信息:
Object reference not set to an instance of an object.
关闭窗口,却又看到我要实现的窗口,主要原因是出纳数据记账源目前未录入数据,它是空表,请教应如何消除空表的报错?
[此贴子已经被作者于2021/8/14 17:14:17编辑过]

--  作者:有点蓝
--  发布时间:2021/8/14 17:22:00
--  
请先调试,然后指出是哪一句代码出错?

提示:不存在
会计选出纳账数据_Table1可能原因
1、窗口名称不是:会计选出纳账数据
2、窗口表控件名称不是:Table1
3、这个窗口表表类型不是副本,或者sqltable。而是normal表:http://www.foxtable.com/webhelp/topics/1905.htm

--  作者:采菊东篱下
--  发布时间:2021/8/14 20:53:00
--  

AfterLoad事件:

With Tables("会计选出纳账数据_Table1")
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.CommandText = "Select 日期,出纳入账顺序号,摘要,会计科目,明细科目,币种,借方_外币金额,借方_金额,贷方_外币金额,贷方_金额 fr om {出纳数据记账源} Where [核对] = False Or [核对] Is Null"
    dt = cmd.ExecuteReader()
    .DataSource = dt
    Dim ckb As DataTable = e.Form.Controls("Table1").Table.DataTable
    If ckb.DataCols.Contains("未选余额") = False And ckb.DataCols.Contains("本次外币录入金额") = False And ckb.DataCols.Contains("本次录入金额") = False Then
        ckb.DataCols.add("未选余额", Gettype(Double))
        ckb.DataCols.add("本次外币录入金额", Gettype(Double))
        ckb.DataCols.add("本次录入金额", Gettype(Double))
    End If
    DataTables("会计选出纳账数据_Table1").DataCols("借方_外币金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("借方_金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("贷方_外币金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("贷方_金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("未选余额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("本次外币录入金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("本次录入金额").SetFormat("#,###.##")
    If e.Form.DropTable IsNot Nothing Then
        Select Case e.Form.DropTable.Name
            Case "财务数据源"
                .SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|币种|50|借方_外币金额|80|借方_金额|80|贷方_外币金额|80|贷方_金额|80|未选余额|80|本次外币录入金额|80|本次录入金额|80")
            Case "收款凭证_Table1"
                If Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").Controls("ComboBox2").Items(0) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|借方_金额|80|未选余额|80|本次录入金额|80")
                ElseIf Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").Controls("ComboBox2").Items(1) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|币种|50|借方_外币金额|80|借方_金额|80|未选余额|80|本次外币录入金额|80|本次录入金额|80")
                End If
            Case "付款凭证_Table1"
                If Forms("付款凭证").Controls("ComboBox2").text = Forms("付款凭证").Controls("ComboBox2").Items(0) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|贷方_金额|80|未选余额|80|本次录入金额|80")
                ElseIf Forms("付款凭证").Controls("ComboBox2").text = Forms("付款凭证").Controls("ComboBox2").Items(1) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|40|摘要|250|会计科目|80|明细科目|150|币种|50|贷方_外币金额|80|贷方_金额|80|未选余额|80|本次外币录入金额|80|本次录入金额|80")
                End If
        End Select
        .AutoSizeRows
        .SetHeaderRowHeight(20)
    End If
End With

DropDownClosed事件

If e.Selected Then \'如果选择了值
    Dim tbl As Table = Tables("会计选出纳账数据_Table1")
    If tbl.Current IsNot Nothing Then
        Select Case e.Form.DropTable.Name
            Case "财务数据源"
                With Tables("财务数据源")
                    If .Current("字号") = "现收" Or .Current("字号") = "银收" And (tbl.Current.IsNull("本次录入金额") = False Or tbl.Current.IsNull("本次外币录入金额") = False) Then
                        e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                        .Current("外币金额") = tbl.Current("本次外币录入金额")
                        .Current("借方金额") = tbl.Current("本次录入金额")
                        .Current("外币借方金额") = tbl.Current("本次外币录入金额")
                    ElseIf .Current("字号") = "现付" Or .Current("字号") = "银付" And (tbl.Current.IsNull("本次录入金额") = False Or tbl.Current.IsNull("本次外币录入金额") = False) Then
                        e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                        .Current("外币金额") = tbl.Current("本次外币录入金额")
                        .Current("贷方金额") = tbl.Current("本次录入金额")
                        .Current("外币贷方金额") = tbl.Current("本次外币录入金额")
                    End If
                    If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
                        e.Form.DropTable.FinishEditing()
                    Else \'如果是通过窗口下拉的
                        e.Form.DropDownBox.WriteValue()
                    End If
                End With
            Case "收款凭证_Table1"
                If Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").Controls("ComboBox1").Items(0) And tbl.Current.IsNull("本次录入金额") = False Then
                    e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                ElseIf Forms("收款凭证").Controls("ComboBox1").text = Forms("收款凭证").Controls("ComboBox1").Items(1) And tbl.Current.IsNull("本次录入金额") = False And tbl.Current.IsNull("本次外币录入金额") = False Then
                    e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                    Tables("收款凭证_Table1").Current("外币金额") = tbl.Current("本次外币录入金额")
                End If
                If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
                    e.Form.DropTable.FinishEditing()
                Else \'如果是通过窗口下拉的
                    e.Form.DropDownBox.WriteValue()
                End If
            Case "付款凭证_Table1"
                If Forms("付款凭证").Controls("ComboBox1").text = Forms("付款凭证").Controls("ComboBox1").Items(0) And tbl.Current.IsNull("本次录入金额") = False Then
                    e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                ElseIf Forms("付款凭证").Controls("ComboBox1").text = Forms("付款凭证").Controls("ComboBox1").Items(1) And tbl.Current.IsNull("本次录入金额") = False And tbl.Current.IsNull("本次外币录入金额") = False Then
                    e.Form.DropDownBox.Value = tbl.Current("本次录入金额")
                    Tables("付款凭证_Table1").Current("外币金额") = tbl.Current("本次外币录入金额")
                End If
                If e.Form.DropTable IsNot Nothing Then \'如果是通过表下拉的
                    e.Form.DropTable.FinishEditing()
                Else \'如果是通过窗口下拉的
                    e.Form.DropDownBox.WriteValue()
                End If
        End Select
    End If
End If

图片点击可在新窗口打开查看

问题解决了。
[此贴子已经被作者于2021/8/15 19:36:45编辑过]

--  作者:采菊东篱下
--  发布时间:2021/8/15 22:40:00
--  
能不能在财务数据源表如果会计科目不是1001 库存现金或1002 银行存款就不显示下拉窗口,或下拉窗口没数据显示?我红色代码这样写好象不对。
With Tables("会计选出纳账数据_Table1")
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.CommandText = "Select 日期,出纳入账顺序号,安日期生成单号辅助列,摘要,会计科目,明细科目,币种,借方_外币金额,借方_金额,贷方_外币金额,贷方_金额 fr om {出纳数据记账源} Where [核对] = False Or [核对] Is Null"
    dt = cmd.ExecuteReader()
    .DataSource = dt
    Dim ckb As DataTable = e.Form.Controls("Table1").Table.DataTable
    If ckb.DataCols.Contains("未选余额") = False And ckb.DataCols.Contains("本次外币录入金额") = False And ckb.DataCols.Contains("本次录入金额") = False Then
        ckb.DataCols.add("未选余额", Gettype(Double))
        ckb.DataCols.add("本次外币录入金额", Gettype(Double))
        ckb.DataCols.add("本次录入金额", Gettype(Double))
    End If
    DataTables("会计选出纳账数据_Table1").DataCols("借方_外币金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("借方_金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("贷方_外币金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("贷方_金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("未选余额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("本次外币录入金额").SetFormat("#,###.##")
    DataTables("会计选出纳账数据_Table1").DataCols("本次录入金额").SetFormat("#,###.##")
    If e.Form.DropTable IsNot Nothing Then
        Select Case e.Form.DropTable.Name
            Case "财务数据源"
                If Tables("财务数据源").Current("会计科目") = "1001 库存现金" Or Tables("财务数据源").Current("会计科目") = "1002 银行存款" Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|50|安日期生成单号辅助列|100|摘要|250|会计科目|80|明细科目|150|币种|50|借方_外币金额|80|借方_金额|80|贷方_外币金额|80|贷方_金额|80|未选余额|80|本次外币录入金额|80|本次录入金额|80")
                End If
            Case "收款凭证_Table1"
                If Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").Controls("ComboBox2").Items(0) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|50|安日期生成单号辅助列|100|摘要|250|会计科目|80|明细科目|150|借方_金额|80|未选余额|80|本次录入金额|80")
                ElseIf Forms("收款凭证").Controls("ComboBox2").text = Forms("收款凭证").Controls("ComboBox2").Items(1) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|50|安日期生成单号辅助列|100|摘要|250|会计科目|80|明细科目|150|币种|50|借方_外币金额|80|借方_金额|80|未选余额|80|本次外币录入金额|80|本次录入金额|80")
                End If
            Case "付款凭证_Table1"
                If Forms("付款凭证").Controls("ComboBox2").text = Forms("付款凭证").Controls("ComboBox2").Items(0) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|50|安日期生成单号辅助列|100|摘要|250|会计科目|80|明细科目|150|贷方_金额|80|未选余额|80|本次录入金额|80")
                ElseIf Forms("付款凭证").Controls("ComboBox2").text = Forms("付款凭证").Controls("ComboBox2").Items(1) Then
                    .SetColVisibleWidth("日期|60|出纳入账顺序号|50|安日期生成单号辅助列|100|摘要|250|会计科目|80|明细科目|150|币种|50|贷方_外币金额|80|贷方_金额|80|未选余额|80|本次外币录入金额|80|本次录入金额|80")
                End If
        End Select
        .AutoSizeRows
        .SetHeaderRowHeight(45)
    End If
End With

--  作者:有点蓝
--  发布时间:2021/8/15 22:54:00
--  
"财务数据源"prepareedit事件

If e.IsFocusCell Then
    If e.Col.Name = "某下拉窗口列" AndAlso (e.Row("会计科目") = "1001 库存现金" orelse e.Row("会计科目") = "1002 银行存款") Then
        e.Col.DropForm  = "某下拉窗口"
    Else
        e.Col.DropForm  = Nothing         
    End If
End If

--  作者:采菊东篱下
--  发布时间:2021/8/15 23:14:00
--  
这样写连当前行会计科目为空的下拉窗口都没了,不行。
--  作者:采菊东篱下
--  发布时间:2021/8/15 23:45:00
--  
改为这样可以了:
If e.IsFocusCell Then
    If e.Col.Name = "金额" AndAlso (e.Row("会计科目") = "1001 库存现金" OrElse e.Row("会计科目") = "1002 银行存款") Then
        e.Col.DropForm  = "会计选出纳账数据"
    ElseIf e.Col.Name = "金额" AndAlso (e.Row("会计科目") <> "1001 库存现金" OrElse e.Row("会计科目") <> "1002 银行存款") Then
        e.Col.DropForm  = Nothing
    End If
End If

--  作者:采菊东篱下
--  发布时间:2021/8/16 11:55:00
--  
我想计算当前表中的未选余额(注:弹出的选单表)

这样写在DropDownOpened事件中报错

Dim dr As Row = CurrentTable.Current
If e.Form.DropTable IsNot Nothing Then
    Select Case e.Form.DropTable.Name
        Case "财务数据源"
            dr("未选余额") = DataTables("出纳数据记账源").Compute("Sum(借方_金额)", "[出纳入账顺序号] =\'" & dr("出纳入账顺序号") & "\'And [安日期生成单号辅助列] = \'" & dr("安日期生成单号辅助列") & "\'") _
            - DataTables("财务数据源").Compute("Sum(金额)", "[出纳入账顺序号] =\'" & dr("出纳入账顺序号") & "\'And [出纳账安日期生成单号辅助列] = \'" & dr("安日期生成单号辅助列") & "\' And [借或贷] = \'" & dr("借或贷") & "\'")
        Case "收款凭证_Table1"
            dr("未选余额") = DataTables("出纳数据记账源").Compute("Sum(借方_金额)", "[出纳入账顺序号] =\'" & dr("出纳入账顺序号") & "\'And [安日期生成单号辅助列] = \'" & dr("安日期生成单号辅助列") & "\'") _
            - Tables("收款凭证_Table1").Compute("Sum(金额)")
        Case "付款凭证_Table1"
            dr("未选余额") = DataTables("出纳数据记账源").Compute("Sum(借方_金额)", "[出纳入账顺序号] =\'" & dr("出纳入账顺序号") & "\'And [安日期生成单号辅助列] = \'" & dr("安日期生成单号辅助列") & "\'") _
            - Tables("付款凭证_Table1").Compute("Sum(金额)")
    End Select
End If

--  作者:有点蓝
--  发布时间:2021/8/16 13:45:00
--  
Dim dr As Row = CurrentTable.Current
if dr isnot nothing then
If e.Form.DropTable IsNot Nothing Then

--  作者:采菊东篱下
--  发布时间:2022/4/8 17:32:00
--  
为什么把这段代码写在PrepareEdit事件,第一次点击财务数据源表单元格时出现焦点不在点击单元格上?注识掉这段代码就没出现这种现象?
If e.IsFocusCell Then
    If e.Col.Name = "金额" Then
        If (e.Row("字号") = "现收" OrElse e.Row("字号") = "银收" OrElse e.Row("字号") = "现付" OrElse e.Row("字号") = "银付") AndAlso (e.Row("会计科目") = "1001 库存现金" OrElse e.Row("会计科目") = "1002 银行存款") Then
            e.Col.DropForm  = "会计选出纳账数据"
            Tables("财务数据源").Cols("借方金额").DropForm = Nothing
            Tables("财务数据源").Cols("贷方金额").DropForm = Nothing
            e.Col.DropForm  = "会计选出纳账数据"
        ElseIf (e.Row("字号") = "现收" OrElse e.Row("字号") = "银收" OrElse e.Row("字号") = "现付" OrElse e.Row("字号") = "银付") AndAlso (e.Row("会计科目") <> "1001 库存现金" OrElse e.Row("会计科目") <> "1002 银行存款") Then
            e.Col.DropForm  = Nothing
            Tables("财务数据源").Cols("借方金额").DropForm = Nothing
            Tables("财务数据源").Cols("贷方金额").DropForm = Nothing
        End If
    End If
ElseIf e.Col.Name = "借方金额" Then
    If e.Row("字号") = "转字" AndAlso e.Row("会计科目") = "1015 其他货币资金" Then
        e.Col.DropForm  = "会计选出纳账数据"
        Tables("财务数据源").Cols("金额").DropForm = Nothing
    ElseIf e.Row("字号") = "转字" AndAlso e.Row("会计科目") <> "1015 其他货币资金" Then
        e.Col.DropForm  = Nothing
        Tables("财务数据源").Cols("金额").DropForm = Nothing
    End If
ElseIf e.Col.Name = "贷方金额" Then
    If e.Row("字号") = "转字" AndAlso e.Row("会计科目") = "1015 其他货币资金" Then
        e.Col.DropForm  = "会计选出纳账数据"
        Tables("财务数据源").Cols("金额").DropForm = Nothing
    ElseIf e.Row("字号") = "转字" AndAlso e.Row("会计科目") <> "1015 其他货币资金" Then
        e.Col.DropForm  = Nothing
        Tables("财务数据源").Cols("金额").DropForm = Nothing
    End If
End If