以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]一表数据变更后自动更新其他数据表字段值报错,求教,多谢。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91263)

--  作者:ksaa16888
--  发布时间:2016/10/5 21:10:00
--  [求助]一表数据变更后自动更新其他数据表字段值报错,求教,多谢。
在“黑名单”数据表datacolchangededit加入代码判断,如果该表有新增户名,则自动在“账户开户”、“账户变更”、“账户”三个表中自动查找是否有该户名,如果有,则弹出对话框提醒用户,点击“确认”后这三个表中的字段“是否黑名单”(逻辑型)的值变为TRUE,否则还是FAlse,结果报错:未知编译错误,请教下哪里出问题了?多谢。
If e.DataCol.Name = "户名"
    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
        dr("是否黑名单") = True
        MessageBox.Show("请注意表中有账户进入黑名单!")
    Next
    For Each dr2 As DataRow In hzbg
        dr2("是否黑名单") = True
        MessageBox.Show("请注意表中有账户进入黑名单!")
    Next
    For Each dr3 As DataRow In fhz
        dr3("是否黑名单")=True
        MessageBox.Show("请注意表中有账户进入黑名单!")
    Next
End If

--  作者:sjx71
--  发布时间:2016/10/5 22:08:00
--  
 For Each dr1 As DataRow In jcxx
        dr("是否黑名单") = True
        MessageBox.Show("请注意表中有账户进入黑名单!")
    Next

应该为  dr1("是否黑名单“) = True

--  作者:ksaa16888
--  发布时间:2016/10/5 23:40:00
--  
感谢!我心都要滴血了,这么低级的错误也没看出来。改过后可以执行了,但是问题又来了。如果我在黑名单表中删除了一个户名数据,其他三个表要同步实现是否黑名单字段值的逻辑值自动变更为否,但上述代码实现不了,我又编辑了下代码,但是又报编译错误,不知道又是哪里出错了。
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 8:51:00
--  

DataColChanged事件


If e.DataCol.Name = "户名" Then
    Dim Filter As String
    If e.NewValue > "" Then
        Filter = "[户名] = \'" & e.NewValue & "\'"
        If DataTables("账户开户").Find(Filter) IsNot Nothing Then
            DataTables("账户开户").ReplaceFor("是否黑名单",True,Filter)
            MessageBox.Show("请注意《账户开户》表中有账户进入黑名单!")
        End If
        If DataTables("账户变更").Find(Filter) IsNot Nothing Then
            DataTables("账户变更").ReplaceFor("是否黑名单",True,Filter)
            MessageBox.Show("请注意《账户变更》表中有账户进入黑名单!")
        End If
        If DataTables("账户").Find(Filter) IsNot Nothing Then
            DataTables("账户").ReplaceFor("是否黑名单",True,Filter)
            MessageBox.Show("请注意《账户》表中有账户进入黑名单!")
        End If
    End If
    If e.OldValue > "" Then
        Filter = "[户名] = \'" & e.OldValue & "\'"
        If DataTables("账户开户").Find(Filter) IsNot Nothing Then
            DataTables("账户开户").ReplaceFor("是否黑名单",False,Filter)
            MessageBox.Show("请注意《账户开户》表中有账户取消黑名单!")
        End If
        If DataTables("账户变更").Find(Filter) IsNot Nothing Then
            DataTables("账户变更").ReplaceFor("是否黑名单",False,Filter)
            MessageBox.Show("请注意《账户变更》表中有账户取消黑名单!")
        End If
        If DataTables("账户").Find(Filter) IsNot Nothing Then
            DataTables("账户").ReplaceFor("是否黑名单",False,Filter)
            MessageBox.Show("请注意《账户》表中有账户取消黑名单!")
        End If
    End If

End If

DataRowDeleting事件

If e.DataRow.IsNull("户名")= False Then
    dim Filter = "[户名] = \'" & e.DataRow("户名") & "\'"
    If DataTables("账户开户").Find(Filter) IsNot Nothing Then
        DataTables("账户开户").ReplaceFor("是否黑名单",False,Filter)
        MessageBox.Show("请注意《账户开户》表中有账户取消黑名单!")
    End If
    If DataTables("账户变更").Find(Filter) IsNot Nothing Then
        DataTables("账户变更").ReplaceFor("是否黑名单",False,Filter)
        MessageBox.Show("请注意《账户变更》表中有账户取消黑名单!")
    End If
    If DataTables("账户").Find(Filter) IsNot Nothing Then
        DataTables("账户").ReplaceFor("是否黑名单",False,Filter)
        MessageBox.Show("请注意《账户》表中有账户取消黑名单!")
    End If
End If



--  作者:ksaa16888
--  发布时间:2016/10/6 19:22:00
--  
多谢。我好好学下。