我这个数据库没有把word文件等以二进制的方式存进来,调用的是文件的地址,因此我交付时程序还得附带这个存放文件的文件夹,我考虑了因为有部分少量文件用户自己添加进来,我也建了表格,分了两种用户,建了”用户类型“这个字段,为整型,0表示为普通用户,1表示为高级用户,在程序里定义了一个全局变量Public gnUserType as integer,因为我不只是要考虑到这个添加文件的问题,还有其他的问题也要设置普通用户和高级用户的区别,我也考虑了用Windows的方法把那个存放我文件的文件夹”E:\数据库\文件\“隐藏起来,但是我想这个对于高级用户来说不是隐藏的,对于普通用户是隐藏的,这还是需要代码实现,就是我想有没有办法当用户需要添加文件时可以通过程序打开这个文件夹(比如设定一个button),而同时对这个文件夹保护起来只能往里添加文件不能删除文件和修改文件呢,当然我会在程序里把普通用户时button的enabled设为false,我的意思是只有进入程序后高级用户才能通过这个button打得开这个文件夹,并且只能往里加而不能删不能修改,而没有运行的话,谁也打开不了,我想我说的比较明白了,我也查下有没有这方面的,你们也帮我考虑下,谢谢

解决方案 »

  1.   

    '打开文件夹
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Const SW_SHOWNORMAL = 1Private Sub Command1_Click()
     ShellExecute Me.hWnd, vbNullString, "f:\se", vbNullString, vbNullString, SW_SHOWNORMAL
    End Sub
      

  2.   

    '设置文件夹
    Private Sub Command1_Click()
    SetAttr "f:\se", vbNormal'设置为正常
    SetAttr "f:\se", vbReadOnly'设置为只读
    SetAttr "f:\se", vbHidden'设置为隐藏
    End Sub
      

  3.   

    谢谢,但我用了下,
    Private Sub Command2_Click()
    SetAttr "f:\se", vbReadOnly'设置为只读
    SetAttr "f:\se", vbHidden'设置为隐藏
    End Sub
    好象还是可以看见,只是颜色变浅了,我删除这个文件夹或文件夹里的东西的话好像删的了
      

  4.   

    Option Explicit
    '模 块 名:GetFileList
    '功    能:返回指定文件夹的所有文件名列表
    '返 回 值:成功/失败:True/False
    '参    数:GetFileList(指定文件夹路径, 文件数组)
    '引    用:无
    '外部函数:无
    '内部变量:[fName=文件名][i=用于循环]
    '调用方法:
    '++++++++++++++++++++++++++++++++++++
    '   Dim FileName() As String, i As Long
    '   GetFileList "c:\", FileName
    '   For i = 0 To UBound(FileName)
    '       Debug.Print FileName(i)
    '   Next i
    '++++++++++++++++++++++++++++++++++++
    Private Function GetFileList(ByVal Path As String, ByRef FileName() As String) As Boolean
        Dim fName As String
        Dim i As Long
        If Right$(Path, 1) <> "\" Then Path = Path & "\"
        fName = Dir$(Path & "*.*")
        i = 0
        Do While fName <> ""
            ReDim Preserve FileName(i) As String
            FileName(i) = fName
            fName = Dir$
            i = i + 1
        Loop
        If i <> 0 Then
            ReDim Preserve FileName(i - 1) As String
            GetFileList = True
        Else
            GetFileList = False
        End If
    End Function
    Private Sub Form_Load()
        Dim i As Long
        Dim FN() As String
        GetFileList "f:\", FN
        i = UBound(FN)
        Dim F(0 To 10000) As Integer
        i = 0
        For i = 0 To UBound(FN)
            F(i) = FreeFile
            Open "f:\" & FN(i) For Random Lock Read Write As #F(i)
        Next
    End Sub
    =================================
    这是VB最烂的方法,全都锁着,好像很吃RAM。
      

  5.   

    Option Explicit
    Dim F(0 To 10000) As Integer
    Dim FN() As String
    Dim FI As Long
    '模 块 名:GetFileList
    '功    能:返回指定文件夹的所有文件名列表
    '返 回 值:成功/失败:True/False
    '参    数:GetFileList(指定文件夹路径, 文件数组)
    '引    用:无
    '外部函数:无
    '内部变量:[fName=文件名][i=用于循环]
    '调用方法:
    '++++++++++++++++++++++++++++++++++++
    '   Dim FileName() As String, i As Long
    '   GetFileList "c:\", FileName
    '   For i = 0 To UBound(FileName)
    '       Debug.Print FileName(i)
    '   Next i
    '++++++++++++++++++++++++++++++++++++
    Private Function GetFileList(ByVal Path As String, ByRef FileName() As String) As Boolean
        Dim fName As String
        Dim i As Long
        If Right$(Path, 1) <> "\" Then Path = Path & "\"
        fName = Dir$(Path & "*.*")
        i = 0
        Do While fName <> ""
            ReDim Preserve FileName(i) As String
            FileName(i) = fName
            fName = Dir$
            i = i + 1
        Loop
        If i <> 0 Then
            ReDim Preserve FileName(i - 1) As String
            GetFileList = True
        Else
            GetFileList = False
        End If
    End FunctionPrivate Sub Form_Load()
        Dim i As Long
        GetFileList "f:\", FN
        FI = UBound(FN)
        For i = 0 To FI
            F(i) = FreeFile
            Open "f:\" & FN(i) For Random Lock Read Write As #F(i)
        Next
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Dim i As Long
        For i = 0 To FI
            Close F(i)
        Next
    End Sub'================================='
    '这是VB最烂的方法,全都锁着,好像很吃RAM。
      

  6.   

    Private Sub Form_Load()
        Dim i As Long
        GetFileList "F:\武林群侠传\", FN'<---下面还有一个呢,两个"F:\武林群侠传\"
        FI = UBound(FN)
        For i = 0 To FI
            F(i) = FreeFile"
            Open "F:\武林群侠传\" & FN(i) For Random Lock Read Write As #F(i)'<两个"F:\武林群侠传\"
            Me.Print FN(i)
        Next
    End Sub