Foxtable(狐表)用户栏目专家坐堂 → SQLTable动态表的绑定与设置显示行


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

主题:SQLTable动态表的绑定与设置显示行

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 11:34:00 [只看该作者]

思路是这样,代码应怎写?

 回到顶部
帅哥,在线噢!
有点蓝
  142楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106250 积分:540379 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/23 11:46:00 [只看该作者]

dim dh as string = Forms("月租收费").Controls("dh").text
if dh > "" then
dim y as integer = cint(dh,substring(3,4))
msgbox(y)
dim m as integer = cint(dh,substring(7,2))
msgbox(m)
Dim Days As Integer = Date.DaysInMonth(y,m)
Dim fd As Date = New Date(y,m,1) '获得该月的第一天
Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
if e.sender.value < fd orelse e.sender.value > ld
       e.cancel = True '如果是,取消操作
        MessageBox.Show("修改的日期不能超出已保存单号所属月份","提示")
end if
end if

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 14:15: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
            Dim drs As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = '" & Forms("月租收费").Controls("dh").text & "'")
            Dim trs As List(of DataRow) = DataTables("月租收费_Table1").Select("[车牌号码] is not null")
            If drs.count > 0 And trs.count > 0 And drs.count = trs.count Then
                For i As Integer = 0 To trs.count - 1
                    drs(i)("日期") = e.Form.Controls("rq").text
                    drs(i)("单号") = e.Form.Controls("dh").text
                    drs(i)("分类") = DataTables("分类").DataRows(0)("分类")
                    drs(i)("车牌号码") = trs(i)("车牌号码")
                    drs(i)("备注") = trs(i)("备注")
                    drs(i)("前缀") = "YZ"
                    drs(i)("缴费_月租_起计日期") = trs(i)("缴费_月租_起计日期")
                    drs(i)("缴费_月租_止计日期") = trs(i)("缴费_月租_止计日期")
                    drs(i)("缴费_月租_缴费月数") = trs(i)("缴费_月租_缴费月数")
                    drs(i)("缴费_月租_月租单价") = trs(i)("缴费_月租_月租单价")
                    drs(i)("缴费_月租_缴费金额") = trs(i)("缴费_月租_缴费金额")
                    drs(i).save
                Next
            ElseIf drs.count > 0 And trs.count > 0 And drs.count > trs.count Then
                For i As Integer = 0 To trs.count - 1
                    drs(i)("日期") = e.Form.Controls("rq").text
                    drs(i)("单号") = e.Form.Controls("dh").text
                    drs(i)("分类") = DataTables("分类").DataRows(0)("分类")
                    drs(i)("车牌号码") = trs(i)("车牌号码")
                    drs(i)("备注") = trs(i)("备注")
                    drs(i)("前缀") = "YZ"
                    drs(i)("缴费_月租_起计日期") = trs(i)("缴费_月租_起计日期")
                    drs(i)("缴费_月租_止计日期") = trs(i)("缴费_月租_止计日期")
                    drs(i)("缴费_月租_缴费月数") = trs(i)("缴费_月租_缴费月数")
                    drs(i)("缴费_月租_月租单价") = trs(i)("缴费_月租_月租单价")
                    drs(i)("缴费_月租_缴费金额") = trs(i)("缴费_月租_缴费金额")
                    drs(i).save
                Next
                For i1 As Integer = drs.count - 1 To trs.count Step -1
                    drs(i1).Delete
                Next
            ElseIf drs.count > 0 And trs.count > 0 And drs.count < trs.count Then
                For i2 As Integer = 0 To drs.count - 1
                    drs(i2)("日期") = e.Form.Controls("rq").text
                    drs(i2)("单号") = e.Form.Controls("dh").text
                    drs(i2)("分类") = DataTables("分类").DataRows(0)("分类")
                    drs(i2)("车牌号码") = trs(i2)("车牌号码")
                    drs(i2)("备注") = trs(i2)("备注")
                    drs(i2)("前缀") = "YZ"
                    drs(i2)("缴费_月租_起计日期") = trs(i2)("缴费_月租_起计日期")
                    drs(i2)("缴费_月租_止计日期") = trs(i2)("缴费_月租_止计日期")
                    drs(i2)("缴费_月租_缴费月数") = trs(i2)("缴费_月租_缴费月数")
                    drs(i2)("缴费_月租_月租单价") = trs(i2)("缴费_月租_月租单价")
                    drs(i2)("缴费_月租_缴费金额") = trs(i2)("缴费_月租_缴费金额")
                    drs(i2).save
                Next
                For i3 As Integer = drs.count To trs.count -1
                    Dim dr As DataRow = DataTables("缴费情况").addnew
                    dr("日期") = e.Form.Controls("rq").text
                    dr("单号") = e.Form.Controls("dh").text
                    dr("分类") = DataTables("分类").DataRows(0)("分类")
                    dr("车牌号码") = trs(i3)("车牌号码")
                    dr("备注") = trs(i3)("备注")
                    dr("前缀") = "YZ"
                    dr("缴费_月租_起计日期") = trs(i3)("缴费_月租_起计日期")
                    dr("缴费_月租_止计日期") = trs(i3)("缴费_月租_止计日期")
                    dr("缴费_月租_缴费月数") = trs(i3)("缴费_月租_缴费月数")
                    dr("缴费_月租_月租单价") = trs(i3)("缴费_月租_月租单价")
                    dr("缴费_月租_缴费金额") = trs(i3)("缴费_月租_缴费金额")
                    dr(i3).save
                Next
            ElseIf drs.count = 0 And trs.count > 0 Then
                For i As Integer = 0 To trs.count - 1
                    Dim dr As DataRow = DataTables("缴费情况").addnew
                    dr("日期") = e.Form.Controls("rq").text
                    dr("单号") = e.Form.Controls("dh").text
                    dr("分类") = DataTables("分类").DataRows(0)("分类")
                    dr("车牌号码") = trs(i)("车牌号码")
                    dr("备注") = trs(i)("备注")
                    dr("前缀") = "YZ"
                    dr("缴费_月租_起计日期") = trs(i)("缴费_月租_起计日期")
                    dr("缴费_月租_止计日期") = trs(i)("缴费_月租_止计日期")
                    dr("缴费_月租_缴费月数") = trs(i)("缴费_月租_缴费月数")
                    dr("缴费_月租_月租单价") = trs(i)("缴费_月租_月租单价")
                    dr("缴费_月租_缴费金额") = trs(i)("缴费_月租_缴费金额")
                    dr("录入员") = e.Form.Controls("lry").text
                    dr("操作人姓名") = User.Name & " " & Date.Now
                    dr.save
                Next
            End If
            DataTables("缴费情况").Load
        End If
