Міністерство освіти і науки України
Національний універстет „Львівська політехніка”
ЗВІТ
про лабораторну роботу №4
з курсу „Операційні системи і бази даних”
Тема: Пошук і вибірка інформації в базі даних засобами Visual Foxpro
Варіант 10
ЗАВДАННЯ
Ознайомитися із засобами Visual FoxPro для виконання пошуку записів в таблицях та вибірки інформації з бази даних.
Дослідити виконання послідовного (1) і швидкого (2) пошуку записів в таблицях бази даних. Умови пошуку визначені в колонці “Пошук” таблиці 1. Для вводу параметрів пошуку розробити екранну форму. Результати пошуку відслідковувати в BROWSE – вікні, а також виводити у файл командою DISPLAY.
Виконати вибірку інформації з бази даних з допомогою команди SQL SELECT… Умови і параметри вибірки визначені в колонці “Вибірка” таблиці 1. Для вводу параметрів вибірки розробити екранну форму.
Виконання пошуку і вибірки реалізувати у вигляді окремих процедур Visual FoxPro.
Предметна область:
Облік приладів в науково-дослідному центрі
Пошук (завдання 1):
Пошук приладів вказаного типу, що знаходяться у вказаній лабораторії
Пошук (завдання 2):
Пошук приладу за інвентарним номером
Вибірка:
Вибірка на екран списку видачі всіх приладів для вказаної лабораторії. Виконати групування по прізвищах працівників і впорядкувати за датою видачі.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Пошук даних реалізує переміщення покажчика в активній таблиці на запис, який відповідає заданому критерію, з метою виводу, редагування або використання інформації, що зберігається в записах як активної, так і зв’язаних з нею таблиць.
Послідовний пошук
Виконується, як правило для не індексованої активної таблиці. Виконання пошуку здійснюється командою
LOCATE FOR <виразL1>
[<межі>]
[WHILE <виразL2>]
[NOOPTIMIZE]
Після того як команда LOCATE знайде необхідний запис, пошук наступного запису, який буде відповідати задній умові, можна продовжити командою CONTINUE. Процес пошуку відновлюється з запису, який стоїть безпосередньо після тільки що знайденого. Команди CONTINUE можна повторювати, поки не буде досягнута межа діапазону або кінець таблиці.
Швидкий пошук
Виконується для активної або однієї з відкритих таблиць на основі використання головного або одного з відкритих індексів методом половинного ділення. Пошук завжди виконується по всій таблиці.
Виконання швидкого пошуку здійснюється командою
SEEK вираз
[ORDER виразN|файл[.idx]|[TAG] тег [OF файл[.cdx]]
[ASCENDING|DESCENDING]]
[IN областьN|таблиця]
Вибірка
Вибірка даних реалізує відбір та вивід записів із активної та зв’язаної з нею таблиць, що відповідають заданим критеріям з можливістю їх групування та впорядкування.
Вибірка даних за зразком є одним з найбільш потужних та гнучких засобів отримання необхідної інформації з однієї або декількох таблиць. Результатом вибірки є таблиця, яка може бути занесена в масив, записана в новоствореному файлі таблиці, в текстовому файлі, відображена в вікні BROWSE, або виведена в вигляді звіту на друк.
Запити виконуються з допомогою SQL-команди SELECT… або за наперед створеною в конструкторі запитів Query Designer формою.
Розглянемо найбільш універсальний засіб – команду SELECT…
SELECT [ALL|DISTINCT]
[таблиця.]вираз1 [AS виразС1]
[,[таблиця.]вираз2 [AS виразС2]…]
FROM [база_даних!]таблиця1 [псевдонім1]
[,[база_даних!]таблиця2 [псевдонім2]…]
[[INTO приймач]|[TO FILE файл [ADDITIVE]|
TO PRINTER [PROMPT]|TO SCREEN]]
[PREFERENCE <ідентифікатор_властивостей>]
[NOCONSOLE]
[PLAIN]
[NOWAIT]
[WHERE вираз_зв’язкуL1 [AND вираз_зв’язкуL2…]
[AND|OR вираз_фільтраL1 [AND|OR
вираз_фільтраL2…]]]
[GROUP BY вираз_групи1[,вираз_групи2…]]
[HAVING вираз_фільтраL]
[UNION [ALL] SELECT…]
[ORDER BY вираз_сортування1[ASC|DESC]
[,вираз_сортування2[ASC|DESC]…]]
ТЕКСТИ ПРОГРАМ
Пошук (завдання 1):
CLOSE DATABASES
SET DEFAULT TO "D:\DATABASES\vfp\10\"
OPEN DATABASE prylady.dbc EXCLUSIVE VALIDATE
CLOSE TABLES
USE oblik IN 0 ORDER invent_nom
USE prylad IN 0 ORDER
USE pracivnyk IN 0 ORDER nom_praciv
SET RELATION TO invent_nomer INTO oblik IN prylad
SET RELATION TO nomer_pracivn INTO pracivnyk IN oblik ADDITIVE
SELECT prylad
SET SKIP TO oblik, pracivnyk
TypPryladu = ALLTRIM(thisform.Text1.value)
NomerLab = thisform.Spinner1.value
LOCATE FOR prylad.typ = TypPryladu AND pracivnyk.nomer_lab = NomerLab;
AND oblik.data_povern < DATE()
DO WHILE FOUND()
BROWSE FIELDS prylad.invent_nomer, prylad.typ, pracivnyk.pib,;
pracivnyk.nomer_lab
CONTINUE
ENDDO
Пошук (завдання 1):
Poshuk = thisform.Spinner1.value
SELECT prylad
SEEK Poshuk ORDER invent_nom
IF FOUND()
BROWSE
ENDIF
Вибірка:
NomerLab = thisform.Spinner1.value
SELECT prylad.invent_nomer, prylad.typ, prylad.marka,;
pracivnyk.pib, oblik.data_vydachi;
FROM prylad, pracivnyk, oblik;
WHERE prylad.invent_nomer = oblik.invent_nomer AND;
pracivnyk.nomer_pracivn = oblik.nomer_pracivn AND;
pracivnyk.nomer_lab = NomerLab;
GROUP BY pracivnyk.pib;
ORDER BY oblik.data_vydachi
РЕЗУЛЬТАТИ ВИКОНАННЯ ЛАБОРАТОРНОЇ РОБОТИ
Пошук (завдання 1):
Якщо ми через форму задали шукати прилад з типом „Осцилограф”, який знаходить в другій лабораторії, то покажчик в таблиці перемістився на відповідну позицію, як видно з малюнка.
Пошук (завдання 1):
Якщо ми через форму задамо інвентарний номер приладу 3, то покажчик в таблиці переміститься на відповідну позицію в таблиці.
Вибірка:
Якщо через форму ввести номер лабораторії 5, то будемо мати наступний результат:
ВИСНОВОК
В даній лабораторній роботі ми навчилися виконувати пошук в таблицях потрібної інформації з допомогою засобів Foxpro, а також вивчили застосування вибірки з допомогою структурованої мови запитів SQL, а зокрема інструкцією SELECT.