Как просмотреть набор записей в таблице доступа с помощью vba? - PullRequest
2 голосов
/ 03 марта 2011

С помощью встроенного редактора доступа vb я написал небольшой код для анализа значений полей моей базы данных и хочу, наконец, просмотреть наборы записей в таблице внутри открытого доступа.Как новичок я могу использовать только Debug.Print для отображения имен полей.Может ли кто-нибудь из вас сказать мне, с помощью каких операторов / команд я могу выполнить мою строку SQL, чтобы просмотреть набор записей результатов со значениями?

Debug.Print FinalSQLString

Ответы [ 2 ]

7 голосов
/ 03 марта 2011

Вот основной рецепт:

Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM myTable")

Знайте, что вы используете объекты доступа к данным Jet (DAO) с Access - Google, чтобы узнать подробности.

Выражение (rs.BOF and rs.EOF) = True указывает тамстрок не было.

Используйте rs.MoveFirst, rs.MoveNext для перехода к первой и следующей строкам.Тест rs.EOF после rs.MoveNext;когда True, последняя строка уже была обработана.

rs(FieldName) возвращает значение столбца с именем FieldName (строковое выражение).

rs(1) возвращает значение второго столбца.

Когда все будет готово, rs.Close.


Невозможно передать доступ к RecordSet и отобразить его в виде таблицы.Вместо этого вам нужно будет создать объект QueryDef и использовать его для выполнения запроса и отображения таблицы результатов:

Dim qd As QueryDef

On Error Resume Next
CurrentDb.QueryDefs.Delete "temp"
On Error GoTo 0

Set qd = db.CreateQueryDef("temp", "SELECT * FROM myTable")

DoCmd.OpenQuery "temp", acViewNormal, acEdit
3 голосов
/ 03 марта 2011

Насколько я знаю, нет способа отобразить таблицу данных, содержащую экземпляр VBA набора записей.Если источником вашего набора записей является strQSL, вы можете, однако, создать таблицу с вашими результатами и открыть ее, или, что более элегантно, создать queryDef и открыть ее:

Sub ShowQd(strQdName As String, strSql As String)
'creates queryDef and display it in a datasheet'
    Dim qd As DAO.QueryDef

    Set qd = CurrentDb.CreateQueryDef(strQdName)
    With qd
        .ReturnsRecords = True
        .SQL = strSql
    End With
    DoCmd.OpenQuery strQdName
End Sub

Если вы сосредоточены на отображении вещей,Вы также можете поместить ListBox в форму, установить для его Number of columns количество полей, возвращаемых вашим запросом (qd.Fields.Count), и установить свой strSql в качестве RowSource для ListBox.И ... если вы поместите весь связанный код в эту форму, у вас теперь есть форма, которую вы можете импортировать в любой БД, чтобы быстро отобразить то, что вы хотите:)
Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...