Office中国论坛/Access中国论坛

标题: 未解决,请各位对表隐藏后的矛盾问题支支招 [打印本页]

作者: sbsfhgl    时间: 2007-12-26 17:30
标题: 未解决,请各位对表隐藏后的矛盾问题支支招
以下借用别人的代码:
Private Sub Form_Load()
Dim tbl As DAO.TableDef
If CurrentDb.Properties("StartupShowDBWindow") = False Then
Set tbl = CurrentDb.CreateTableDef("")
tbl.C & Left(date, 4) & ";DATABASE=MYDALI"
tbl.Attributes = dbAttachSavePWD
tbl.Name = "AAA"
tbl.SourceTableName = "AAA"
CurrentDataBase.TableDefs.Append tbl
CurrentDataBase.TableDefs.Delete "AAA"
End If
End Sub
如果我将启动中“显示数据库窗口”勾去掉,则代码提示找不到对象表。如果我把勾打上,进入系统后就看得到表,真矛盾,请问怎么改?

[ 本帖最后由 sbsfhgl 于 2007-12-27 14:12 编辑 ]
作者: andymark    时间: 2007-12-26 18:44
试试下面的代码

  1. Dim tabDef As TableDef
  2. Dim qryDef As QueryDef
  3. Set tabDef = New TableDef
  4. Dim strFileName As String

  5. Set dbs = CurrentDb
  6. For Each tabDef In dbs.TableDefs
  7. If tabDef.Name <> "pig_label" And tabDef.Name <> "lot" And tabDef.Name <> "mb_iso" And tabDef.Name <> "label" And tabDef.Name <> "z1_label" And tabDef.Name <> "system_label" And tabDef.Name <> "comm" And tabDef.Name <> "dow_1" And tabDef.Name <> "sanxin_label" And tabDef.Name <> "nhh" And tabDef.Name <> "sh" And tabDef.Name <> "weisu" And tabDef.Name <> "com(月份)" And tabDef.Name <> "com(total)" And tabDef.Name <> "com_MB(月份)" And tabDef.Name <> "com_mb(total)" Then ' dbHiddenObject '0,4

  8. tabDef.Attributes = 1
  9. End If

  10. Next

  11. For Each qryDef In CurrentDb.QueryDefs
  12. If Left(qryDef.Name, 1) <> "~" Then
  13. Application.SetHiddenAttribute acQuery, qryDef.Name, False
  14. End If
  15. Next
  16. MsgBox "成功地隱藏了該資料庫的所有表"
复制代码

作者: sbsfhgl    时间: 2007-12-27 08:28
上面代码能成功的将数据表隐藏,但不能隐藏数据库窗口,如果要进一步隐藏数据库窗口还应怎么做叱?
作者: goto2008    时间: 2007-12-27 08:38
学习
作者: andymark    时间: 2007-12-27 09:04
看来是误解题意了, 可参考下面的例子
http://www.office-cn.net/forum.php?mod=viewthread&tid=43195
作者: sbsfhgl    时间: 2007-12-27 11:14
标题: 不对呀,要隐藏数据库窗口必须把启动中“显示数据库窗口”勾去掉才行呀。
不对呀,要隐藏数据库窗口必须把启动中“显示数据库窗口”勾去掉才行呀。
作者: sbsfhgl    时间: 2007-12-27 14:11
。。。。。。。。。。。。。。。。
作者: gdfsslec    时间: 2007-12-27 14:39
楼主隐藏的目的是什么?这样隐藏有什么效果呢?
作者: sbsfhgl    时间: 2007-12-27 17:33
就是只有窗体了呀,因为其它东东在,一不好看,二容量让人把表里的数据改了,因为我设了权限的
作者: t小宝    时间: 2007-12-27 17:40
原帖由 sbsfhgl 于 2007-12-26 17:30 发表
以下借用别人的代码:
Private Sub Form_Load()
Dim tbl As DAO.TableDef
If CurrentDb.Properties("StartupShowDBWindow") = False Then
Set tbl = CurrentDb.CreateTableDef("")
tbl.C & Left(date, 4) & ";D ...

这里的代码并不完整,是哪里出错?
作者: sbsfhgl    时间: 2007-12-27 17:50
CurrentDataBase.TableDefs.Append tbl

如果我将启动中“显示数据库窗口”勾去掉,则代码提示找不到对象表。
如果我把勾打上,就一切正常了,但进入系统后就看得到表,真矛盾,请问怎么改?
作者: t小宝    时间: 2007-12-27 18:11
你的代码无法测试,下面的代码没有你说的问题.

Private Sub Form_Load()

    Dim tbl As DAO.TableDef, fld As DAO.Field
   
    Set tbl = CurrentDb.CreateTableDef("AAA")
    Set fld = tbl.CreateField("ContactName", dbText, 30)
    tbl.Fields.Append fld
    tbl.Attributes = dbAttachSavePWD
    CurrentDb.TableDefs.Append tbl
    CurrentDb.TableDefs.Delete "AAA"
   
End Sub

补充一下:
使用DAO对象和数据库窗口是否打开好象没有什么联系

[ 本帖最后由 t小宝 于 2007-12-27 18:15 编辑 ]
作者: fswxs    时间: 2007-12-27 19:41
这样隐藏也不安全。在关系里能看到,然后就有办法找到。
分开前后端,在后端设置陷阱删除表不知道是否可行
作者: Victor_Duane    时间: 2007-12-27 20:01
要安全一点,还是放弃ACCESS的打算
作者: Victor_Duane    时间: 2007-12-27 20:01
其实也没有绝对的安全,只是相对ACCESS的安全是比较弱的
作者: sbsfhgl    时间: 2007-12-28 10:15
原代码如下:我是加在启动窗体
http://www.office-cn.net/forum.php?mod=viewthread&tid=40149&highlight=SQL
1. 用正常ODBC連接SQL資料表, 且再用以下代碼重新連接

Function ODBCrelink()

Dim db As Database
Dim tbl As TableDef
Dim a As String
Dim B As String
Dim D As String

a = "sa" '用户
B = "102030" '口令

Set db = CurrentDb
For Each tbl In db.TableDefs
If Left(tbl.Connect, 4) = "ODBC" Then
tbl.C
tbl.Attributes = dbAttachSavePWD
tbl.RefreshLink
End If
Next

End Function

2. 當然發布的MDE都有一個啟動窗體﹐并且數據庫窗體要設置為不顯示了

3. 啟動窗體下代碼如下﹕其中left(date,4)是隨便寫的一個函數目的是使得密碼部分是通過一定算法得到的﹐一定不能直接寫密碼。

private sub form_load()

Dim tbl As DAO.TableDef

If CurrentDB.Properties("StartupShowDBWindow") = False Then
Set tbl = CurrentDb.CreateTableDef("")
tbl.C & left(date,4) & ";DATABASE=ABCDatabase"
tbl.Attributes = dbAttachSavePWD
tbl.Name = "AAA"
tbl.SourceTableName = "AAA"
CurrentDataBase.TableDefs.Append tbl
CurrentDataBase.TableDefs.Delete "AAA"
end if

end sub
作者: liwen    时间: 2007-12-28 11:58
tbl.C 后面掉了一段吧?
作者: rjacky    时间: 2007-12-29 12:45
access在安全方面的不是一般的脆弱,目前我只能通过windows文件安全权限来达到唯一的保证
作者: DSYOU    时间: 2008-10-14 09:58
学习!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3