繁体   English   中英

MS Access VBA创建即时窗口弹出窗口或模拟一个窗口

[英]MS Access VBA Create a immediate window popup or simulate one

我有一个带递归函数的代码,它检查文件夹中的文件夹,并在我的数据库中写入文件夹的名称,ID和深度。 重复该过程,直到所有文件夹都在数据库中(每个项目通常为200个文件夹)。

当我打开代码窗口运行代码时,由于debug.print ,我可以看到代码正在做什么,但由于用户从未打开代码窗口,因此他们看不到正在发生的事情。 我想到了2个解决方案。

  1. 打开“即时窗口”作为我的表单上的弹出窗口。
  2. 使用文本框创建表单。

我搜索谷歌,但没有找到一个有效的解决方案来立即弹出窗口。

至于第二个想法是有一种方法可以将.print发送到文本框,还是像vba中的控制台对象?

我在用

Form_PrintWindow.PrintWindow.Text = xmlNode3.Attributes.getNamedItem("id").Text & " " & xmlNode3.Attributes.getNamedItem("name").Text & vbNewLine & Form_PrintWindow.PrintWindow.Text

但是在这个过程中,字符串会被填满。

  1. 创建一个带有空列表框的表单控制适当的大小。 (我命名我的表单DebugOutput和列表框OutputList
  2. UpdateProgress子添加到该表单。 它会将您的其他流程的输出作为新项目添加到列表框中,并选择最近添加的项目。

     Public Sub UpdateProgress(text As String) 'add item and select it With Me.OutputList .AddItem text .Selected(.ListCount - 1) = True 'zero based index End With DoEvents 'this frees up the OS to repaint the screen End Sub 
  3. 在现有代码中,创建一个Form_DebugOutput的新实例(或者您为表单命名的任何内容。请注意,访问会自动使用Form_ Form_DebugOutput填写表单。)

  4. 而不是Debug.Print调用我们创建的表单实例的UpdateProgress方法。

     Public Sub testit() Dim output As New Form_DebugOutput output.Visible = True Dim i As Long For i = 1 To 1000 output.UpdateProgress "I've said hello " & i & " times." Next Stop End Sub 

它看起来像这样。

表单与流程输出

像这样实时输出结果降低代码速度,因此请仔细考虑是否确实需要显示此信息。 此外,如果您希望表单保留在屏幕上,则需要在全局范围内声明Form变量。 有关这方面的更多信息,您可能需要了解我的进度条

我的建议是使用SysCmd()来更新状态栏。

这样做的原因是因为每当我尝试在代码运行时输出到表单时,它就会被击中并错过向用户显示的内容。 我从来没有遇到过这种状况的问题。

 Function FolderImport()
 Dim statBAR as variant
 Dim fldName as string
 statBAR = SysCmd(acSysCmdInitMeter, "Processing Import of Folders", 200)
 For i = 1 to 200
    statBAR=SysCmd(acSysCmdUpdateMeter, i)
    DoCmd.RunSQL "INSERT INTO tblFOLDERS VALUES ('" & fldName & "');"
 Next i
 Forms.frm_NAV.lstFOLDERS.requery()
 End Function

此代码不是100%完整,但您可以了解正在发生的事情。 在代码运行时,用户无论如何都无法执行任何操作,因此代码运行时在列表框中显示文件夹与在代码运行后运行requery()相同。 状态栏让用户知道发生了什么事情,因此他们认为程序没有冻结。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM