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


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

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

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


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

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:小区车辆管理(2).rar


密码:888888
[此贴子已经被作者于2021/3/22 20:50:46编辑过]

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


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

日期是控件,按条件取消日期控件的修改代码写在全局表事件里不对吧?

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


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

你虽然帮我理了
写在全局表事件的AfterEdit事件代码,但依然弹出128楼提示的错,没有实现自动行高,还有我把
Dim yzrq As WinForm.DateTimePicker = e.Sender 'rq是日期控件
Dim d As Date = yzrq.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").Value & "'")
If c > 0 Then
    If d < fd Or d > ld Then
        e.cancel = True '如果是,取消操作
        MessageBox.Show("修改的日期不能超出已保存单号所属月份","提示")
    End If
End If
写到月租收费窗口日期控件的Validating事件里,窗口中的日期依然能修改,没取消。同样写在全局表事件DataColChanging事件中的代码:
'以这代码为准:
With Tables("月租收费_Table1")
    .DataTable.GlobalHandler.DataColChanging = True
End With

If Forms.contains("月租收费") = True Then
    Dim yzdh As WinForm.TextBox = Forms("月租收费").Controls("dh")'dh是单号控件
    Dim di As String = yzdh.Value 'di单号控件中的变量
    Dim yzrq As WinForm.DateTimePicker = Forms("月租收费").Controls("rq") 'rq是日期控件
    Dim d As Date = yzrq.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").Value & "'")
    If c > 0 Then
        If e.DataCol.Name = "车牌号码" AndAlso e.DataRow.IsNull("车牌号码") = False Then
            e.cancel = True
        End If
    End If
End If
月租收费窗口表中的车牌号码依然能修改!问题没解决!

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


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

把这段代码写到窗口的DataColChanging事件中
Dim c As Integer = DataTables("缴费情况").SQLCompute("Count([车牌号码])","[单号] = '" & e.Form.Controls("dh").Value & "'")
If c > 0 Then
    If e.DataCol.Name = "车牌号码" AndAlso e.DataRow.IsNull("车牌号码") = False Then
        e.cancel = True
    End If
End If
缴费情况表中的车牌号码取消修改了,但窗口中的车牌号码没有取消修改,它被修改了,但点窗口菜单按钮中的保存没保存到缴费情况表,窗口中的日期没实现安条件取消修改,点窗口菜单按钮中的保存直接把缴费情况表中的日期改变了!如此看来全局表事件的代码根本不起作用!
[此贴子已经被作者于2021/3/22 22:26:58编辑过]

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


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

这是两个表共用一个窗口,原来的表是录入表,双击缴费情况表的行弹出的是查询表,允许修改,我知道日期控件为什么错了,改为这样红色标注报错,没这样写法,修改后的日期跟修改前的日期比较才能判断是否超出,修改前的日期怎写?
Dim yzrq As WinForm.DateTimePicker = e.Sender 'rq是日期控件
Dim d As Date = yzrq.Value
Dim dj As Date = yzrq.OldValue
Dim y As Integer = dj.Year
Dim m As Integer = dj.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").Value & "'")
If c > 0 Then
    If d < fd Or d > ld Then
        e.cancel = True '如果是,取消操作
        MessageBox.Show("修改的日期不能超出已保存单号所属月份","提示")
    End If
End If

[此贴子已经被作者于2021/3/23 0:48:33编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2021/3/22 23:32: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
[此贴子已经被作者于2021/3/23 9:29:04编辑过]

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


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

我把月租收费窗口日期控件Validating事件代码改为这样报错:

图片点击可在新窗口打开查看此主题相关图片如下:22.png
图片点击可在新窗口打开查看
Dim drs As List(of DataRow) = DataTables("缴费情况").SQLSelect("[单号] = '" & Forms("月租收费").Controls("dh").Value & "'")
Dim yzrq As WinForm.DateTimePicker = e.Sender 'rq是日期控件
Dim d As Date = yzrq.Value
Dim dj As Date = drs("日期")(0)
Dim y As Integer = dj.Year
Dim m As Integer = dj.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").Value & "'")
If c > 0 Then
    If d < fd Or d > ld Then
        e.cancel = True '如果是,取消操作
        MessageBox.Show("修改的日期不能超出已保存单号所属月份","提示")
    End If
End If

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


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

不能用修改了的日期和从其自身月份得出所在月份的第一日、最后一日对比,这样没意义的,所以我改为窗口控件里的日期与保存在缴费情况表单号相同的第一行日期对比,缴费情况表与窗口单号相同的日期就是未修改时的日期,这样对比才能判断修改后的日期是否超出单号所属日期。
[此贴子已经被作者于2021/3/23 11:41:08编辑过]

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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望: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
不管窗口上的数据是否跟缴费情况表单号相同的数据相同,都安位置顺序替换,该怎么写?这种情况出现于有时要删除单据,为了让单号不断号,直接輸入新的内容,替换原单内容。

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