【问题标题】:PowerPoint/MS Access VBA assistancePowerPoint/MS 访问 VBA 帮助
【发布时间】:2019-04-03 22:38:18
【问题描述】:

我正在尝试通过将 MS Access 数据库链接到 PowerPoint 来自动化报告编写过程。我不知道如何使代码将查询输出到文本框中。代码运行良好,直到出现“******”行。有谁知道如何使 label1.value 等于查询输出?谢谢!

Dim Connect As String, Source As String
Dim Connection As ADODB.Connection
Dim Recordset1 As ADODB.Recordset

'Database path info
 Dim FD As FileDialog
 Dim vrtSelectedItem As Variant
 Dim fileName As String

 Set FD = Application.FileDialog(msoFileDialogFilePicker)

With FD
If .Show = -1 Then
For Each vrtSelectedItem In .SelectedItems
MsgBox "The path is: " & vrtSelectedItem

 'Open the connection
Set Connection = New ADODB.Connection
Connect = "Provider=Microsoft.ACE.OLEDB.12.0;"
Connect = Connect & "Data Source=" & vrtSelectedItem & ";"
Connection.Open ConnectionString:=Connect

'Set RecordSet
Set Recordset1 = New ADODB.Recordset

With Recordset1
    Source = "SELECT [xxx] FROM [yyy] WHERE [zzz] = '12345'"
.Open Source:=Source, ActiveConnection:=Connection
********
***Label1.Value = Recordset1***
********
End With

Next vrtSelectedItem

End If
End With
End Sub

【问题讨论】:

  • 您打算在该标签中显示什么? Recordset1 是一个 ADODB.Recordset,因此由于您没有进行任何成员调用,因此您将获得对象的 默认属性,IIRC 将是它的 Fields 集合,它不能被强制转换成String(你得到一个type mismatch错误?)——假设你的意思是把[xxx]放到那个标签里,你需要得到那个字段的内容——Label1.Value = Recordset1.Fields("xxx").Value
  • 您也可以通过字段编号引用查询字段,例如:Label1.value=Recordset1(0) 之后不要忘记使用Recordset1.movenext。

标签: vba ms-access powerpoint


【解决方案1】:
Do
    Label1.Value = Label1.Value & vbCrLf & Recordset1.Fields("[YOUR FIELD]").Value
    Recordset1.MoveNext
Loop Until Recordset1.EOF

此代码将显示查询中的所有记录([YOUR FIELD] 字段)。

但你需要添加 Recordset1.RecordCount 以避免错误。

If Recordset1.RecordCount > 0 Then
    Do
        Label1.Value = Label1.Value & vbCrLf & Recordset1.Fields("[YOUR FIELD]").Value
        Recordset1.MoveNext
    Loop Until Recordset1.EOF
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    相关资源
    最近更新 更多