Foxtable(狐表)用户栏目专家坐堂 → 求关联表 数据同步增删改解决思路


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

主题:求关联表 数据同步增删改解决思路

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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
求关联表 数据同步增删改解决思路  发帖心情 Post By:2015/8/7 11:49:00 [只看该作者]

求思路

问题:

根据【考生表】“同意考试”和“已考试”两个逻辑字段的不同选择,同步增、删、改【考试表】中相同“任务组编号”和“姓名”的对应行,准备放在DataRowAdding。大致思路是:

几个要求:

1、必须“同意考试”先打勾,才能“已考试”打勾
2、如果“已考试”新值为打勾,
   如果【考试表】已经存在相同“任务组编号”和“姓名”的行(唯一行),则跳到此行;
   如果没有,则新增行并引用当前行的“任务组编号”和“姓名”;

   如果“已考试”新值为空框,
   如果【考试表】已经存在相同“任务组编号”和“姓名”的行(唯一行),则将此行的“删除”列标记为true;
   如果没有?(。。。。。。。。。。。。。。。。这里凌乱了,本来不应该出现【考生表】打了勾,但【考试表】中没有相同“任务组编号”和“姓名”的对应行的情况,但实际操作可能会出现。比如有时候直接将【考试表】直接删除行(或把“删除”标记为false了),但对应的【考试表】的“已考试”没有同步修改为false

 

 

几个疑问:

这种多种判断的思路应该如何摆设?

 

要不要两个表建立关联?

 

如果做到【考试表】的删除(或标记删除列为false)和【考生表】的“已考试”同步

 



此主题相关图片如下:qq截图20150807114850.png
按此在新窗口浏览图片

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目4.foxdb

 

 

[此贴子已经被作者于2015/8/7 11:53:57编辑过]

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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2015/8/7 12:03:00 [只看该作者]

思路上,是先判断有没有对应行,在进行逻辑值判断?

 

我现在是先判断逻辑值,再判断是否有对应行


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/7 12:31:00 [只看该作者]

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb


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


加好友 发短信
等级:幼狐 帖子:67 积分:975 威望:0 精华:0 注册:2013/7/19 16:55:00
  发帖心情 Post By:2015/8/7 12:46:00 [只看该作者]

谢谢版主,能发下代码吗 ,我版本低打不开啊。

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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2015/8/7 13:14:00 [只看该作者]

分享大佬的作品!!!

 

PrepareEdit

If e.Col.Name = "已考试" Then
    e.cancel = not e.Row("同意考试")
End If

 

DataColChanged

If e.DataCol.name = "已考试" Then
    If e.newvalue = True Then
        Dim fdr As DataRow = DataTables("考试").find("任务组编号 = '" & e.DataRow("任务组编号") & "' and 考生编号 = '" & e.DataRow("考生编号") & "'")
        If fdr IsNot Nothing Then
            Tables("考试").Position = Tables("考试").FindRow(fdr)
            fdr("删除") = False
        Else
            fdr = DataTables("考试").AddNew
            fdr("任务组编号") = e.DataRow("任务组编号")
            fdr("考生编号") = e.DataRow("考生编号")
            fdr("删除") = False
        End If
    Else
        DataTables("考试").replacefor("删除",True,"任务组编号 = '" & e.DataRow("任务组编号") & "' and 考生编号 = '" & e.DataRow("考生编号") & "'")
    End If
End If


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


加好友 发短信
等级:小狐 帖子:307 积分:2252 威望:0 精华:0 注册:2013/2/28 9:05:00
  发帖心情 Post By:2015/8/7 13:16:00 [只看该作者]

思路清晰,好读。。

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


加好友 发短信
等级:幼狐 帖子:67 积分:975 威望:0 精华:0 注册:2013/7/19 16:55:00
  发帖心情 Post By:2015/8/7 13:35:00 [只看该作者]

很棒 ,取消勾选,删除考试表相应行的功能没有实现


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/7 14:13:00 [只看该作者]

以下是引用huozhe在2015/8/7 13:35:00的发言:
很棒 ,取消勾选,删除考试表相应行的功能没有实现

 

DataTables("考试").replacefor("删除",True,"任务组编号 = '" & e.DataRow("任务组编号") & "' and 考生编号 = '" & e.DataRow("考生编号") & "'")

 

改成

 

DataTables("考试").DeleteFor("任务组编号 = '" & e.DataRow("任务组编号") & "' and 考生编号 = '" & e.DataRow("考生编号") & "'")


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


加好友 发短信
等级:幼狐 帖子:67 积分:975 威望:0 精华:0 注册:2013/7/19 16:55:00
  发帖心情 Post By:2015/8/7 16:27:00 [只看该作者]

谢谢,功能实现

 回到顶部