Шаг 177 - Свойство ReturnsRecords

Описание
Задает или возвращает значение, указывающее, возвращает ли записи запрос к серверу SQL внешней базы данных.

Значение
Задаваемое или возвращаемое значение является выражением типа Boolean и имеет значение True (по умолчанию), если запрос к серверу возвращает записи.

Замечания
Не все запросы к серверу SQL внешней базы данных возвращают записи. Например, инструкция SQL UPDATE обновляет записи и не возвращает записей, в то время как инструкция SQL SELECT возвращает записи. Если запрос возвращает записи, то для свойства ReturnsRecords необходимо задать значение True; если запрос не возвращает записей, следует задать для свойства ReturnsRecords значение False.
Значение свойства Connect должно быть задано до указания значения свойства ReturnsRecords.

Пример
В данном примере с помощью свойств Connect и ReturnsRecords из базы данных на сервере Microsoft SQL Server отбираются пять книг, имеющих максимальные результаты продаж за год. Если обнаруживается совпадение в результатах продаж, размер выводящегося списка увеличивается и выводится сообщение с объяснением причины.

Sub ClientServerX1()

	Dim dbsCurrent As Database
	Dim qdfPassThrough As QueryDef
	Dim qdfLocal As QueryDef
	Dim rstTopFive As Recordset
	Dim strMessage As String

	' Открывает базу данных, для которой будут 
	' созданы объекты QueryDef.
	Set dbsCurrent = OpenDatabase("DB1.mdb")

	' Создает запрос к серверу для загрузки данных 
	' из базы данных Microsoft SQL Server.
	Set qdfPassThrough = dbsCurrent.CreateQueryDef("ВсеНазвания")
	qdfPassThrough.Connect = "ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers"
	qdfPassThrough.SQL = "SELECT * FROM titles " & 	"ORDER BY ytd_sales DESC"
	qdfPassThrough.ReturnsRecords = True
	' Создает временный объект QueryDef для загрузки
	' данных из запроса к серверу.
	Set qdfLocal = dbsCurrent.CreateQueryDef("")
	qdfLocal.SQL = "SELECT TOP 5 title FROM ВсеНазвания"
	Set rstTopFive = qdfLocal.OpenRecordset()
	' Отображает результаты запросов.
	With rstTopFive
	strMessage = "Первые 5 бестселлеров:" & vbCr

		Do While Not .EOF
			strMessage = strMessage & "    " & !Title & vbCr
			.MoveNext
		Loop
		If .RecordCount > 5 Then
			strMessage = strMessage & "(В списке " & vbCr & .RecordCount & 	" книг, так как несколько имеют одинаковые результаты)"
		End If

		MsgBox strMessage
		.Close
	End With

	' Удаляет новый запрос к серверу, созданный только для 
	' демонстрации.
	dbsCurrent.QueryDefs.Delete "ВсеНазвания"
	dbsCurrent.Close

End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 11.04.2002