以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 窗口动态生成表的行怎样定义 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160283) |
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/27 15:37:00 -- 窗口动态生成表的行怎样定义 双击缴费情况表弹出窗口,然后通过窗口把缴费情况表中当前行单号相同的行显示到弹窗上,就象ERP中双击账上的行,弹出当前录入凭证,同一份凭证有很多行数据,因此定义dts行集合没错,因为只引用这部份行,现在的问题是如何定义弹出的窗口中的行,然后赋值,错误应该就出在这,你给出的
If e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_月租_缴费金额") Then Forms("临时收费录入").Open() ElseIf e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_临时停放_缴费金额") Then Forms("月租收费").Open() Forms("月租收费").Controls("rq").text = e.Row("日期") Forms("月租收费").Controls("dh").text = e.Row("单号") Forms("月租收费").Controls("lry").text = e.Row("录入员") Forms("月租收费").Controls("shr").text = e.Row("审核人") Dim dts As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = \'" & e.Row("单号") & "\'") For Each dt As DataRow In dts Dim r As DataRow = Forms("月租收费").Controls("Table1").Table.current.DataRow \'这样定义只显示一行 \'Dim r As DataRow = Forms("月租收费").Controls("Table1").Table.DataTable.DataRow \'这是我错误的定义 r("车牌号码") = dt("车牌号码") r("备注") = dt("备注") r("缴费_月租_起计日期") = dt("缴费_月租_起计日期") r("缴费_月租_止计日期") = dt("缴费_月租_止计日期") r("缴费_月租_月租单价") = dt("缴费_月租_月租单价") Next End If
[此贴子已经被作者于2021/1/27 15:41:19编辑过]
|
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/27 18:06:00 -- 我去年做的排赛代码,其中有这样一段引用代码,是从一个表引用到另一个表,效果是没问题的,道理一样,这段代码删除表上已有的行重新添加行,现无需添加,因已存在空行,只需定义窗口表上的行就行,你给我的循环定义,无法实现我要的效果。 tbl.Table.DataTable.DataRows.Clear Dim drs1 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[团体赛或个人赛] = \'" & lx & "\' And [棋赛名称] = \'" & di1 & "\' And [第几轮比赛] = \'" & di2 & "\' And [所属团体或个人分组] = \'" & Str & "\'","","日期 Desc,团体赛或个人赛,棋赛名称,所属团体或个人分组,排序 Desc") For i As Integer = 0 To drs1.Count - 1 Step 2 If i + 1 <= drs1.Count - 1 Dim nr As DataRow = tbl.Table.DataTable.AddNew() nr("桌号") = drs1(i)("排序") nr("红方_编号") = drs1(i)("编号") nr("红方_姓名") = drs1(i)("姓名") nr("黑方_编号") = drs1(i+1)("编号") nr("黑方_姓名") = drs1(i+1)("姓名") End If Next
|
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/27 18:08:00 -- 你在另帖上的回复 for each r As Row in Forms("月租收费").Controls("Table1").Table.Rows 生成很多重复行
|
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/27 18:17:00 -- 你看缴费情况表DoubleClick事件中间注识的代码,月租收费窗口中的表是空表。
密码:888888 |
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/27 19:18:00 -- 这样写只显示一行 If e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_月租_缴费金额") Then Forms("临时收费录入").Open() ElseIf e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_临时停放_缴费金额") Then Forms("月租收费").Open() Forms("月租收费").Controls("Table1").Table.DataTable.DataRows.Clear \'或 DataTables("月租收费_Table1").DataRows.Clear Forms("月租收费").Controls("rq").text = e.Row("日期") Forms("月租收费").Controls("dh").text = e.Row("单号") Forms("月租收费").Controls("lry").text = e.Row("录入员") Forms("月租收费").Controls("shr").text = e.Row("审核人") Dim dts As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = \'" & e.Row("单号") & "\'") For i As Integer = 0 To dts.count - 1 Dim r As DataRow = Forms("月租收费").Controls("Table1").Table.DataTable.AddNew() \'或 Dim r As DataRow = DataTables("月租收费_Table1").AddNew() r("车牌号码") = dts(i)("车牌号码") r("备注") = dts(i)("备注") r("缴费_月租_起计日期") = dts(i)("缴费_月租_起计日期") r("缴费_月租_止计日期") = dts(i)("缴费_月租_止计日期") r("缴费_月租_月租单价") = dts(i)("缴费_月租_月租单价") i + = 1 Next End If [此贴子已经被作者于2021/1/27 19:44:39编辑过]
|
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/27 22:27:00 -- \'方法二:效果并没有添加第二行数据。 If Tables("缴费情况").Current.IsNull("车牌号码") = False AndAlso Tables("缴费情况").Current.IsNull("缴费_月租_缴费金额") Then Forms("临时收费录入").Open() ElseIf Tables("缴费情况").Current.IsNull("车牌号码") = False AndAlso Tables("缴费情况").Current.IsNull("缴费_临时停放_缴费金额") Then Forms("月租收费").Open() Forms("月租收费").Controls("Table1").Table.DataTable.DataRows.Clear Forms("月租收费").Controls("rq").text = Tables("缴费情况").Current("日期") Forms("月租收费").Controls("dh").text = Tables("缴费情况").Current("单号") Forms("月租收费").Controls("lry").text = Tables("缴费情况").Current.DataRow("录入员") Forms("月租收费").Controls("shr").text = Tables("缴费情况").Current.DataRow("审核人") Dim dts As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = \'" & Forms("月租收费").Controls("dh").text & "\'") For i As Integer = 0 To dts.count - 1 Dim r As DataRow = DataTables("月租收费_Table1").AddNew() r("车牌号码") = dts(i)("车牌号码") r("备注") = dts(i)("备注") r("缴费_月租_起计日期") = dts(i)("缴费_月租_起计日期") r("缴费_月租_止计日期") = dts(i)("缴费_月租_止计日期") r("缴费_月租_月租单价") = dts(i)("缴费_月租_月租单价") i + = 1 Next If dts.count < 10 Then Dim r As DataRow = DataTables("月租收费_Table1").AddNew(10 - (dts.count)) End If End If |
||||
-- 作者:有点蓝 -- 发布时间:2021/1/28 9:06:00 -- 去掉:i + = 1 |
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/28 12:34:00 -- 这方法我点击同单号的第二行,窗口里显示的是从当前行开始算的两行数据,连不同单号的数据都带进来。 If e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_临时停放_缴费金额") = False Then Forms("临时收费录入").Open() DataTables("临时收费录入_Table1").DataRows.Clear Forms("临时收费录入").Controls("rq").text = e.Row("日期") Forms("临时收费录入").Controls("dh").text = e.Row("单号") Forms("临时收费录入").Controls("lry").text = e.Row("录入员") Forms("临时收费录入").Controls("shr").text = e.Row("审核人") Dim dts As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = \'" & Forms("临时收费录入").Controls("dh").text & "\'") For i As Integer = 0 To dts.count - 1 Dim r As DataRow = DataTables("临时收费录入_Table1").AddNew() r("车牌号码") = dts(i)("车牌号码") r("备注") = dts(i)("备注") r("缴费_临时停放_起计时间") = dts(i)("缴费_临时停放_起计时间") r("缴费_临时停放_止计时间") = dts(i)("缴费_临时停放_止计时间") Next If dts.count < 10 Then Dim r As DataRow = DataTables("临时收费录入_Table1").AddNew(10 - (dts.count)) End If ElseIf e.Row.IsNull("车牌号码") = False AndAlso e.Row.IsNull("缴费_月租_缴费金额") = False Then Forms("月租收费").Open() DataTables("月租收费_Table1").DataRows.Clear Forms("月租收费").Controls("rq").text = e.Row("日期") Forms("月租收费").Controls("dh").text = e.Row("单号") Forms("月租收费").Controls("lry").text = e.Row("录入员") Forms("月租收费").Controls("shr").text = e.Row("审核人") Dim dts As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = \'" & Forms("月租收费").Controls("dh").text & "\'") For i As Integer = 0 To dts.count - 1 Dim r As DataRow = DataTables("月租收费_Table1").AddNew() r("车牌号码") = dts(i)("车牌号码") r("备注") = dts(i)("备注") r("缴费_月租_起计日期") = dts(i)("缴费_月租_起计日期") r("缴费_月租_止计日期") = dts(i)("缴费_月租_止计日期") r("缴费_月租_月租单价") = dts(i)("缴费_月租_月租单价") Next If dts.count < 10 Then Dim r As DataRow = DataTables("月租收费_Table1").AddNew(10 - (dts.count)) End If End If [此贴子已经被作者于2021/1/28 13:34:45编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2021/1/28 13:59:00 -- 没看懂表达的什么意思,截图说明一下 |
||||
-- 作者:采菊东篱下 -- 发布时间:2021/1/28 14:09:00 -- 哦,改用e.Row就没问题了,刚才我用Tables("缴费情况").Current来试,引用到窗口单上的行是从点击的当前行算第一行,向下引用两行到窗口上,不管单号是否相符,现在改用e.Row就没问题了。 [此贴子已经被作者于2021/1/28 14:09:48编辑过]
|