Категорії

Інші сайти по VB

Робота з базами даних в Visual Basic

text-indent

База даних - це сукупність даних, яка призначена для машинної обробки і служить для задоволення потреб багатьох користувачів.

Зазвичай під базою даних (БД) розуміється деяким чином впорядкований набір уніфікованої інформації. Припустимо у нас є телефонна книга (це, до речі, класичний приклад), в якій знаходиться інформація про всіх абонентів телефонної станції. Природно, в цьому випадку інформація буде представлена у вигляді регулярної структури, наприклад, за допомогою таблиці.

Кожен рядок такої таблиці називається записом (record). Кожен стовпець називається полем (Field). На перетині рядків і стовпців розташовані елементи даних, в яких, власне, і зберігається інформація.

База даних - це сукупність даних, яка призначена для машинної обробки і служить для задоволення потреб багатьох користувачів.

При роботі з такими таблицями часто виникають питання, связвнниє з пошуком інформації, її сортуванням і так далі Ці питання розглянуті в даному розділі.

Робота з БД через елемент Data

Елемент управління Data в Visual Basic забезпечує можливість формувати могутні і різноманітні застосування бази даних з дуже невеликим об'ємом програмування.

Доступ до даним за допомогою елементу управління Data

Елемент управління Data реалізує доступ до даним з використанням процесора бази даних Microsoft Jet. Ця технологія забезпечує доступ до баз даних багатьох форматів.

Процес створення застосування бази даних із застосуванням елементу управління Data включає наступні два кроки:

1. Додати елемент управління Data до форми і встановити властивості, що специфікують базу даних і таблицю, з якої відбиратимуться дані.

2. Додати до форми зв'язані елементи управління і встановити їх властивості, щоб пов'язати їх з елементом управління Data; після цього в них можуть відображатися дані.

Використання зв'язаних елементів управління

Після розміщення зв'язаного елементу управління у формі і установки його властивостей в цьому елементі управління автоматично відображаються дані з бази даних. Якщо користувач змінює дані в зв'язаному елементі управління, ці зміни автоматично фіксуються в базі даних, коли користувач переміщається на інший запис. З даними може бути зв'язаний ряд вбудованих елементів управління Visual Basic, включаючи прапорець (Checkbox), образ (Image), напис (Label), зображення (Picturebox), текстове поле (Textbox), простій список (Listbox), поле із списком (Combobox) і OLE-контейнер.

Деякі властивості і методи елементу управління Data

Властивість Connect

Властивість Connect визначає тип бази даних, яку потрібно відкрити. Ця властивість може включати такі параметри домена захисту, як ідентифікатор користувача і пароль.

Властивість Exclusive

Властивість Exclusive визначає, чи отримає користувач виняткове право доступу до бази даних. Якщо властивість Exclusive встановлена в True і потім користувачі успішно відкриває базу даних, ніяке інше застосування не зможе відкрити базу даних, поки вона не буде закрита даним користувачем.

Властивість Readonly

Властивість Readonly визначає, чи може користувач модифікувати базу даних. Якщо модифікувати базу даних не планується, ефективніше буде встановити властивість Readonly в True.

Властивість Recordset

Властивість Recordset - об'єкт, який містить набір записів, повернених елементом управління Data. З цією властивістю пов'язані властивості і методи, які можна використовувати при роботі з поверненими записами.

Властивості Bofaction і Eofaction

Ці властивості визначають, яку дію повинен виконати елемент управління Data, коли властивості BOF або EOF набору записів приймають значення True.

Наприклад, якщо властивість Eofaction елементу управління Data встановлена в vbactionaddnew і елементі управління Data використовується для переміщення нижче останнього запису набору записів, буде автоматично виконаний метод Addnew, що дозволяє вводити новий запис.

Метод Refresh

Метод Refresh регенерує об'єкт Recordset. Якщо в період виконання змінюється властивість Recordsource, необхідно викликати метод Refresh, щоб відновити набір записів. У наступному фрагменті показано, як використовувати метод Refresh:

Data1.RecordSource = "SELECT * FROM Employees " & "WHERE [Employee ID] = " & txtEmpID.text

Data1.Refresh

Об'єкт Recordset

У застосуванні бази даних користувачі переміщаються по записах бази даних, використовуючи кнопки елементу управління Data. Нижче показано, що "ховається" за елементам управління Data і його кнопками

