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


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

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

美女呀,离线,留言给我吧!
采菊东篱下
  51楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  52楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  53楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  54楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  55楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  56楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

代码放在DataColChanged不对,我现在在棋协,回家再想。

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


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

单号根据控件上的日期生成不错,但一旦修改日期就重复再生成新的单号点保存重复录入了,所以要有条件生成单号,当缴费情况表已保存这张单号,从双击缴费情况表弹出的窗口修改数据时单号保持不变。
第4个问题,关闭了这个窗口又再弹出来。

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210321222936.png
图片点击可在新窗口打开查看



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


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

自动行高到底应怎改?

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


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

以下是引用有点蓝在2021/3/18 14:24:00的发言:
dt.GlobalHandler.AfterEdit = True放到窗口表设置datasouce之后
表是动态生成的,设置的代码都在AfterLoad事件里,不放这里放哪?没有你说的datasouce


 回到顶部
总数 98 上一页 1 2 3 4 5 6 7 8 9 10 下一页