以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]一张表数据变更、增加或删除,自动同步更新另外三张表某一字段,编译错误,盼指教,多谢。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91270)

--  作者:ksaa16888
--  发布时间:2016/10/6 0:15:00
--  [求助]一张表数据变更、增加或删除,自动同步更新另外三张表某一字段,编译错误,盼指教,多谢。
在“黑名单”数据表datacolchangededit加入代码判断,如果该表有新增户名,则自动在“账户开户”、“账户变更”、“账户”三个表中自动查找是否有该户名,如果有,则弹出对话框提醒用户,点击“确认”后这三个表中的字段“是否黑名单”(逻辑型)的值变为TRUE,否则还是FAlse,如果我在“黑名单”数据表删除了一个户名,其他三个表要同步判断,查找“是否黑名单”字段值的逻辑值,并且自动变更为否,但是报编译错误,不知道是语法还是哪里出错了。盼指教,多谢。
If e.DataCol.Name = "户名" Then
    Dim Filter As String = "[户名] = \'" & e.DataRow("户名") & "\'"
    Dim jcxx As List(Of DataRow) = DataTables("账户开户").Select(Filter)
    Dim hzbg As List(of DataRow)=DataTables("账户变更").Select(filter)
    Dim fhz As List(of DataRow)=DataTables("账户").Select(filter)
    For Each dr1 As DataRow In jcxx
        If dr1("户名")=e.newvalue Then
            dr1("是否黑名单") = True
            MessageBox.Show("请注意《账户开户》表中有账户进入黑名单!")
        Else
            dr1("是否黑名单") = False
            MessageBox.Show("请注意《账户开户》表中有账户取消黑名单!")
        End If
    Next
    
    For Each dr2 As DataRow In hzbg Then
        If dr2("户名")=e.newvalue Then
            dr2("是否黑名单") = True
            MessageBox.Show("请注意《账户变更》表中有账户进入黑名单!")
        Else
            dr2("是否黑名单")=False
            MessageBox.Show("请注意《账户变更》表中有账户取消黑名单!")f
        End If
    Next
    
    For Each dr3 As DataRow In fhz
        If dr3("户名")=e.newvalue Then
            dr3("是否黑名单")=True
            MessageBox.Show("请注意《账户》表中有账户进入黑名单!")
        Else
            dr3("是否黑名单")=False
            MessageBox.Show("请注意《账户》表中有账户取消黑名单!")
        End If
    Next
End If


--  作者:新福星
--  发布时间:2016/10/6 7:06:00
--  
1 看到一个冗余的地方。在 Dim jcxx As List(Of DataRow) = DataTables("账户开户").Select(Filter) 已经介定了这个用户了,那么在下面的语句中就不用再判断户名了
 For Each dr1 As DataRow In jcxx
        If dr1("户名")=e.newvalue Then
            dr1("是否黑名单") = True
            MessageBox.Show("请注意《账户开户》表中有账户进入黑名单!")
        Else
            dr1("是否黑名单") = False
            MessageBox.Show("请注意《账户开户》表中有账户取消黑名单!")
        End If
    Next
2 可以通过加载(外部数据库)或筛选把数据界定好之后,统一用替换语句一次性更新,保存;
3 没有看到你更新数据后的保存语句;

--  作者:有点蓝
--  发布时间:2016/10/6 9:23:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=91263