ms-access - 表字段说明 - MS Access

标签 ms-access properties

我环顾四周,发现了一些关于如何从字段的“描述”框中获取描述的 VBA 代码,但没有找到如何在表单属性中使用它的方法。

我希望出现一个 ControlTip,其中包含从数据库中的描述中带来的该字段的描述,而不必重写所有描述;我希望有一段可以添加到所有控制提示的复制粘贴代码?

类似的东西(但显然不是)

ControlTipText:  Me.ThisControl.ThisControlFieldDescription

任何人都知道代码,或者即使有一个?

编辑:
description = Forms("frmTrials").Controls("txtBox").StatusBarText
MsgBox description

以上用于显示状态栏文本。但是我想用事件表单填充“frmTrials”,用当前事件控件填充“txtBox”;这样,当控件变为事件状态时,我可以将 StatusBarText 放入“描述框”文本字段(或控件提示等)中。我试过
description = Forms(Me).Controls(Me.ActiveControl).StatusBarText

这只是向我抛出了错误。

最佳答案

据我了解情况,您想设置 ControlTipText每次表单加载时动态属性。由于您在评论中指出此应用程序适用于平板设备,因此您可能更愿意在打开表单时限制处理器负载。你可以通过保存 ControlTipText 来做到这一点。属性与表单的设计。

使用您的表单名称尝试以下过程,如下所示:

SetControlTipText "YourFormName"

这是程序。我在有限的测试中没有发现任何问题。它设置ControlTipText用于复选框、组合、列表框和文本框。改第一个Case行以针对一组不同的控件。
Public Sub SetControlTipText(ByVal pFormName As String)
    Dim ctl As Control
    Dim db As DAO.Database
    Dim frm As Form
    Dim rs As DAO.Recordset

    DoCmd.OpenForm pFormName, acDesign
    Set frm = Forms(pFormName)
    If Len(frm.RecordSource) > 0 Then
        Set db = CurrentDb
        Set rs = db.OpenRecordset(frm.RecordSource)
        For Each ctl In frm.Controls
            Select Case ctl.ControlType
            Case acCheckBox, acComboBox, acListBox, acTextBox
                If Len(ctl.ControlSource) > 0 _
                        And Not ctl.ControlSource Like "=*" Then
                    ctl.ControlTipText = _
                        GetDescription(rs.Fields(ctl.ControlSource))
                End If
            Case Else
                ' pass '
            End Select
        Next ctl
        rs.Close
    End If
    Set ctl = Nothing
    Set rs = Nothing
    Set db = Nothing
    Set frm = Nothing
    DoCmd.Close acForm, pFormName, acSaveYes
End Sub
SetControlTipText调用这个函数:
Public Function GetDescription(ByRef pObject As Object) As String
    Dim strReturn As String

On Error GoTo ErrorHandler

    strReturn = pObject.Properties("Description")

ExitHere:
    GetDescription = strReturn
    On Error GoTo 0
    Exit Function

ErrorHandler:
    strReturn = vbNullString ' make it explicit '
    GoTo ExitHere
End Function

SetControlTipText过程忽略未绑定(bind)的表单。如果绑定(bind)字段的控制源没有 Description已分配的属性(property),其 ControlTipText将设置为空字符串。

这种方法将要求您为表单运行一次该过程,而不是在每次加载表单时运行一些其他过程。如果您稍后更改 Description任何表单的记录源字段的属性,您可以重新运行 SetControlTipText更新 ControlTipText的。

或者,作为准备发布应用程序新版本的一部分,您可以为所有应用程序的表单运行该过程。
Dim frm As Object
For Each frm in CurrentProject.AllForms
    SetControlTipText frm.Name
Next frm

关于ms-access - 表字段说明 - MS Access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10643082/

相关文章:

database - 使用交易表在表的字段中执行计算

php - 使用节点的字符串表示形式访问 stdClass 对象上的嵌套属性

java - 非拉丁字符显示为 '?'

properties - 如何将 struts.custom.i18n.resources 属性设置为特定文件夹?

javascript - JavaScript "writable"属性描述符是如何工作的?

javascript - 使用保存键按属性值对 Javascript 对象数组进行排序

python - 参数太少错误,同时没有使用参数占位符

c# - Insert 语句中的语法不正确

ms-access - 多对多关系中的数据输入表单/子表单

wpf - 我们可以通过 LAN Access Db 共享 Silverlight 应用程序吗