Рейтинг пользователей: / 0
ХудшийЛучший 

УДК 004.04

Біляєва К.О.

ВИРІШЕННЯ ПРОБЛЕМИ ОНОВЛЕННЯ DBGrid ПРИ ЗАПИСІ ДАНИХ

Херсонський національний технічний університет

 

In the report possibility of improvement of the interface is considered at work with a database through the basic module of the program. The simple variant of realization that allows to avoid duplication of the data is shown.

Keywords: a database, duplication, updating.

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

Ключові слова: база даних, дублювання, оновлення.

При використанні програмних засобів найчастіше виникає необхідність у збереженні інформації, яка розраховується, порівнюється, знаходиться в процесі вирішенні задачі. Для цього застосовуються так звані СУБД – системи управління базами даних. Вони дозволяють організовувати роботу з базами даних, що можуть поєднувати в собі різну за типами та об’ємами інформацію та мати можливість швидкого доступу до необхідних даних. СУБД є доволі поширеним програмним середовищем, серед найбільш розповсюджених варто зазначити Access, Foxpro, Ms SQL та ін.

Інколи при створенні програмного продукту в іншому середовище виникає необхідність звертатися до баз даних, які розроблялись за допомогою стандартних СУБД.

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

Методи роботи з БД включають в себе створення самої бази, потім встановлення зв’язку між середовищем програмування та СУБД, після цього з’являється можливість доступу до інформації, що знаходиться у базі через основну програму. Найбільша увага в літературі приділяється першим двом пунктам [1-3].

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

При роботі з СУБД ми зупинимось на студії Delphi, як засобу програмування основного модулю, та базі даних Access. Принципові особливості спілкування поданих середовищ детально описані в існуючій на сьогоднішній день літературі. Там наводяться основні драйвера, програми та компоненти, які необхідні для результативної роботи бази даних та програмної оболонки. Так, для їх коректного функціонування потрібна наявність стандартної компоненти Delphi DBE Administrator та ADO, а також Microsoft.Jet.OLEDB.4.0. Увесь інший набір необхідних елементів залежить від типу вирішуваної задачі.

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

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

ADOQuery1.SQL.Text = ‘Insert into Table_name( info1, info2, info3) values (’ +p1+’,’+p2+’,’+p3+’)’;

Тепер напишемо умову, згідно якої ми не зможемо включити до бази запис, який дублює ключове значення таблиці. Для цього ми використаємо Locate. В якості першого параметру запишемо ключове поле, а другого – значення з яким будемо порівнювати, в додаткових налаштуваннях не має потреби, тому після коми зазначимо порожні квадратні дужки.

Тоді, програмний код буде виглядати наступним чином:

If not ADOTable1.Locate (‘info1’, t, []) then ADOQuery1.ExecSQL;

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

У DBGrid наведено певну інформацію, яка представлена у табл. 1.

Таблиця 1

Інформація з таблиці бази даних

Info1

Info2

Info3

1

234

222

2

33

44

3

444

55

 

Тоді, при використанні представленого вище запиту для даних Info1=2, Info2=45, Info3=56, отримаємо зауваження, що дані дублюються. Так як таблиця вже містить запис, де ключове поле дорівнює 2.

Коли ж вносимо інформацію типу Info1=4, Info2=45, Info3=56, ніяких зауважень ми не побачимо, дані будуть записані до вихідної бази. Проте, на цьому етапі ми не зможемо переглянути введені дані у таблиці у DBGrid.

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

Крім того, що ми не зможемо побачити оновлену таблицю у DBGrid, при внесенні даних: Info1=4, Info2=45, Info3=56, отримаємо помилку в роботі. Це відбувається тому, що система не зможе перевірити цю інформацію у DBGrid, тобто в ньому повторів вона не знайде, і подасть до бази. А так як значення ключового поля буде дублюватися, то отримаємо відмову в роботі програми.

Щоб вирішити цю проблему та не ускладнювати код програми написанням додаткових функцій, достатньо властивість Active спочатку прирівняти False, а потім True. При цьому після повторної активації DBGrid заново отримає данні, які знаходиться у таблиці. Тому ця інформація буде включати і останні внесені зміни.

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

Отже, в доповіді наводився метод усунення можливості дублювання даних по вказаному полю при використанні засобів Delphi. Як приклад, він був організований для одного поля таблиці, але виконуючи вказану послідовність дій не важко організувати перевірку всіх необхідних даних.

 

Література:

1. Конопка Рей Создание оригинальных компонент в среде Delphi. — К.: НИПФ — "ДиаСофт Лтд.", 1996. —512 с.

2. Лишнер Рэй Секреты Delphi 2: Пер. с англ./Рэй Лишнер. — К.: НИПФ — "ДиаСофт Лтд.", 1996. — 800 с.

3. Нил Дж. Рубенкинг. Язык программирования Delphi для «чайников». Введение в Borland Delphi 2006 = Delphi for Dummies. — М.: Диалектика, 2007. — 336 с.