Foxtable(狐表)用户栏目专家坐堂 → 窗口动态生成表的行怎样定义


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

主题:窗口动态生成表的行怎样定义

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


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
窗口动态生成表的行怎样定义  发帖心情 Post By:2021/1/27 15:37:00 [只看该作者]

  双击缴费情况表弹出窗口,然后通过窗口把缴费情况表中当前行单号相同的行显示到弹窗上,就象ERP中双击账上的行,弹出当前录入凭证,同一份凭证有很多行数据,因此定义dts行集合没错,因为只引用这部份行,现在的问题是如何定义弹出的窗口中的行,然后赋值,错误应该就出在这,你给出的
Dim r As DataRow = Forms("月租收费").Controls("Table1").Table.current.DataRow
能正确显示一行,显然不能只定义当前行,而应定义所有行,我一直问的就是这个。
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编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By: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

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


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/1/27 18:08:00 [只看该作者]

你在另帖上的回复
for each r As Row in Forms("月租收费").Controls("Table1").Table.Rows
生成很多重复行

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


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

你看缴费情况表DoubleClick事件中间注识的代码,月租收费窗口中的表是空表。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理2021012703.foxdb

密码:888888

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


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

去掉:i + = 1

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


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

没看懂表达的什么意思,截图说明一下

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


加好友 发短信
等级:八尾狐 帖子:1863 积分:10262 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/1/28 14:09:00 [只看该作者]

  哦,改用e.Row就没问题了,刚才我用Tables("缴费情况").Current来试,引用到窗口单上的行是从点击的当前行算第一行,向下引用两行到窗口上,不管单号是否相符,现在改用e.Row就没问题了。
[此贴子已经被作者于2021/1/28 14:09:48编辑过]

 回到顶部
总数 47 1 2 3 4 5 下一页