Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 DBComboBox при вставке нового значения, не отображает данные  [new]
Konstantin-78
Member

Откуда: Земля
Сообщений: 404
Доброе время суток форумчане,
Какой-то глюк произошел, в одной программе работает, в другой – нет.

В IBDataSet.AfterInsert заполняю DBComboBox

ExecQuery(C_sel_full_ComboBoxEquipment, 0, Select_rec, nil);//заполнение IBQuery (DM.ibqEmpty)
                FMain.dbcbNameTest.Clear;
                DM.ibqEmpty.First;
                while not DM.ibqEmpty.Eof do
                begin
                   if DM.ibqEmpty.FieldByName('FILED_NAME').AsString = 'NAME_TEST' then
                    FMain.dbcbNameTest.Items.Add(DM.ibqEmpty.FieldByName('PRODUCER').AsString);
                 DM.ibqEmpty.Next;
                end;


все нормально.
Но при вставке нового значения в DBComboBox, оно в нем перестает отображаться, хотя в БД это значение есть и DBGrid его отображает.
При нажатии Refresh на навигаторе, также это значение появляется в DBComboBox, но при переходе с записи на запись, оно опять пропадает только из DBComboBox.
Конечно если закоментировать, заполнение элементов DBComboBox, все нормально отрабатыват.

Где может быть ошибка?
Заранее спасибо за ответ.
12 июл 19, 01:33    [21925359]     Ответить | Цитировать Сообщить модератору
 Re: DBComboBox при вставке нового значения, не отображает данные  [new]
Kast2K
Member

Откуда: Санкт-Петербург
Сообщений: 486
Konstantin-78,

Может вместо DBCombobox вам лучше TCombobox использовать судя по данной записи?
FMain.dbcbNameTest.Items.Add(DM.ibqEmpty.FieldByName('PRODUCER').AsString);
12 июл 19, 07:49    [21925387]     Ответить | Цитировать Сообщить модератору
 Re: DBComboBox при вставке нового значения, не отображает данные  [new]
Konstantin-78
Member

Откуда: Земля
Сообщений: 404
Kast2K,

Не хотелось бы использовать TCombobox, т.к. всетаки привязка к полю в БД

запрос:
C_sel_full_ComboBoxEquipment = 'select distinct PRODUCER, trim(''PRODUCER'') FILED_NAME from EQUIPMENT where PRODUCER <> ''null'' '
                                 +' union all select distinct NAME_TEST, ''NAME_TEST'' from EQUIPMENT where NAME_TEST<>''null'' '
                                 +' union all select distinct YEAR_BEGIN, ''YEAR_BEGIN'' from EQUIPMENT where YEAR_BEGIN is not null ';

да небольшая поправка, тогда:


ExecQuery(C_sel_full_ComboBoxEquipment, 0, Select_rec, nil);
                FMain.dbcbCountryCL.Clear;
                FMain.dbcbNameTest.Clear;
                FMain.dbcbYearBegin.Clear;
                DM.ibqEmpty.First;
                while not DM.ibqEmpty.Eof do
                begin
                  if DM.ibqEmpty.FieldByName('FILED_NAME').AsString = 'PRODUCER' then
                    FMain.dbcbCountryCreate.Items.Add(DM.ibqEmpty.FieldByName('PRODUCER').AsString);


                  if DM.ibqEmpty.FieldByName('FILED_NAME').AsString = 'NAME_TEST' then
                    FMain.dbcbNameTest.Items.Add(DM.ibqEmpty.FieldByName('PRODUCER').AsString);


                  if DM.ibqEmpty.FieldByName('FILED_NAME').AsString = 'YEAR_BEGIN' then
                    FMain.dbcbYearBegin.Items.Add(DM.ibqEmpty.FieldByName('PRODUCER').AsString);

                  DM.ibqEmpty.Next;
                end;


я заполняю 3 DBComboBox
12 июл 19, 10:04    [21925476]     Ответить | Цитировать Сообщить модератору
 Re: DBComboBox при вставке нового значения, не отображает данные  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11196
Konstantin-78,

Разные транзакции?
12 июл 19, 16:25    [21925896]     Ответить | Цитировать Сообщить модератору
 Re: DBComboBox при вставке нового значения, не отображает данные  [new]
Konstantin-78
Member

Откуда: Земля
Сообщений: 404
_Vasilisk_,
не а, одна
12 июл 19, 22:10    [21926051]     Ответить | Цитировать Сообщить модератору
 Re: DBComboBox при вставке нового значения, не отображает данные  [new]
Konstantin-78
Member

Откуда: Земля
Сообщений: 404
без переоткрытия dataset, все работает, просто в "dataset.AfterPost", делать CommitRetaining транзакции.
Во...

А если нужно с переоткрыванием:
тогда в "dataset.AfterPost", и CommitRetaining с последующим переоткрытием, в список DBCombobox добавлять текущее значение значение. и тогда в нем будет отображение.
13 июл 19, 01:17    [21926082]     Ответить | Цитировать Сообщить модератору
 Re: DBComboBox при вставке нового значения, не отображает данные  [new]
Konstantin-78
Member

Откуда: Земля
Сообщений: 404
Да и после этого незабыть Refresh записи сделать
13 июл 19, 01:25    [21926085]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить