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


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

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

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


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

加载是你写给我的,我一直在追问无法保存问题,你写给我DataTables("缴费情况").Load这代码,其实这代码没用。

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


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

DataTables("缴费情况").Load适合在按钮里使用,不适合放在表事件里。代码不是随便放到那里都可以使用的。您想学开车,然后教练教的开汽车,结果您跑去火车上说这个教练不靠谱,教的方法都开不了火车......

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


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

红色标的代码有错了
Select Case e.StripItem.Name
    Case "保存" '保存代码
        Dim drs As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = '" & Forms("月租收费").Controls("dh").text & "' And ([已审核] = False Or [已审核] Is null)")'定义缴费情况表单号等于窗口控件上的单号?且未审核的行.
        If e.Form.Controls("rq").text = "" Then'当日期为空取消保存操作
            messagebox.show("请选择日期")
            Return
        ElseIf Tables("月租收费_Table1").Compute("Count([车牌号码])") = 0 Then'当窗口中的行为空取消保存操作
            Return
        ElseIf drs.count > 0 Then'当定义的行单号等于窗口控件上的单号且未审核的行数大于0,即单号相同的数据已存在
            For Each dr As DataRow In drs'将窗口上的数据刷新替换保存到缴费情况表上,
                Dim trs As List(of DataRow) = DataTables("月租收费_Table1").Select("[车牌号码] is not null")
                For i As Integer = 1 To trs.count - 1
                    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)("缴费_月租_月租单价")
                Next
            Next
            DataTables("缴费情况").SQLUpdate(drs)'保存数据
            DataTables("缴费情况").Load
[此贴子已经被作者于2021/3/19 19:51:58编辑过]

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


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

'下面是当缴费情况表没有窗口上的单号,把窗口上的数据添加到缴费情况表的代码:
        ElseIf drs.count = 0 Then
            For Each dt As DataRow In DataTables("月租收费_Table1").Select("[车牌号码] is not null")
                Dim r As DataRow = DataTables("缴费情况").SQLFind("[车牌号码] = '" & dt("车牌号码") & "'And [单号] = '" & e.Form.Controls("dh").text & "' And ([已审核] = False Or [已审核] Is null)")
                If r Is Nothing Then
                    r = DataTables("缴费情况").addnew
                    r("日期") = e.Form.Controls("rq").text
                    r("单号") = e.Form.Controls("dh").text
                    r("分类") = DataTables("分类").DataRows(0)("分类")
                    r("车牌号码") = dt("车牌号码")
                    r("备注") = dt("备注")
                    r("前缀") = "YZ"
                    r("缴费_月租_起计日期") = dt("缴费_月租_起计日期")
                    r("缴费_月租_止计日期") = dt("缴费_月租_止计日期")
                    r("缴费_月租_缴费月数") = dt("缴费_月租_缴费月数")
                    r("缴费_月租_月租单价") = dt("缴费_月租_月租单价")
                    r("录入员") = e.Form.Controls("lry").text
                    r("操作人姓名") = User.Name & " " & Date.Now
                End If
            Next
        End If
        DataTables("缴费情况").Save()
End Select

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


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

这两段代码是放在窗口上的代码,不是表事件,但缴费情况表上的数据没改变,即窗口上修改的数据无法保存到表上!
[此贴子已经被作者于2021/3/19 20:22:13编辑过]

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


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

