Я пытаюсь автоматизировать процесс написания отчета, связав базу данных 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
Также вы можете ссылаться на поле запроса по номеру поля, например: Label1.value = Recordset1 (0) не забудьте после этого использовать Recordset1.movenext.
Do
Label1.Value = Label1.Value & vbCrLf & Recordset1.Fields("[YOUR FIELD]").Value
Recordset1.MoveNext
Loop Until Recordset1.EOF
Этот код отобразит все записи (поле [ВАШЕ ПОЛЕ]) в вашем запросе.
But you need to add Recordset1.RecordCount to avoid the error.
If Recordset1.RecordCount > 0 Then
Do
Label1.Value = Label1.Value & vbCrLf & Recordset1.Fields("[YOUR FIELD]").Value
Recordset1.MoveNext
Loop Until Recordset1.EOF
End If
Что вы собираетесь отобразить на этой этикетке?
Recordset1
- этоADODB.Recordset
, поэтому, поскольку вы не делаете никаких вызовов членов, вы получаете объект свойство по умолчанию, который IIRC будет его коллекциейFields
, которую нельзя принудительно преобразовать вString
(вы получаете ошибку несоответствие типов? ) - предполагая, что вы хотите поместить[xxx]
в эту метку, вам нужно получить содержимое этого поля -Label1.Value = Recordset1.Fields("xxx").Value
.