Що таке Recordset?

Об'єкт Recordset - весь набір записів, до яких звертається елемент управління Data. Набір записів зберігається в пам'яті, у разі потреби вивантажуючись на диск.

Для маніпулювання набором записів використовується властивість Recordset елементу управління Data. Один запис набору Recordset є поточним. Інформація з поточного запису відображається в зв'язаних елементах управління. Позицію поточного запису можна змінити, клацнувши кнопку елементу управління Data або програмно в коді за допомогою методів об'єкту Recordset.

Визначення меж набору записів

Якщо для зміни позиції поточного запису використовується програмний код, необхідно визначити початок і кінець набору записів, контролюючи властивості EOF і BOF об'єкту Recordset. При переміщенні до запису EOF або BOF виконується дія, встановлена значенням властивості Bofaction або Eofaction.

Наприклад, можна встановити Eofaction так, щоб автоматично додавався новий запис. Якщо властивість Eofaction встановлена до EOF, то при переміщенні до запису EOF ніякої дії виконуватися не буде. У разі ж переміщення на один запис до BOF або після EOF повертається помилка виконання.

Використовувати об'єкт Recordset певного елементу управління Data в програмному коді можна через властивість Recordset елементу управління Data, як показано в наступному фрагменті:

Data1.Recordset.MoveNext 'Перемещение на следующую запись набора

If Data1.Recordset.EOF Then Data1.Recordset.MoveLast

Властивості і методи об'єкту Recordset

Для відбору інформації з набору записів використовуються властивості і методи об'єкту Recordset. Вони дозволяють переміщатися по записах, додавати, модифікувати або видаляти записи.

Властивості BOF і EOF

Властивості BOF і EOF об'єкту Recordset указують, чи встановлена позиція поточного запису в наборі перед першим записом або після останнього запису. Якщо в наборі записів немає ніяких записів, то і властивість BOF, і властивість EOF - True.

Метод Addnew

Додати новий запис до набору записів можна методом Addnew. При виконанні методу Addnew Visual Basic очищає зв'язані елементи управління і встановлює для властивості Editmode елементу управління Data значення dbeditadd.

Новий запис не буде доданий до бази даних, поки не буде явно виконаний метод Updaterecord або Update або поки користувач не переміститься на інший запис.

У наступному фрагменті показано, як додати новий запис до набору:

Data1.Recordset.AddNew

Метод Updaterecord елементу управління Data

Для збереження поточного запису в базі даних використовується метод Updaterecord. У наступному фрагменті база даних модифікується збереженням значень поточного запису:

Datal.UpdateRecord

Метод Cancelupdate елементу управління Data

Щоб відмінити метод Addnew або Edit і відновити зв'язані елементи управління даними з поточного набору записів, можна використовувати метод Cancelupdate.

Наприклад, якщо користувач змінив поля на формі, але ще не модифікував їх і вирішив відмінити зміни, метод Cancelupdate відмінить операцію, відновить поля оригінальними даними з набору записів і виведе на екран поточний запис.

Нижче показано, як відмінити додавання або редагування запису:

Datal.CancelUpdate

Метод Delete

Для видалення запису з бази даних використовується метод Delete. Видалений запис залишається поточним, поки користувач не переміщається на інший запис, як показано в наступному коді:

Data1.Recordset.Delete Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If

Події елементу Data

Елемент управління Data підтримує три події, які можна використовувати для розширення застосування бази даних: Validate, Reposition і Error. Ці події дозволяють перевизначати деякі моменти умолчательного поведінки елементу управління Data.

Елемент управління Data підтримує три події, які можна використовувати для розширення застосування бази даних: Validate, Reposition і Error. Ці події дозволяють перевизначати деякі моменти умолчательного поведінки елементу управління Data.

Подія Validate

Щоб перевірити дані до того, як запис буде збережений в базі даних, можна використовувати подію Validate. Ця подія відбувається безпосередньо перед тим, як Visual Basic переносить зміни із зв'язаних елементів управління в базу даних і переміщає покажчик поточного запису на інший запис бази даних.

Подію Validate можна використовувати для виводу користувачам запиту на підтвердження змін.

Оголошення процедури події Validate має наступний синтаксис:

Private Sub Data1_validate(Action As Integer, Save As Integer)

Параметр Action

