gpt4 book ai didi

ms-access - 检查 Access Continuous Forms 中是否存在文件夹

转载 作者:行者123 更新时间:2023-12-02 11:29:44 24 4
gpt4 key购买 nike

我正在修改现有的 Access 2003 应用程序,因为某些计算机具有 Access 2010 而不是 2003。

我有一个连续的表单,其中包含一个带有“文件夹”一词的未绑定(bind)文本框。文本框有一个 onClick 事件来打开与当前记录相关的文件夹。

对于每一行,我想向用户指示该行是否存在文件夹。我更喜欢这样做的方法是,如果一行没有文件夹,则“文件夹”文本框为空,如下所示:

Quote Ref   Customer   Cust.Ref

14-243 | Smiths |CR342 | Folder |
14-269 | Cox & Son |0002634 | |
14-314 | RedBox |436R | Folder |
14-314 | JTG PRs |63462 | |

文件夹名称由前 3 个字段组成:“S:/path/14-243 史密斯 CR342/

我最初尝试在 form_current 事件上放置一些代码来更改文本框的可见性,但这将所有行设置为相同。

Private Sub Form_Current()
If Len(Dir("S:/path/" & [quote_no] & " " & [customer] & " " & [cust_ref], vbDirectory) = 0) Then
Me.txtFolder.Visible = False
Else
Me.txtFolder.Visible = True
End If
End Sub

所以我尝试将这段代码放入控制源

=iif(Len(Dir("S:/path/" & [quote_no] & " " & [customer] & " " & [cust_ref],vbDirectory)) =0,"","Folder")

但是 Access 假定 vbDirectory 是一个控件,并在其两边加上方括号,这会破坏语法。因此我认为 dir() 不能在控制源上使用。

您能建议我如何实现我的目标吗?

谢谢!

最佳答案

您可以为 FileSystemObjecFolderExists 函数制作包装,如下所示

Dim fso As FileSystemObject   'So a new object is not created on every call to FolderExists

Private Sub Form_Load()
Set fso = New FileSystemObject
End Sub

Function FolderExists(folderPath As String) As Boolean
FolderExists = fso.FolderExists(folderPath)
End Function

要使用FileSystemObject,您需要添加对Microsoft Scripting Runtime的引用

然后在文本框的控制源中有一个像这样的函数调用

=FolderExists("S:/path/" & [quote_no] & " " & [customer] & " " & [cust_ref])

甚至

=IIF(FolderExists("S:/path/" & [quote_no] & " " & [customer] & " " & [cust_ref]),"Click","")

然后在文本框的点击事件中检查它是否可点击

Private Sub Text1_Click()
If Text1.Text = "Click" Then
Debug.Print "Do some work"
Else
Debug.Print "Do nothing"
End If
End Sub

关于ms-access - 检查 Access Continuous Forms 中是否存在文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24164502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com