Foxtable(狐表)用户栏目专家坐堂 → 表A新增行 根据表A的条件 在表B生成数据.


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

主题:表A新增行 根据表A的条件 在表B生成数据.

帅哥哟,离线,有人找我吗?
夜点蚊香
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:576 积分:4394 威望:0 精华:0 注册:2020/4/15 19:53:00
表A新增行 根据表A的条件 在表B生成数据.  发帖心情 Post By:2020/10/20 15:23:00 [只看该作者]

表A 条件字段   日期   天数  星期  上午/下午

具体条件    2020年10月20日   100天  星期二  上午

根据 条件在表B新增数据行, 把 2020年10月20日 以后100天内的 星期二 单独挑选出来, 并且 把上午字段也写入 表B

表B 字段   日期   星期   上午/下午


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


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

请上传实例说明

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


加好友 发短信
等级:二尾狐 帖子:576 积分:4394 威望:0 精华:0 注册:2020/4/15 19:53:00
排课表时候进行使用  发帖心情 Post By:2020/10/20 15:32:00 [只看该作者]

学生缴费以后,每年48节课  每周二 下午上课  开始上课时间 2020年 10月20日
然后把课程信息排出来,到时间提醒学生上课.

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


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

获取100天内的星期二?

Dim d As Date = #10/20/2020#
Dim d2 As Date = d.AddDays(100)
Dim i As Integer = 1
Do While d <= d2
    If d.DayOfWeek = 2 Then
        Output.Show(d)
        i = 7
    End If
    d = d.AddDays(i)
Loop


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


加好友 发短信
等级:二尾狐 帖子:576 积分:4394 威望:0 精华:0 注册:2020/4/15 19:53:00
  发帖心情 Post By:2020/10/20 21:32:00 [只看该作者]

帮忙看一下改的代码对不对
Dim d As Date = DataTables("表A").DataCols("日期")
Dim d2 As Date = d.AddDays(Tables("表A").Cols("天数"))
Dim i As Integer = 1
Do While d <= d2
    If d.DayOfWeek = Tables("表A").Cols("星期") Then
        Tables("表B").addnew()
        Dim b2 = DataTables("表B").DataCols("日期")
        B2 = D
        i = 7
    End If
    d = d.AddDays(i)
Loop

运行时候报错
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:表,表A,BeforeSaveDataRow
详细错误信息:
调用的目标发生了异常。
从字符串“日期”到类型“Date”的转换无效。
[此贴子已经被作者于2020/10/20 21:54:25编辑过]

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


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

获取,或者给单元格赋值应该按行操作,比如第一行:Tables("表A").rows(0)。第四行日期列的值Tables("表A").rows(0)("日期")。当前行日期列的值:Tables("表A").current("日期")
而不是按列操作,Tables("表A").Cols("星期") 、DataTables("表B").DataCols("日期")这种是永远取不到单元格的值的

dim r as row = Tables("表A").current '当前选中的行
if r is nothing then return '如果表格没有数据
Dim d As Date = r("日期")
Dim d2 As Date = d.AddDays(r("天数"))
Dim i As Integer = 1
dim nr as row
Do While d <= d2
    If d.DayOfWeek = r("星期") Then
        nr = Tables("表B").addnew()
        nr("日期") = d
        i = 7
    End If
    d = d.AddDays(i)
Loop


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


加好友 发短信
等级:二尾狐 帖子:576 积分:4394 威望:0 精华:0 注册:2020/4/15 19:53:00
附加问题  发帖心情 Post By:2020/10/21 20:39:00 [只看该作者]

如果表B已经有日期数据  表A向表B写数据的时候,遇到重复的日期,如何跳过,并且写入不重复的日期数据.

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


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

循环里使用find到表B查询是否有同样日期的值,如果有就不要新增了:http://www.foxtable.com/webhelp/topics/0396.htm

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


加好友 发短信
等级:二尾狐 帖子:576 积分:4394 威望:0 精华:0 注册:2020/4/15 19:53:00
  发帖心情 Post By:2020/10/22 12:13:00 [只看该作者]

'建立课程档案 避免重复
Dim rr As DataRow = e.DataRow '当前选中的行
If rr Is Nothing Then Return '如果表格没有数据
Dim dd As Date = rr("开始日期")
Dim dd2 As Date = dd.AddDays(rr("总天数"))
Dim ii As Integer = 1
Dim kc As Row
'判断当日课程是否重复
Do While dd <= dd2
    Dim wr As DataRow = DataTables("课程档案DAY").Find("课程档案编号 = #" & dd & "# +  '" & rr("校区") & "' +  '" & rr("分类") & "'  +  '" & rr("科目") & "' +  '" & rr("课程") & "' +  '" & rr("课时段") & "'")
    
    If wr Is Nothing Then
        Continue Do
    Else If dd.DayOfWeek = rr("星期数字") Then
        kc = Tables("课程档案DAY").addnew()
        kc("课程档案编号") = dd + rr("校区")+ rr("分类")+ rr("科目")+ rr("课程")+ rr("课时段")
        kc("日期") = dd
        kc("星期") = rr("星期")
        ii = 7
    End If
    dd = dd.AddDays(ii)
Loop

上面的代码运行的时候 程序死机了,重新打开后,执行的结果也不对
'判断当日课程是否重复
Do While dd <= dd2
    Dim wr As DataRow = DataTables("课程档案DAY").Find("课程档案编号 = #" & dd & "# +  '" & rr("校区") & "' +  '" & rr("分类") & "'  +  '" & rr("科目") & "' +  '" & rr("课程") & "' +  '" & rr("课时段") & "'")
    
    If wr Is Nothing Then
        Continue Do
这个代码是判断是否重复的代码.请指教


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


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

Do While dd <= dd2
    If dd.DayOfWeek = rr("星期数字") Then
dim bh as string = dd + rr("校区")+ rr("分类")+ rr("科目")+ rr("课程")+ rr("课时段")
    Dim wr As DataRow = DataTables("课程档案DAY").Find("课程档案编号 = '" & bh & "'")
If wr Isnot Nothing Then
        kc = Tables("课程档案DAY").addnew()
        kc("课程档案编号") = bh
        kc("日期") = dd
        kc("星期") = rr("星期")
end if
        ii = 7
    End If
    dd = dd.AddDays(ii)
Loop

 回到顶部