Параметр Action указує операцію, яка ініціювала подію Validate. Подія Validate може відбутися в результаті однієї з наступних операцій:

метод Movefirst, Moveprevious, Movenext, Movelast;

метод Addnew;

метод Update;

метод Delete;

метод Find;

установка властивості Bookmark;

закриття бази даних;

визгрузка форми.

Щоб відмінити ці дії, потрібно встановити для параметра Action значення vbdataactioncancel.

Параметр Save

Параметр Save вказує чи змінені зв'язані дані. Якщо Save — True, зв'язані дані були змінені. Щоб відмінити збереження, можна встановити Save в False. У наступному фрагменті коду у користувача запрошується підтвердження змін в базі даних. Якщо користувач відповідає Немає, зміни відміняються.

Private Sub Data1_Validate(Action As Integer, Save As Integer)

Dim iResponse As Integer

If Save = True Then

iResponse = MsgBox ("Сохранить изменения?", vbYesNo)

If iResponse = vbNo Then

Save = False

Save = False

Data1.UpdateControls 'Восстановить значения полей

End If

End If

End Sub

Подія Reposition

Подія Reposition використовується для зміни виду форми або виконання деяких дій при переміщенні до нового запису.

Ця подія відбувається, коли Visual Basic переміщає покажчик поточного запису на інший запис в базі даних або при первинному відкритті бази даних.

У наступному фрагменті показано, як вивести на екран номер поточного запису з використанням властивості Absoluteposition об'єкту Recordset:

Private Sub Data1_Reposition()

Data1.Caption = "Запись № " & Data1.Recordset.AbsolutePosition + 1

End Sub

Коли користувач переміщається на новий запис, використовуючи елемент управління Data, може потрібно відображати дані у форми по-різному, залежно від конкретних значень поточного запису.

Наприклад, у формі для роботи із записами службовців можуть по-різному відображатися дані для постійних службовців, підрядчиків, службовців з відрядною платнею або службовців з окладом. Щоб задіювати вибір правильного режиму відображення для кожного запису, можна помістити відповідний код в подію Reposition.

У наступному фрагменті подія Reposition використовується для зміни стану форми:

Private Sub Data1_Reposition()

Data1.Caption = "Запись № " & Data1.Recordset.AbsolutePosition + 1

End Sub

Коли користувач переміщається на новий запис, використовуючи елемент управління Data, може потрібно відображати дані у форми по-різному, залежно від конкретних значень поточного запису.

Наприклад, у формі для роботи із записами службовців можуть по-різному відображатися дані для постійних службовців, підрядчиків, службовців з відрядною платнею або службовців з окладом. Щоб задіювати вибір правильного режиму відображення для кожного запису, можна помістити відповідний код в подію Reposition.

У наступному фрагменті подія Reposition використовується для зміни стану форми:

Private Sub Data1_Reposition()

Data1.Caption = Datal.Recordset.AbsolutePosition

If Data1.Recordset("EmployeeID") > 5 Then 'Если № служащего > 5

Option1.Value = True 'Служащий - руководитель

Else

Option2.Value = True 'Иначе, служащий - подчиненный

End If

Data1.Caption = "Запись № " & Data1.Recordset.AbsolutePosition + 1

End Sub

Подія Error

Подія Error виникає, коли користувач взаємодіє з елементом управління Data і відбувається помилка доступу до даним. Для додавання до елементу управління Data обробки помилок можна використовувати подію Error.

Наприклад, якщо користувач змінює поле і потім клацає кнопку елементу управління Data, щоб переміститися до наступного запису, елемент управління Data модифікує поточний запис. Якщо протягом модифікації має місце помилка доступу до даним, відбувається подія Error.

Після того, як відбулася помилка, значення в зв'язаних полях не змінюватимуться. Користувач може виправити значення і потім клацнути елемент управління Data, щоб спробувати модифікувати запис знову.

Вивід на екран повідомлення про помилку

Якщо до події Error не доданий код обробки помилок і, коли користувач взаємодіє з елементом управління Data, повертається помилка, Visual Basic виведе на екран повідомлення про помилку і продовжить виконання застосування.

Якщо потрібно подавити виведення стандартного повідомлення про помилку, можна встановити параметр Response процедури Еггог() у нуль і виводити на екран призначене для користувача повідомлення про помилку, як показано в наступному фрагменті:

