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


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

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

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


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

我开始也是这样直接判断控件上是否有单号,不能这样判断,改了日期又生成新的单号,保存就又保存一次了,但内容依然是原来的数据,所以不能这样判断,我试过了,这样会搞乱数据的。

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


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

上面的代码已经判断了
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

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


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

以保存了的为准,不然没保存前点错日期不让修改重新生成单号不可能吧?
[此贴子已经被作者于2021/3/21 22:56:36编辑过]

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


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

二、在月租收费窗口的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

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


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

这个问题怎解决?已保存的单号修改的日期不能超出单号所属日期,否则取消日期修改,同样已保存的单据,从双击缴费情况表弹窗修改的数据车牌号码不能修改,因为改后就不符合条件,变成缴费情况表没有的数据,再生出新数据了,所以要取消车牌号码修改。上面红色的代码报错。

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


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


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20210321231037.png
图片点击可在新窗口打开查看
就是报错死活不让保存!

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


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

我知道,可是我觉没少啊,重排不是对应了吗?

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


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

哦,改过来了,放到DataColChanging事件改为:
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("修改的日期不能超出已保存单号所属月份","提示")
    ElseIf e.DataCol.Name = "车牌号码" AndAlso e.DataRow.IsNull("车牌号码") = False Then
        e.Cancel = True
    End If
End If



自动行高我还不会。
[此贴子已经被作者于2021/3/21 23:33:53编辑过]

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


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

窗口的AfterEdit事件我已经放了:
With Tables("月租收费_Table1")
    .DataTable.GlobalHandler.AfterEdit = True
End With
还是没能自动行高啊。

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


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

提示这有错:

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("修改的日期不能超出已保存单号所属月份","提示")
    ElseIf e.DataCol.Name = "车牌号码" AndAlso e.DataRow.IsNull("车牌号码") = False Then
        e.Cancel = True
    End If
End If
[此贴子已经被作者于2021/3/22 0:12:46编辑过]

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