【问题标题】:4 button captions through Loop from table recordset in vba access4个按钮标题通过从vba访问表记录集中循环
【发布时间】:2018-06-28 18:28:45
【问题描述】:

我有一个名为 frmPUCFinalize 的表单,其中包含四个名为 btn1、btn1、btn2、btn4 的按钮,还有一个表 (tblStatus),其中 4 个标题名称存储在名为“Button”的单个字段中。

我想使用循环或其他方法将 frmPUCFinalize 的所有 4 个按钮标题替换为表字段(字段名称:按钮)中的每个记录集。

我尝试了以下代码,但没有成功。

Private Sub Form_Load()
Dim rst As Recordset
Dim mSQL As String
mSQL = "SELECT tblStatus.Button FROM tblStatus WHERE (((tblStatus.RoleID)=4) AND ((tblStatus.Form)='frmPUCFinalize')) ORDER BY tblStatus.Button;"
Set rst = CurrentDb.OpenRecordset(mSQL)

            x = 1
            Y = 4 'maximun 4 buttons

            rst.MoveFirst

            Do While (rst.BOF = False And rst.EOF = False) And x < Y + 1
                Me("btn" & x).Caption = rst!Button
                x = x + 1
                rst.MoveNext
            Loop
        rst.Close
End Sub

【问题讨论】:

  • couldn't succeed 是什么意思?乍一看还不错。
  • 我刚刚创建了一个表格tblStatus,其字段与您查询中的相同,输入了 4 个按钮文本,创建了一个带有四个按钮的表单 frmPUCFinalize,名为 btn1btn2... ,将您的代码粘贴到 Form_Load() 事件中 - 它运行良好。您的表中是否包含正确的数据?请提供更多信息。无法重现任何错误。
  • 感谢 LocEngineer...我解决了这个问题...刚刚从 mSQL 语句中删除了 Order BY 语句,它对我来说非常有效..

标签: vba loops ms-access


【解决方案1】:

试试这个:

Private Sub Form_Load()
    Dim rst As Recordset
    Dim mSQL As String
    Dim idx As Long

    mSQL = "SELECT tblStatus.Button FROM tblStatus WHERE (((tblStatus.RoleID)=4) AND ((tblStatus.Form)='frmPUCFinalize')) ORDER BY tblStatus.Button;"
    Set rst = CurrentDb.OpenRecordset(mSQL)
    If rst.EOF Then 
        rst.Close
        Exit Sub
    End If
    With rst
        .MoveLast
        .MoveFirst
    End With

    For idx = 1 to rst.RecordCount
        Me.Controls("btn" & idx).Caption = rst![Button]
        rst.MoveNext
    Next idx

    rst.Close
End Sub

【讨论】:

  • 感谢 Kostas K.... 在 mSQL 的最后一条语句(即 ORDER BY tblStatus.Button跨度>
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 2023-03-10
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多