SQL запити

Всі операції з даними в БД виконуються за допомогою операторів SQL (SQL statement). Якщо працювати через елемент Data, то для виконання оператора SQL необхідно привласнити властивості Recordsource рядок, що містить запит і потім відновити БД.

Ось список основних операторів SQL:

SELECT і FROM

Оператор SELECT використовується для витягання інформації з БД. Він складається з директиви SELECT за яким через кому перераховуються поля, з яких повинна бути виведена інформація. Після них обов'язково слідує оператор FROM, який указує на таблицю в БД. Наприклад: "SELECT Телефон, Прізвище, Код FROM Телефони".

В даному прикладі на екран будуть виведений 3 стовпці в порядку, вказаному в запиті. Тут і далі можна вживати замість точних назв зірочку. Наприклад "SELECT Телефон, Прізвище, Код FROM *".

ORDER BY

Для впорядковування даних в стовпці по возврастанію або убуванню використовується опрератор ORDER BY. У наступному прикладі відбувається сортування за збільшенням в стовпці Прізвище: "SELECT * FROM Телефони ORDER BY [Прізвище] ASC" або замість ASC поставити DESC (тоді по убуванню).

DISTINCT

Щоб виключити дублюючі значення в стовпці, використовується оператор DISTINCT. Наприклад: "SELECT DISTINCT Прізвище FROM Телефони".

Булеві оператори

У SQL допустимі стандартні булеві оператори, такі як =, >, <, <>, <=, >=. Також можна використовувати комбінації цих операторів через AND, OR або XOR. Приклад: "SELECT * FROM Телефони WHERE ([ID] < 3000) AND ([Прізвище] LIKE 'Вол*')".

IN

Цей оператор дозволяє використовувати множину як умову відбору значень. Наприклад, наступний запит виведе абонентів, у яких номери телефонів 2-22-22 і 2-27-22.

"SELECT * FROM Телефони WHERE [Телефон] IN ('2-22-22','2-27-22')".

BETWEEN

На відміну від попереднього оператора, цей дозволяє вказати діапазон значень для вибору. У наступному прикладі будуть виведені всі записи, в яких поле ID

більше 2000 але менше 5000.

"SELECT * FROM Телефони WHERE [ID] BETWEEN 2000 AND 5000".

LIKE

Цей оператор застосовується виключно до полів строкового типу. Він дозволяє вибрати записи по вказаній масці. Наприклад: "SELECT * FROM Телефони WHERE [Телефон] LIKE '2-2*'".

IS NULL

За допомогою цього оператора можна відобразити записи, які містять порожні поля. У наступному прикладі створюється новий запис, в якому поле ID не задане і оператор SQL виведе на екран цей запис

Data1.Recordset.AddNew

Data1.Recordset.AddNew

Data1.Recordset![Прізвище] = "Новий абонент"

Data1.Recordset![Телефон] = "2-15-65"

Data1.Recordset.Update

Data1.RecordSource = "SELECT * FROM Телефони WHERE [ID] IS NULL"

Data1.Refresh

Агрегатні функції

Існують декілька функцій для роботи над групою вибраних полів:

COUNT - підрахунок рядків, отриманих в ході запиту;

· COUNT - підрахунок рядків, отриманих в ході запиту;

· SUM - сума значень вибраного поля;

· AVG - середнє арифметичне поля;

· MAX - виводить найбільше значення з поля; ·

MIN - виводить найменше значення з поля;

Приклад: "SELECT SUM(ID), MAX(ID), COUNT(Прізвище) FROM Телефони".

GROUP BY

Цей оператор використовується для угрупування декілька полів. Приклад: "SELECT Телефон, COUNT(ID) FROM Телефони GROUP BY Телефон".

AS

Щоб змінити ім'я поля використовується оператор AS. У наступному прикладі змінюється ім'я поля ID на ім'я Ідентифікатор: "SELECT Код, Прізвище, ID AS [Ідентифікатор], Телефон FROM Телефони".

Додавання виразів

У результат запиту можна додавати арифметичні вирази. У них допустиме використання операцій +, - *, /. Наприклад, для того, щоб вивести таблицю з подвоєним полем Id потрібно: "SELECT Код, Прізвище, Id * 10, Телефон FROM Телефони".

На головну
Hosted by uCoz