我把窗口中缴费情况表中已录入单据的编辑保存代码改为(红色标注为重新定义的行代码):但依然无法保存,不知是否缴费情况表的DataColChanging事件又重新设回不允许重复输入所至。
Select Case e.StripItem.Name
    Case "保存" '保存代码
        Dim drs As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = '" & Forms("月租收费").Controls("dh").text & "' And ([已审核] = False Or [已审核] Is null)")'定义缴费情况表单号等于窗口控件上的单号?且未审核的行.
        If e.Form.Controls("rq").text = "" Then'当日期为空取消保存操作
            messagebox.show("请选择日期")
            Return
        ElseIf Tables("月租收费_Table1").Compute("Count([车牌号码])") = 0 Then '当窗口中的行为空取消保存操作
            Return
        ElseIf drs.count > 0 Then '当定义的行单号等于窗口控件上的单号且未审核的行数大于0,即单号相同的数据已存在
            For Each tr As DataRow In DataTables("月租收费_Table1").Select("[车牌号码] is not null")
                Dim dr As DataRow = DataTables("缴费情况").SQLFind("[单号] = '" & Forms("月租收费").Controls("dh").text & "' And [车牌号码] = '" & tr("车牌号码") & "' And ([已审核] = False Or [已审核] Is null)") '将窗口上的数据刷新替换保存到缴费情况表上,
                dr("日期") = e.Form.Controls("rq").text
                dr("分类") = DataTables("分类").DataRows(0)("分类")
                dr("备注") = tr("备注")
                dr("前缀") = "YZ"
                dr("缴费_月租_起计日期") = tr("缴费_月租_起计日期")
                dr("缴费_月租_止计日期") = tr("缴费_月租_止计日期")
                dr("缴费_月租_缴费月数") = tr("缴费_月租_缴费月数")
                dr("缴费_月租_月租单价") = tr("缴费_月租_月租单价")
            Next
            DataTables("缴费情况").SQLUpdate(drs)'保存数据
            DataTables("缴费情况").Load
'下面的代码省略没贴......
End Select
[此贴子已经被作者于2021/3/20 8:38:37编辑过]

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


加好友 发短信
等级:超级版主 帖子:106017 积分:539172 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/20 9:04: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("[单号] = '" & Forms("月租收费").Controls("dh").text & "' And [车牌号码] = '" & tr("车牌号码") & "' And ([已审核] = False Or [已审核] Is null)") '将窗口上的数据刷新替换保存到缴费情况表上,
if dr isnot nothing
                dr("日期") = e.Form.Controls("rq").text
                dr("分类") = DataTables("分类").DataRows(0)("分类")
                dr("备注") = tr("备注")
                dr("前缀") = "YZ"
                dr("缴费_月租_起计日期") = tr("缴费_月租_起计日期")
                dr("缴费_月租_止计日期") = tr("缴费_月租_止计日期")
                dr("缴费_月租_缴费月数") = tr("缴费_月租_缴费月数")
                dr("缴费_月租_月租单价") = tr("缴费_月租_月租单价")
dr.save
end if
            Next
DataTables("缴费情况").filter = ""
            DataTables("缴费情况").Load
'下面的代码省略没贴......
End Select


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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/20 16:27: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("[单号] = '" & Forms("月租收费").Controls("dh").text & "' And [车牌号码] = '" & tr("车牌号码") & "' And ([已审核] = False Or [已审核] Is null)") '将窗口上的数据刷新替换保存到缴费情况表上,
                If dr IsNot Nothing Then
                    If dr("车牌号码").OldValue <> tr("车牌号码") Then '数据已存在,修改了车牌号码
                        MessageBox.show(dr("车牌号码") & "车牌号码被修改不能保存","提示")
                        Return
                    ElseIf dr("单号").OldValue <> Forms("月租收费").Controls("dh").text Then '数据已存在,单号变动了
                        dr("单号") = dr("单号").OldValue 
                        dr.save
                    ElseIf dr("车牌号码") = tr("车牌号码") And dr("单号") = Forms("月租收费").Controls("dh").text Then '数据已存在,车牌号码和单号没变
                        dr("日期") = e.Form.Controls("rq").text
                        dr("分类") = DataTables("分类").DataRows(0)("分类")
                        dr("备注") = tr("备注")
                        dr("前缀") = "YZ"
                        dr("缴费_月租_起计日期") = tr("缴费_月租_起计日期")
                        dr("缴费_月租_止计日期") = tr("缴费_月租_止计日期")
                        dr("缴费_月租_缴费月数") = tr("缴费_月租_缴费月数")
                        dr("缴费_月租_月租单价") = tr("缴费_月租_月租单价")
                        dr("缴费_月租_缴费金额") = tr("缴费_月租_缴费金额")
                        dr.save
                    End If
                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
