有两个表,一个出纳数据记账源、一个财务数据源,现我想做一个点击收、付款凭证窗品中的金额列单元格或点后台数据源表中的金额列单元格都能弹出共用的选单窗口,选单窗口中的表绑定出纳数据记账源表,并添加未选余额、本次外币录入金额、本次录入金额三列临时列,通过在选单窗口中的本次外币录入金额、本次录入金额输入数据后,双击或回车把数据录入收、付款凭证金额。
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
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.
关闭窗口,却又看到我要实现的窗口,主要原因是出纳数据记账源目前未录入数据,它是空表,请教应如何消除空表的报错?