以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]隐藏或混淆重要数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138276)

--  作者:lgj716330
--  发布时间:2019/7/26 22:00:00
--  [求助]隐藏或混淆重要数据
If e.Col.Name = "列名" Then \'请改为实际列名
    If User.name <> "张经理" AndAlso UserName <> "王总监" Then \'如果不是指定用户
        e.Text = 
"****" \'则修改显示内容
    
End If
End
 
If

以上可以实现在客户端隐藏或混淆重要数据,有没有办法在后台数据库中实现这样的功能,比如有的数据机密级别比较高,连信息技术人员都不能知晓,但又没办法通过数据库权限进行控制,因为他们在管理服务器,有没有办法可以象在客户端这样,把数据库中某张表的数据隐藏或混淆

--  作者:有点蓝
--  发布时间:2019/7/26 22:19:00
--  
把数据加密后再保存:http://www.foxtable.com/webhelp/topics/1346.htm
需要显示的时候,取出来解密在显示到窗口。

--  作者:lgj716330
--  发布时间:2019/7/27 16:58:00
--  
这个可以在表属性或项目属性里设置吗,如我在项目AfterSaveProject里写以下代码
For Each dr As DataRow In DataTables("工资统计表").dataRows
    For Each c As Col In Tables("工资统计表").Cols
        If c.name =  "年份" Or c.name = "月份" Or c.name = "部门" Or c.name = "姓名" Or c.name = "职位" Then
            dr(c.name) = EncryptText(dr(c.name),"a23","op#")
        End If
    Next
Next
DataTables("工资统计表").Save

发现每保存一次字符的长度就会累加,应该要写在哪里好呢,或是怎么改一下代码

图片点击可在新窗口打开查看此主题相关图片如下:24de0792-d735-478b-a59d-27e829075dd1.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2019/7/27 17:31:00
--  
做窗口进行数据编辑,窗口启动的时候把单元格数据解密后显示到文本框,窗口保存按钮对文本框的数据加密后赋值到单元格中。
--  作者:lgj716330
--  发布时间:2019/7/28 19:22:00
--  
问题是此表不需要做任何编辑,每月只需导入,然后在统计分析中取数使用
--  作者:有点蓝
--  发布时间:2019/7/28 19:53:00
--  
手工导入,导入的时候加密
--  作者:lgj716330
--  发布时间:2019/7/28 20:11:00
--  
用了手工导入,也是这样,而且还重复提示,应该是我写的代码不对,还请改正
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.foxdb
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:工作簿1.xlsx



[此贴子已经被作者于2019/7/28 20:11:42编辑过]

--  作者:有点蓝
--  发布时间:2019/7/28 20:26:00
--  
Dim dlg As New OpenFileDialog
dlg.Filter = "Excel文件|*.xls;*.xlsx"
If dlg.ShowDialog =DialogResult.OK Then
    Dim t As Table = Tables("表A")
    Dim nms As String() = {"年份","月份","部门", "职位", "姓名"}
    Dim nms2 As String() = {"年份","部门"} \'需要加密的列
    t.StopRedraw()
    Dim Book As New XLS.Book(dlg.FileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(0)
    For n As Integer = 1 To Sheet.Rows.Count -1
        Dim r As Row = Tables("表A").AddNew()
        For m As Integer = 0 To nms.Length - 1
            r(nms(m)) = Sheet(n,m).Value
            If Array.IndexOf(nms2,nms(m)) > -1 Then
                r(nms(m)) = EncryptText(Sheet(n,m).Value,"a23","op#")
            Else
                r(nms(m)) = Sheet(n,m).Value
            End If
        Next
    Next
    t.ResumeRedraw()
End If

--  作者:lgj716330
--  发布时间:2019/7/29 22:39:00
--  

[此贴子已经被作者于2019/7/29 22:43:28编辑过]

--  作者:有点蓝
--  发布时间:2019/7/29 22:46:00
--  
看看解密前后是什么内容?
For Each r As Row In Tables("统计表1").Rows
msgbox(r("岗位性质"))
msgbox(r("部门"))
        r("岗位性质") = DecryptText(r("岗位性质"),"a23","op#")
        r("部门") = DecryptText(r("部门"),"a23","op#")
msgbox(r("岗位性质"))
msgbox(r("部门"))
Next