Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2007, 17:08   #1
Nowichok
Пользователь
 
Регистрация: 23.11.2006
Сообщений: 53
По умолчанию Insert Into + последующее обновление

Привет всем ! С наступающей весной !
А теперь к делу ) :

При нажатииина кнопку я в БД добавляю строку с помощью INSERT INTO.
Строка добавляется в БД, но это не отображается в самой сетке DbGrid, которая связана с этой БД...поэтому приходится делать

QueryMain.close
QueryMain.open

вот думаю, если в БД будет пара тысяч записей - это постоянное закрывание /открывание не затормозит работу ?
И как это исправить, если так ?
Nowichok вне форума Ответить с цитированием
Старый 28.02.2007, 21:19   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

QueryMain.Refresh;
А еще лучше - привести нормальный текст обработчика, а не делать тайны там, где ее нет и быть не может.
Здесь ясновидящих нет!

Последний раз редактировалось mihali4; 28.02.2007 в 21:57.
mihali4 вне форума Ответить с цитированием
Старый 01.03.2007, 14:51   #3
Nowichok
Пользователь
 
Регистрация: 23.11.2006
Сообщений: 53
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
QueryMain.Refresh;
А еще лучше - привести нормальный текст обработчика, а не делать тайны там, где ее нет и быть не может.
Здесь ясновидящих нет!
Вот нашёл :

Метод Refresh немедленно обновляет записи источника данных формы, чтобы отобразить сделанные пользователями изменения в многопользовательской среде.
ВНИМАНИЕ Обратите внимание, что метод Refresh не выполняет отбор записей заново, то есть не формирует повторный запрос к базе данных. Отображаются только изменения, внесенные в текущий набор записей. При этом на экране не будут отображены данные, добавленные или удаленные из базы данных после последнего обновления набора записей. Чтобы выполнить новый отбор записей, следует выполнить метод Requery, о котором сказано ниже.


Метод Requery обновляет данные, служащие источником данных формы или элемента управления на активной форме. Данные обновляются путем повторного запроса к источнику данных формы или элемента управления. Таким образом, этот метод позволяет отображать текущие данные в форме или элементе управления.
Использование метода Requery предполагает выполнения одного из следующих действий:
Повторно выполняется запрос формы или элемента управления.
Выводятся все добавленные или измененные записи и убираются записи, удаленные из базовой таблицы формы или элемента управления.
Обновляются выводимые в форме или элементе управления записи в соответствии с изменением свойства Фильтр (Filter) формы.


Т.е. достаточно после каждого изменения делать Refresh, чтоды получить изменеёёные записи, и всё ??
Нежели каждый раз делать повторнывй запрос ко всей БД, что затормозит работу...
Nowichok вне форума Ответить с цитированием
Старый 01.03.2007, 17:40   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вот оригинал из дельфийского хэлпа:
Цитата:
Refresh method (TDataSet)
Re-fetches data from the database to update a dataset’s view of data.
Call Refresh to ensure that an application has the latest data from a database.
Переведите это самостоятельно... А то каждый переводчик видит свое.

Re:
Кстати, там есть малюсенькое замечание - Query должна быть в режиме LIVE, тогда Refresh работает... Все-таки самый лучший хэлп - у Дельфи.

Последний раз редактировалось mihali4; 01.03.2007 в 19:36.
mihali4 вне форума Ответить с цитированием
Старый 01.03.2007, 17:54   #5
Nowichok
Пользователь
 
Регистрация: 23.11.2006
Сообщений: 53
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Вот оригинал из дельфийского хэлпа:

Переведите это самостоятельно... А то каждый переводчик видит свое.
Делаю через Refresh - запись добавленав саму БД, но не показывается в DbGrid.

Приходится делать через ReQuery.
Nowichok вне форума Ответить с цитированием
Старый 04.03.2007, 02:40   #6
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

обновление TDataSet при добавлении новой записи это нормальный феномен...
ты волняешь запрос ExecSQL, затм подтверждаешь транзакцию и обновляешь DataSet
dron-s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
insert через table->grid: ошибка Geddar БД в Delphi 2 06.06.2008 13:43
mysql проблемы с INSERT proglamer PHP 4 30.03.2008 14:36
Ошибка при Выполнении Insert nimf БД в Delphi 2 27.11.2007 18:16
Insert в TQuery из библиотеки langerhed БД в Delphi 2 01.11.2007 08:10