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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望: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

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


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

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

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


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

这种逻辑应该放到datacolchanging事情处理。限制录入放到PrepareEdit,限制录入的结果放到datacolchanging。

红色的代码绝对不可能会报错。另外建议看看:http://www.foxtable.com/webhelp/topics/0605.htm

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


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


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

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


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

if 和end if是成对出现的,上面提示意思就是少了一个endif

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


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

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

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望: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编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望: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
还是没能自动行高啊。

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


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

3、全局表写代码的是ValidateEdit事件,窗口里开启的是AfterEdit事件,完全牛头不对马嘴,能解决的了才怪

一个字一个字理解一下,如果还是看不懂,拉个小学生帮忙解释一下

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望: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编辑过]

 回到顶部