Вход


Главная страница >> Учебный процесс >> Конспекты >> MS Office. Руководство программиста по Visual Basic для MS Office 97 >> DAO - Data Access Objects >> Использование DAO с Microsoft Jet >> Объект QueryDef и набор QueryDefs >> Создание временных запросов

Переход на главную страницу

Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail :
kadan@grsu.grodno.by


[Назад]    [Содержание ]    [Вперед]

  


Создание временных запросов


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

В следующем примере для выборки данных из демонстрационной базы данных Pubs в Microsoft SQL Server создается 2 временных объекта QueryDef. Сначала программа запрашивает из таблицы titles базы данных Pubs название и идентификатор самой продаваемой книги.* Затем проводит запрос по таблице авторов и сообщает о том, что такому-то автору следует выслать чек на премиальные в соответствии с его (или ее) долей в отчислениях с каждого проданного экземпляра книги. Общая сумма премиальных составляет 1000 долларов, и каждый автор должен получить свой процент от общей суммы.

В этом примере ODBC используется через Microsoft Jet. Временные объекты QueryDef для базы данных Microsoft Jet, для источников данных ISAM или в рабочем пространстве ODBCDirect создаются по тем же принципам.

Function DetermineBonuses()
═════Const conPath As String = _
══════════"C Aprogram Files\Microsoft Office\Office\Samples\Northwind.mdb"
═════Dim dbsCurrent As Database, qdfBestSellers As QueryDef
═════Dim qdfBonusEarners As QueryDef, rstTopSeller As Recordset
═════Dim rstBonusRecipients As Recordset, strAuthorList As String

═════? открываем базу данных, в которой можно создать объекты QueryDef
═════Set dbsCurrent = OpenDatabase(conPath)

═════? создаем временный объект QueryDef для выборки данных
═════?
из базы данных Microsoft SQL Server
═════Set qdfBestSellers = dbsCurrent. CreateQueryDef("")
═════qdfBestSellers. Connect = "ODBC; DATABASE=Pubs;UID=sa;PWD=; _
══════════DSN=Publishers"
═════qdfBestSellers. SQL = "SELECT title, title_id FROM titles _
══════════ORDER BY ytd_sales DESC;"
═════Set rstTopSeller = qdfBestSellers. OpenRecordset()
═════rstTopSeller. MoveFirst
═════?
создаем временный объект QueryDef для выборки данных из базы
═════?
данных Microsoft SQL Server по результатам первого запроса
═════Set qdfBonusEarners = dbsCurrent. CreateQueryDef("")
═════qdfBonusEarners. Connect = "ODBC: DATABASE=Pubs;UID=sa;PWD=; _
══════════DSN=Publishers"

═════qdfBonusEarners. SQL = "SELECT * FROM titleauthor _
══════════WHERE title_id = ?" & rstTopSeller!title_id & "?"
═════Set rstBonusRecipients = qdfBonusEarners. OpenRecordset()

═════? формируем строку с именами авторов, которым причитается премия
═════Do While Not rstBonusRecipients. EOF
══════════strAuthorList = strAuthorList & rstBonusRecipients!au_id & _
═══════════════": $" & CStr(10 * rstBonusRecipients!royaltyper) & vbCr
══════════rstBonusRecipients, MoveNext
═════Loop

═════? выводим результаты
═════MsgBox "Please send a check to the following " & _
══════════"authors in the amount shown: " vbCr & _
══════════strAuthorList & " for outstanding sales of " & _
══════════rstTopSeller!Title & "."

═════rstBonusRecipients. Close
═════rstTopSeller .Close
═════dbsCurrent. Close
End Function



[Назад]    [Содержание ]    [Вперед]

  



Текст пособия подготовлен на основе материалов книги
Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97 / Пер. с англ. - М.: Издательский отдел "Русская Редакция" ТОО "Channel Trading Ltd.", 1997. - 544 с.: илл.
c Оригинальное издание на английском языке,
Microsoft Corporation, 1997
c Русский перевод,
Microsoft Corporation, 1997

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017