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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望: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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望: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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望: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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/1/27 18:17:00 [显示全部帖子]

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

密码:888888

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望: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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望: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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望: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编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望: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编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 17:37: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()
    With DataTables("月租收费_Table1")
        For i As Integer = .DataRows.count - 1 To 0 Step -1
            .DataRows(i).Delete
        Next
    End With
    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)("住址_房")
        r("姓名") = dts(i)("姓名")
        r("固定电话") = dts(i)("固定电话")
        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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 17:40:00 [显示全部帖子]

修改后保存回缴费情况表代码,前提作为查询条件的车牌号码不能改,否则原来的内容还在,又添加车牌号码修改后的内容。
Select Case e.StripItem.Name
    Case "保存" '保存代码
        If e.Form.Controls("rq").text = "" Then'当日期为空取消保存操作
            messagebox.show("请选择日期")
            Return
        ElseIf Tables("月租收费_Table1").Compute("Count([车牌号码])") = 0 Then '当窗口中的行为空取消保存操作
            Return
        Else
            For Each tr As DataRow In DataTables("月租收费_Table1").Select("[车牌号码] is not null")
                Dim dr As DataRow = DataTables("缴费情况").SQLFind("[单号] = '" & e.Form.Controls("dh").text & "' And ([已审核] = False Or [已审核] Is null)") '将窗口上的数据刷新替换保存到缴费情况表上,
                If dr IsNot Nothing Then
                    dr("日期") = e.Form.Controls("rq").text
                    dr("单号") = e.Form.Controls("dh").text
                    dr("分类") = DataTables("分类").DataRows(0)("分类")
                    dr("备注") = tr("备注")
                    dr("前缀") = "YZ"
                    dr("缴费_月租_起计日期") = tr("缴费_月租_起计日期")
                    dr("缴费_月租_止计日期") = tr("缴费_月租_止计日期")
                    dr("缴费_月租_缴费月数") = tr("缴费_月租_缴费月数")
                    dr("缴费_月租_月租单价") = tr("缴费_月租_月租单价")
                    dr("缴费_月租_缴费金额") = tr("缴费_月租_缴费金额")
                    dr.save
                ElseIf dr Is Nothing Then
                    dr = DataTables("缴费情况").addnew
                    dr("日期") = e.Form.Controls("rq").text
                    dr("单号") = e.Form.Controls("dh").text
                    dr("分类") = DataTables("分类").DataRows(0)("分类")
                    dr("车牌号码") = tr("车牌号码")
                    dr("备注") = tr("备注")
                    dr("前缀") = "YZ"
                    dr("缴费_月租_起计日期") = tr("缴费_月租_起计日期")
                    dr("缴费_月租_止计日期") = tr("缴费_月租_止计日期")
                    dr("缴费_月租_缴费月数") = tr("缴费_月租_缴费月数")
                    dr("缴费_月租_月租单价") = tr("缴费_月租_月租单价")
                    dr("缴费_月租_缴费金额") = tr("缴费_月租_缴费金额")
                    dr("录入员") = e.Form.Controls("lry").text
                    dr("操作人姓名") = User.Name & " " & Date.Now
                    dr.save
                End If
            Next
            DataTables("缴费情况").Load
        End If

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