оновлення tadotable

оновлення TADOTable

Вітаю!
Допоможіть будь ласка розібратися, я використовую компонент TADOTable, база * .mdb (MS Access). Моя програма виробляє зміни в цій базі за допомогою SQL-запитів. Для відображення вмісту таблиці використовую DBGrid. Проблема в наступному: після додавання (видалення) нового рядка, мені потрібно оновити DBGrid, для цього я не знайшов нічого розумнішого, ніж зробити:
ADOTable.Active: = False;
ADOTable.Active: = True;
однак цей спосіб працює тільки після проходження 4-х секунд з моменту виконання SQL-запиту. Подібний приклад бачив в інтернеті - там використовують таймер, який запускається після
ADOQuery.ExecSQL;
і через 5 секунд робить
ADOTable.Active: = False;
ADOTable.Active: = True;
Timer1.Enabled: = False;
Мене не устраевает такий спосіб, може хто розповість як грамотно і швидко оновити ADOTable і DBGrid.
Дякуємо.


> Проте цей спосіб працює тільки після проходження 4-х
> Секунд з моменту виконання SQL-запиту

Відбувається відразу, просто в тебе або запит 4 сек. виконується, або даних повертається стільки, що вони 4 сек. на клієнта передаються.

навряд чи є інший спосіб як перевідкриття датасет

> [0] Alex870 # XA0; (28.09.06 15:40)
А чому не влаштовує TADOTable.Insert, TADOTable.Edit і TADOTable.Delete?

> А через кешування таку дурницю не може бути?
коственний. тому тут 100% ігнорування компонента TADOConnection (рядки прям у датасета прописані.), а так як в цьому випадку у кожного свій конект-> com обьект-> кеш то природні затримки поки вони все не синхронізовані. # XA0;

> Може хто розповість як грамотно і швидко оновити ADOTable
грамотно ADOTable не оновлювати, а спустити в унітаз. а користуватися і оновлювати нормальний ADODataSet.

Спсибо всім!

> Відбувається відразу, просто в тебе або запит 4 сек. виконується,
> # XA0; або даних повертається стільки, що вони 4 сек. на клієнта
> Передаються.

Ні, запит виконується швидко, їх виконується море, але для поновлення (або для зміни стану Active) необхідно 4 сек нічого не робити з ADOTable. Але раз знавці кажуть, що ні хріна не вийде, то буду колупати інший Компаненти.


> Є, і не один

Ну хоч один скажіть, а то цікаво, та й якщо вийде, буде гуд, а то багато коду переписувати треба.


> MsGuns

Не сумніваюся в твоїй компетенції, ну дійсно підкажи, цікаво.

Напр. метод Requery.


> Але для поновлення (або для зміни стану Active) необхідно
> 4 сек нічого не робити з ADOTable.

ти так і не озвучив. що буде, якщо перевідкрити твій тайбле через 2 секунди після апдейта?

Навіщо потрібен ADOTable (особливо для Акцесс) і при цьому одночасне використання запитів, ні як не можу зрозуміти. А ось засудити можу і осужаю.


> Ти так і не озвучив. що буде, якщо перевідкрити твій тайбле
> Через 2 секунди після апдейта?

Тоді нічого не відбувається, тобто DBGrid не оновлюється, але я засумнівався: чи то DBGrid оновлюється, але отримує старі дані, толі в цей час щось не дає перевідкрити таблицю, адже я не отримаю ексепшена на операцію Active: = false, а якщо він не став false по будь то причини, то і Active: = true помилки не дасть, так що є варіант, що раніше 4 секунд щось не дає змінити стан active, хоча це тільки припущення.

В цьому випадку і в гріді буде те, що потрібно і запити необхідні виконуватися.

А комбінацію
ADOTable.Active: = False;
ADOTable.Active: = True;
признач кнопочки "Оновити" - це буде потрібно тільки якщо хочеться побачити зміни, зроблені іншими користувачами.

Пам'ять: 0.75 MB
Час: 0.096 c

Схожі статті