End Select

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


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

禁止修改数据到PrepareEdit事件处理:http://www.foxtable.com/webhelp/topics/0605.htm

不同事件有不同的作用,不要期望一个事件完成所有的功能,那就没有必要搞那么多事件了

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


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

一、在月租收费窗口的日期控件ValueChanged事件中编写入条件代码决定单号的自动生成:
如果缴费情况表不存在窗口控件上的单号,则自动生成单号,如果缴费情况表上已存在窗口控件上的单号,修改日期时不得起出单号所属月份,如果超出取消修改日期。红色标注代码报错
Dim yzdh As WinForm.TextBox = e.Form.Controls("dh")'dh是单号控件
Dim di As String = yzdh.Value 'di单号控件中的变量
Dim yzrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim d As Date = yzdh.Value
Dim y As Integer = d.Year
Dim m As Integer = d.Month
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) '获得该月的最后一天
Dim dts As Integer = DataTables("缴费情况").Compute("Count([车牌号码])","[单号] = '" & di & "'")
If e.Form.Controls("rq").value IsNot Nothing And dts = 0 Then ' 如果日期非空值且缴费情况表不存在窗口控件上的单号
    Dim bh As String = "YZ" & "-" & Format(d,"yyyyMM") & "-" '生成编号的前缀
    Dim max As String
    Dim idx As Integer
    Dim flt As String
    flt = "[前缀] = 'YZ' And [日期] >= #" & fd & "# And [日期] <= #" & ld & "#"
    max = DataTables("缴费情况").Compute("Max(单号)",flt) '取得该月的相同工程代码的最大单据编号
    If max > "" Then '如果存在最大单据编号
        idx = CInt(max.Substring(10,5)) + 1 '获得最大单据编号的后四位顺序号,并加1
    Else
        idx = 1 '否则顺序号等于1
    End If
    di = bh & Format(idx,"00000")
    yzdh.Value = di
End If
If dts > 0 And (d < fd Or d > ld) Then
    e.Cancel = True '如果是,取消操作
    messagebox.show("修改的日期不能超出已保存单号所属月份").
End If

二、在月租收费窗口的PrepareEdit写入事件红色标注代码报错,我要实现如果缴费情况表中存在窗口控件上的单号,修改的日期不能超出已保存单号所属月份,否则取消日期修改,取消车牌号码修改。
Dim yzdh As WinForm.TextBox = e.Form.Controls("dh")'dh是单号控件
Dim di As String = yzdh.Value 'di单号控件中的变量
Dim yzrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim d As Date = yzdh.Value
Dim y As Integer = d.Year
Dim m As Integer = d.Month
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) '获得该月的最后一天
Dim c As Integer = DataTables("缴费情况").SQLCompute("Count([车牌号码])","[单号] = '" & Forms("月租收费").Controls("dh").text & "'")
If c > 0 Then
    If d < fd Or d > ld Then
        e.Cancel = True '如果是,取消操作
        messagebox.show("修改的日期不能超出已保存单号所属月份").
    End If
    If e.Col.Name = "车牌号码" AndAlso e.Row.IsNull("车牌号码") = False Then
        e.Cancel = True
    End If
End If

三、还有我问了几天录入记账凭证、月租收费、临时停车、其他收费录入窗口无法自动行高,一直不得解决,继续追问,你说你看没问题,我却在我的项目中看不到自动行高,何解?

四、凡在窗口管理上打开设计窗口,点右上角的红色X,匀反复重新关闭、打开,关闭、打开几次,点右下角的关闭按钮没这现象,应是软件功能问题!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理(123).rar

密码:888888
[此贴子已经被作者于2021/3/21 18:54:41编辑过]

 回到顶部