Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100

Запрос выводит старые данные

03.06.2015, 20:14. Показов 1446. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Чтобы обновить запрос (выполнить его заново) достаточно ли переключить свойство active на false и обратно на true? Просто такая проблема, на форме есть кнопка, при нажатии на которую выполняется запрос. Изменяю запись через консоль, потом пытаюсь выполнить запрос через кнопку, но при этом данные не меняются, то есть изменения не учитываются и выводятся старые данные. Если скомпилировать прогу заново, то выводятся уже новые данные, как нужно. Как правильно в таком случае обновить запрос? То есть нужно чтобы запрос перезапускался по нажатию кнопки, на данный момент у меня он срабатывает только при перезапуске программы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2015, 20:14
Ответы с готовыми решениями:

Не сохраняются старые данные при введении новых в дбгрид
Имеется БД, в ней хранятся вопросы, ответы и результаты тестирования. В таблицу Результаты данные выводятся из DbEditов при регистрации и...

Можно ли изменить старые данные в базе данных Дельфи?
можно изменить старые данные в базе данных дельфи?

Не выводит данные
В чем ошибка кода? begin form7.show; form7.ADOQuery1.Close; form7.ADOQuery1.SQL.Clear; form7.ADOQuery1.SQL.Text:='Select * from...

19
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
03.06.2015, 23:20
что за база, как подключаешься, что за консоль?
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
04.06.2015, 01:53
Цитата Сообщение от dark009 Посмотреть сообщение
Чтобы обновить запрос (выполнить его заново) достаточно ли переключить свойство active на false и обратно на true?
Достаточно.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
04.06.2015, 10:59
Для обновления данных есть метод Requery.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
04.06.2015, 11:07
Цитата Сообщение от FIL Посмотреть сообщение
Для обновления данных есть метод Requery.
Только в TADOxxx и TIBxxx. В классическом TQuery нет.
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
04.06.2015, 15:31  [ТС]
Не знаю почему, но переключение не помогает, в таблице все равно выводятся старые данные. Помогает перезапуск программы или переподключение к базе.
Вот при таком коде запрос выводит обновленные данные как и нужно
Delphi
1
2
3
  SQLQuery1.ApplyUpdates;
  SQLTransaction1.Commit;
  SQLQuery1.Open;
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
04.06.2015, 22:43
ну, cachedupdates - это как бы отдельный режим, о котором предупреждать бы надо )))
а он тебе зачем?
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
05.06.2015, 15:14  [ТС]
Дело в том, что кнопка с таким кодом не работает, хотя должна работать:
Delphi
1
2
SQLQuery1.Active:=false;
SQLQuery1.Active:=true;
То есть данные не обновляются (только после перезапуска программы). А через SQLQuery1.ApplyUpdates; работает, но насколько я знаю это применяется для изменений
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
05.06.2015, 15:18
Цитата Сообщение от dark009 Посмотреть сообщение
То есть данные не обновляются
А почему что-то должно обновляться, если новые данные еще не записаны в БД?
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
05.06.2015, 15:49  [ТС]
новые данные как раз записаны в саму бд, но при обновлении запроса (false, true) эти новые записи не выводятся.
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
05.06.2015, 15:56
Цитата Сообщение от dark009 Посмотреть сообщение
новые данные как раз записаны в саму бд
Ошибаешься. Они кэшируются. А именно записываются в БД либо при закрытии программы, либо после кода аналогичного коду в #6
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
06.06.2015, 06:30
и все равно не вижу ответа про CachedUpdates
это специальый и не очень удобный режим работы
если выставил его случайно, убери

данные записываются в базу "окончательно" при завершении транзакции через Commit
после этого они становятся видны другим транзакциям
при CachedUpdated программа "запоминает" все изменения без обращения к серверу и по команде ApplyUpdates пытается исполнить все запомненное уже на сервере БД.
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
06.06.2015, 12:18  [ТС]
У меня как раз данные и записываются через commit:
Delphi
1
2
3
4
5
6
if (dbedit1.text='') or (dbedit2.text='') or (dbedit3.text='') or (dbedit4.text='') or (dbedit5.text='') or (dbedit6.text='') or (DBMemo1.Text='') then messagedlg('Есть незаполненные поля', mtWarning, [mbOK], 0) else
  begin
  Form1.SQLQuery1.ApplyUpdates;
  Form1.SQLTransaction1.Commit;
  Form1.SQLQuery1.Active:=true;
  end;
После этого проверял записи в самой бд и она там добавляется, но в приложении при обновлении запроса ее нет, только после закрытия и открытия программы появляется. Или я вас неправильно понимаю.
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.06.2015, 18:24
Цитата Сообщение от dark009 Посмотреть сообщение
Form1.SQLQuery1.ApplyUpdates;
что это?
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
07.06.2015, 19:38  [ТС]
Для сохранения изменений в самой базе
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.06.2015, 19:43
ничуть
post пишет изменения в БД
commit завершает транзакцию и эти данные становятся видны другим транзакциям
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
07.06.2015, 19:55  [ТС]
то есть для сохранения изменений достаточно этого?
Delphi
1
2
SQLQuery1.Post;
SQLTransaction1.Commit;
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.06.2015, 20:05
если не стоит CachedUpdates = true
об этом я и спрашивал
0
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 100
07.06.2015, 20:15  [ТС]
это свойство у sqlquery?
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
07.06.2015, 21:06
пора уже почитать
http://www.delphisources.ru/pa... tesql.html

Добавлено через 5 минут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2015, 21:06
Помогаю со студенческими работами здесь

Не выводит данные на панель
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,...

Выводит не те данные (потоки)
Всем привет Столкнулся с проблемой, программа выдает не те данные Т.е работают потоки, программа делает все нужные ей проверки и если...

Запрос ADOQuery в Делфи 7 выводит не все записи
Появилась это проблема после того как я заполнила таблицу с клиентами. По началу думала что проблема в том что в поле FIO у меня появились...

Выводит сообщение: В операции должен использоваться обновляемый запрос
Всем привет!) Суть проблемы: есть приложение, которое работает с файлом БД Акцесс, компиляцию это приложение проходит успешно, и даже при...

Не получается задача на матрицы. В ответе выводит старые данные
Доброго времени суток. Такая задача: задать размер массива в ручную, элементы автоматически. строку с наименьшей сумой элементов разделить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru