Додаток в. приклади використання інструкцій sql для організації dde із інших додатків
Приклад 1). Організація доступу до даних Microsoft Access із Microsoft Word
Для виконання даного прикладу необходно спочатку запустити Microsoft Access.
Sub AccessDDE()
Dim intChan1 As Integer, intChan2 As Integer
Dim strQueryData As String
' Використовуємо документ System і відкриваємо базу даних Борей.mdb.
' Необхідно відкрити базу даних перед вткористанням інших документів DDE.
intChan1 = DDEInitiate("MSAccess", "System")
Даний шлях слід замінити на реальний шлях до бази даних Борей.mdb.
DDEExecute intChan1, "[OpenDatabase C:\Access\Samples\Борей.mdb]"
Вибираємо усі дані за запитом «Десять самых дорогих товаров».
intChan2 = DDEInitiate("MSAccess", "Борей.mdb;" _
& "QUERY Десять самых дорогих товаров")
strQueryData = DDERequest(intChan2, "All")
DDETerminate intChan2
' Закриваемо базу даних.
DDEExecute intChan1, "[CloseDatabase]"
DDETerminate intChan1
' Друкуємо дані у вікні отладки.
Debug.Print strQueryData
End Sub
Приклад 2).В програмі Visual Basic відкривається сеанс обміну DDE з Microsoft Access.
Dim intChan1 As Integer, strResults As String
intChan1 = DDEInitiate("MSAccess", "System")
' Вибирається список документів, які підтримуються документом System.
strResults = DDERequest(intChan1, "SysItems")
' Викликається макрокоманда OpenDatabase, яка відкриває базу даних Борей.mdb.
' Данний шлях слід замінити на реальний шлях до бази даних Борей.mdb.
DDEExecute intChan1, "[OpenDatabase C:\Access\Samples\Борей.mdb]"
Документ базаДаних надає ім’я файла існуючої бази даних. Дозволяється беспосередньо вказувати ім’я бази даних (Наприклад, Борей) або вказувати ім’я та расширення “.mdb” (C:\Msoffice\Access\Samples \Борей.mdb). Після відкриття сеанса обміну DDE з базою даних можна отримати список усіх об’єктів цієї бази даних.
Приклад 3). Розглянемо приклад відкриття в програмі Visual Basic форми «Співробітники» з бази даних «Борей» (Борей.mdb).
' в програмі Visual Basic відкривається сеанс обміну DDE з базою даних Борей.
'База даних повинна бути вже відкритою (див. приклад 2).
intChan2 = DDEInitiate("MSAccess", "Борей")
' Запитується список форм з бази даних Борей.mdb.
strResponse = DDERequest(intChan2, "FormList")
' Для відкриття формы «Сотрудники» викликаємо макрокоманду ОткрытьФорму (OpenForm) з необхідими аргументами.
DDEExecute intChan2, "[OpenForm Сотрудники,0,,,1,0]"
intChan1 = DDEInitiate("MSAccess", "Борей;SQL")DDEPoke intChan1, "SQLText", "SELECT *"DDEPoke intChan1, "SQLText", " FROM Заказы"DDEPoke intChan1, "SQLText", " WHERE [Стоимость доставки] > 100;"strResponse = DDERequest(intChan1, "NextRow")DDETerminate intChan1
Приклад 4).
В наступному прикладі демонструється використання механізму DDE в програмі Visual Basic для даних даних із таблиці в базі даних «Борей» та вставки даних у текстовий файл.
Sub NorthwindDDE
Dim intChan1 As Integer, intChan2 As Integer, intChan3 As Integer
Dim strResp1 As Variant, strResp2 As Variant, strResp3 As Variant
' В модулі Visual Basic запитуємо дані з таблиці «Типы», запит «Каталог» і таблиця «Заказы» в базі даних Борей.mdb.
' База даних має бути вже відкрита.
intChan1 = DDEInitiate("MSAccess", "Борей;TABLE Типы")
intChan2 = DDEInitiate("MSAccess", "Борей;QUERY Каталог")
intChan3 = DDEInitiate("MSAccess", "Борей;SQL SELECT * " _
& "FROM Заказы " _
& "WHERE КодЗаказа > 10050;")
strResp1 = DDERequest(intChan1, "All")
strResp2 = DDERequest(intChan2, "FieldNames;T")
strResp3 = DDERequest(intChan3, "FieldNames;T")
DDETerminate intChan1
DDETerminate intChan2
DDETerminate intChan3
' Вставляемо дані в текстовий файл.
Open "C:\Дані.TXT" For Append As #1
Print #1, strResp1
Print #1, strResp2
Print #1, strResp3
Close #1
End Sub
Контрольні питання
1. За допомогою якої мови зовнішні конвертори підтримують доступ до баз даних із інших додатків?
2. Чому постійно удосконалюються додатки, що здатні отримувати доступ та змінювати дані, які зберігаються у різноманітних системах баз даних?
3. Що необхідно для утворення середовища у якому дані логічно упорядковуються?
4. Чи є переваги реляційної моделі даних перед іншими моделями даних?
5. Чому вважають, що Е. Кодд зробив суттєвий внесок в розробку реляційної алгебри?
6. На яких теоретичних засадах базуються засоби маніпулювання відношеннями?
7. Що у реляційній алгебрі прийнято називати «предикатом»?
8. Чи можна обмежити вибір даних (із відношення) по вертикалі та по горизонталі?
9. Чи дозволяють операції реляційної алгебри на основі кількох відношень будувати нові відношення (таблиці)?
10. Чи дозволяють операції реляційної алгебри на основі кількох відношень розроблювати алгоритми роботи з таблицями?
11. Чи пов’язана поява мови SQL з дослідженнями моделей даних?
12. Які реляційні системи управління базами данних ви можете назвати?
13. Чи існує стандартизована мова програмування, яка використовується для управління та взаємодії даними в РСУБД?
14. Призначення мови SQL? Чи завжди SQL і РСУБД працюють разом?
15. В чому полягає правило встановлення відповідності записів, що вибираються із різних таблиць бази даних?
16. Назовіть операції з’єднання, які ви знаєте.
17. Вкажіть синтаксис речення FROM в інструкціях SQL для вибору даних із зв’язаних таблиць з однаковими множинами значень полів зв’язку.
18. Що вказує на відсутність відповідного запису у зв’язаних таблицях?
19. Вкажіть синтаксис речення FROM для вибору даних із зв’язаних таблиць з різними множинами значень полів зв’язку.
20. У якому реченні інструкцій SQL вказується умова вибору записів без повторень. Як записується предикат для такого вибору?
21. Як розуміти зовнішнє об’єднання таблиць?
22. Вкажить різновиди зовнішнього об’єднання таблиць.
23. Вкажіть синтаксис речення FROM в інструкціях SQL для вибору даних при лівому зовнішньому об’єднанні таблиць.
24. Вкажіть синтаксис речення FROM в інструкціях SQL для вибору даних при правому зовнішньому об’єднанні таблиць.
25. Які агреговані функції передбачено стандартами SQL? Навести приклади.
26. Як можна в інструкції SQL підрахувати кількість непорожніх записів в таблиці?
27. Яке призначення ключового слова AS в інструкціях SQL?
28. Для чого використовують в інструкціях SQL речення GROUP BY та HAVING ?
Література
1. Гавриленко В.В., Логачов Є.Г., Струневич Л.М. СУБД:технологія розв’язання функціональних задач на транспорті: Навч. посіб. Для студ. Вищ. Навч. закл.- К.: НТУ, 2007.-151 с.
2. Гавриленко В.В., Логачов Є.Г., Струневич Л.М. СУБД:технологія розв’язання тнхніко-економічних задач на транспорті: Навч. посіб. Для студ. Вищ. Навч. закл.- К.: НТУ, 2007.-98 с.
3. htpp://msi77/narod.ru/Tables_2003.zip
4. htpp://www.sql-ex.ru
5. Роберт Шелдон,Джоффрей Мойе. MySQLбазовий курс.: Пер. с англ. – М.: ООО “И. Д. Вильямс”, 2007. —880 с.