End Select
不管窗口上的数据是否跟缴费情况表单号相同的数据相同,都安位置顺序替换,该怎么写?这种情况出现于有时要删除单据,为了让单号不断号,直接輸入新的内容,替换原单内容。

 回到顶部
帅哥,在线噢!
有点蓝
  144楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

DataTable不存在顺序这种东西,2个DataTable的顺序几乎不可能是一致的。其中一个改为使用Find查询定位

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


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

  但这种替换方法在财务里是常用的,比如删除一张会计凭证,删除后造成缺号,其他的单据已经打印,不可能老重排单号重新打印,这得浪费多少纸,ERP软件中都有这种替换功能,不行就一定要想办法实现,否则用户多大意义,往死里都要把这种功能做出来。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 15:19:00 [只看该作者]

单据修改在任何ERP软件里都有的功能,修改后如何保存,常用问题。

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 15:22:00 [只看该作者]

查出同单号的集合,再根据这集合的位置安顺序替换,不以内容为定位标准。
[此贴子已经被作者于2021/3/23 15:22:30编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  148楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106250 积分:540379 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/23 15:22:00 [只看该作者]

其中一个改为使用Find查询定位

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/23 16:05: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
    Case "取消" '取消代码
        e.Form.Close()
    Case "删除已保存单据" '删除代码
        e.Form.Close()
        Dim Result As DialogResult
        Result = MessageBox.Show("是否确定要删除此单?","提示",MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then
            DataTables("缴费情况").DeleteFor("[单号] =" & "'" & e.Form.Controls("dh").text & "'")
        Else
            Return
        End If
End Select

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


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

查询的条件只能去到单号,符合条件的行有很多行,无法精确定位,也就无法实现替换了!

 回到顶部