以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何判断表达式A列已经是其他表达式的一部分了  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171079)

--  作者:飘过的巨蟹座
--  发布时间:2021/8/17 0:47:00
--  如何判断表达式A列已经是其他表达式的一部分了
如题

图片点击可在新窗口打开查看此主题相关图片如下:4431.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/8/17 8:34:00
--  
if DataTables("订单").DataCols("金额").Expression like "*A列*" then
[此贴子已经被作者于2021/8/17 8:33:47编辑过]

--  作者:飘过的巨蟹座
--  发布时间:2021/8/17 16:06:00
--  
Dim t As Table = Tables("表A")
Dim c As Col = t.Cols(t.ColSel)
If DataTables("表A").DataCols(c.name).Expression > "" Then \'是表达式列
    For Each d As Col In Tables("表A").cols
        If DataTables("表A").DataCols(d.name).Expression Like c.name Then
            MessageBox.Show("本列" & c.name & "已在" & d.name & "中引用,禁止删除")
        Else
            MessageBox.Show(d.name & "可以删除")
        End If
    Next
Else
    MessageBox.Show(c.name & "这是系统列,禁止删除")
End If

是哪里除了问题,青色字段没有显示出来
[此贴子已经被作者于2021/8/17 16:09:11编辑过]

--  作者:有点蓝
--  发布时间:2021/8/17 16:11:00
--  
If DataTables("表A").DataCols(d.name).Expression Like "*" & c.name & "*" Then
--  作者:飘过的巨蟹座
--  发布时间:2021/8/17 16:25:00
--  
蓝老师,好像我的逻辑哪里错了,她会把所有列提示一遍,我是想如果被其他列引用就禁止删除,否则就删除,能帮我看下吗?
--  作者:有点蓝
--  发布时间:2021/8/17 16:52:00
--  
……
        If DataTables("表A").DataCols(d.name).Expression Like "*" & c.name & "*"  Then
            MessageBox.Show("本列" & c.name & "已在" & d.name & "中引用,禁止删除")
exit for
        Else
……

--  作者:飘过的巨蟹座
--  发布时间:2021/8/17 18:02:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.foxdb


删除还是不对哦,还是提示一圈
[此贴子已经被作者于2021/8/17 18:02:01编辑过]

--  作者:有点蓝
--  发布时间:2021/8/17 20:14:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (1).zip


--  作者:飘过的巨蟹座
--  发布时间:2021/8/17 21:08:00
--  
蓝老师,不对啊,正常第二列和B列,是不能删除的,因为我在C列函数里面引用了,但是现在提示都是错的,B列的提示是不能删除,但是原因是第一列引用了,正确的提示应该是C列引用了,B列也是被C列引用了,但是提示可以删除,C列没有被任何列引用,但是提示已经被第二列引用了,不能删除,正确的是可以删除
--  作者:有点蓝
--  发布时间:2021/8/17 21:16:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试 (1).zip