Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi и базы данных
Войти
Регистрация
Восстановить пароль
 
Jin X
❗❗ RTFM 👈
4000 / 1144 / 151
Регистрация: 14.12.2014
Сообщений: 2,285
Записей в блоге: 5
Завершенные тесты: 2
#1

После добавления новой записи она не появляется в запросе - Delphi БД/MS Access

05.06.2018, 00:31. Просмотров 124. Ответов 5
Метки нет (Все метки)

Доброй ночи.

Нажимаю на TBNavigator'е кнопку Insert (+), в новой строке DBGrid'а ввожу информацию. Жму в навигаторе на Post (√). Появилось значение в DBGrid.DataSource.DataSet.FindField('Код'). Далее делаю SQL-запрос через ADOQuery. В результатах запроса новой записи нет. Открываю БД в MS Access, там тоже нет. Для появления нужно переместиться на другую запись.

Как сделать так, чтобы запись появлялась в запросе сразу после Post'а?

Добавлено через 14 минут
Ан-нет, пардон, проблема в другом.
DBGrid и DBLookupComboBox привязаны к одному и тому же DataSource.
После добавления записи в DBGrid в DBLookupComboBox появляется пустая строка, хотя поле с именем, которое задано в комбобоксе как ListField обновлено. И в MS Access оно видно тоже. Но в комбобоксе пустая строка.

В чём может быть проблема и как её решить?

Добавлено через 5 минут
Если я делаю ADOQuery.Close+Open, комбобокс обновляется, но тогда перезагружается и DBGrid (лишнее моргание, появляются скрытые колонки). Вариант не очень, в общем...
http://www.cyberforum.ru/delphi-database/thread2259087.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2018, 00:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос MS Access После добавления новой записи она не появляется в запросе (Delphi БД):

Позиционирование курсора в DBGrid после добавления новой записи
Доброго времени суток всем. Подскажите, пожалуйста, решение вот такой задачки:...

DbAdvGrid: после добавления новой записи перенести указатель на новую запись
Добрый день! Прошу помочь с программой... Есть форма Планирование отбытия. С...

После добавления в БД новой строчки надо распечатать или просмотреть отчёт с новой строчкой по клику на кнопку
Вопрос такой: У меня Отчёт сделан с помощью rave ADOQuery1 подключен к...

Не обновляется dbgrid после добавления или удаления записи
procedure TAddDealer.OKBtnClick(Sender: TObject); begin ...

Один столбец в DBGrid после добавления записи (очередное непонятное поведение)
Здравствуйте! В DBGrid порядка 10 полей. Некоторые из них не видны...

5
Пытливый
1379 / 690 / 249
Регистрация: 29.05.2013
Сообщений: 3,086
06.06.2018, 00:35 #2
Судя по скорости появления дополнений в теме, вы вполне успешно сами справляетесь, я верю в вас
0
Jin X
❗❗ RTFM 👈
4000 / 1144 / 151
Регистрация: 14.12.2014
Сообщений: 2,285
Записей в блоге: 5
Завершенные тесты: 2
06.06.2018, 09:10  [ТС] #3
Пытливый, я сделал через Close/Open, но этот вариант мне не очень нравится...
0
krapotkin
3295 / 2935 / 1015
Регистрация: 14.04.2014
Сообщений: 14,255
Записей в блоге: 13
06.06.2018, 12:25 #4
вообще датасет - это результат запроса к БД на момент запроса
поэтому если вы с БД что-то поменяли, ваш датасет ну совершенно ни при чем будет
есть наборы компонентов, которые хитро исполняют эту задачу, но точно не ADO )))

поэтому переоткрывать придется
НО
если вы не хотите, чтобы ваши действия с датасетом отражались на экране, это сделать можно
Delphi
1
2
3
4
5
6
7
8
9
Dataset.DisableControls;
try
  ID := dataset.FieldByName('ID').asinteger; // нужно сохранить одно или сколько там у вас ключевых полей, чтобы потом найти эту запись
  Dataset.Close;
  Dataset.Open;
  Dataset.Locate('ID',ID,[]);
finally
  Dataset.EnableControls;
end;
1
Jin X
❗❗ RTFM 👈
4000 / 1144 / 151
Регистрация: 14.12.2014
Сообщений: 2,285
Записей в блоге: 5
Завершенные тесты: 2
06.06.2018, 14:59  [ТС] #5
Цитата Сообщение от krapotkin Посмотреть сообщение
вообще датасет - это результат запроса к БД на момент запроса
поэтому если вы с БД что-то поменяли, ваш датасет ну совершенно ни при чем будет
Ну так, я же поменял данные в DBGrid, который связан с этим DataSet'ом. И в DBGrid соответственно видны изменения, однако изменения в DBLookupComboBox, связанных с тем же DataSet'ом почему-то не видны.
Я же не напрямую с БД работал (через Access).

Может, можно как-то обновить данные в DBLookupComboBox ?
Или это не поможет?
0
krapotkin
3295 / 2935 / 1015
Регистрация: 14.04.2014
Сообщений: 14,255
Записей в блоге: 13
06.06.2018, 15:03 #6
если это один и тот же датасет, тогда скорее всего да
если у него нет к-нить метода Refresh, то скорее всего можно отключить его от Datasource и потом подключить обратно
хотя рассказ выглядит странновато и так быть не должно
0
06.06.2018, 15:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2018, 15:03
Привет! Вот еще темы с решениями:

После добавления записи, при клике на нее выскакивает системная ошибка: отсутствие данных в поле "чертеж"
Доброго времени суток! имеется вот такой код procedure...

Кнопка добавления записи в Delphi
что нужно изменить чтоб кнопка добавления работала ??? вот код : unit...

отловить события добавления записи в таблицу
Привет всем. имею borland delphi 2006 СУБД mysql 5-1-39 компонент...

Как сделать кнопку добавления записи?
когда нажимаете(на форме КНИГИ) кнопку добавить выдает форму КНИГА. Мне нужно...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru