以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求关联表 数据同步增删改解决思路  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=72840)

--  作者:everybody
--  发布时间: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
--  发布时间:2015/8/7 12:03:00
--  

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

 

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


--  作者:大红袍
--  发布时间:2015/8/7 12:31:00
--  
 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.foxdb


--  作者:huozhe
--  发布时间:2015/8/7 12:46:00
--  
谢谢版主,能发下代码吗 ,我版本低打不开啊。
--  作者:everybody
--  发布时间: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
--  发布时间:2015/8/7 13:16:00
--  
思路清晰,好读。。
--  作者:huozhe
--  发布时间:2015/8/7 13:35:00
--  
很棒 ,取消勾选,删除考试表相应行的功能没有实现


--  作者:大红袍
--  发布时间: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
--  发布时间:2015/8/7 16:27:00
--  
谢谢,功能实现