![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не присваивается значение в базе [D7, ASD]
kyn66 © (2006-10-10 10:26:00)RxDBComboBox1 связан с неким полем таблицы. В нем три итемса и соответственно 3 Value, которые должны заноситься в таблицу при выборе. Изначально при открытии таблицы на редактирование я RxDBComboBox1 принудительно устанавливаю в :
RxDBComboBox1.OnChange(Self);
...
procedure TMainFrm.RxDBComboBox1Change(Sender: TObject);
begin
if RxDBComboBox1.ItemIndex <> -1 then
begin
SovLab.Visible :=
RxDBComboBox1.Values[RxDBComboBox1.ItemIndex] = '2';
SovDBEdit.Visible :=
RxDBComboBox1.Values[RxDBComboBox1.ItemIndex] = '2';
end
else
begin
RxDBComboBox1.ItemIndex := 0;
SovLab.Visible := False;
SovDBEdit.Visible := False;
end
end;
Т.е. по умолчанию должен быть первый элемент списка. После окончания редактирования сохраняю, но Value не записывается в базу, пока по нему реально не кликнешь. Ведь я так и хотел, чтобы значение по умолчанию само записывалось, если оно устраивает без клика по RxDBComboBox1.
Как быть? Какое ешшо событие подвесить?
ЮЮ (2006-10-10 12:29:00) [1]
> Короче решил перейти на простой ComboBox
И как это позволит что-то изменять в DataSete, если даже с DB-Aware не удавалось изменить ???
kyn66 (2006-10-10 12:20:00) [2]Короче решил перейти на простой ComboBox. Всем спасибо за помощь
sniknik (2006-10-10 11:32:00) [3]> но хочется оставить именно RxDBComboBox1
ну тогда в нем меняй значения не в нем самом, а в таблице.
kyn66 (2006-10-10 11:15:00) [4]
> У TRxMemoryData тоже есть AfterInsert, где можно проинициализировать
> поля созданной записи.
Я согласен, но хочется оставить именно RxDBComboBox1, а хотя....
sniknik (2006-10-10 11:14:00) [5]> т.к. используется не реальная база, а TRxMemoryData
не скажу за TRxMemoryData но у клиентдатасета и у adoдатасета (в режиме "без базы") те же самые поля, с темиже свойствами что и у "реальнобазовых".
(возможно конечно, что в случае с TRxMemoryData - "ключница водку делала"... но тогда это повод от него отказаться, глюки пасутся стаями...)
ЮЮ (2006-10-10 11:12:00) [6]У TRxMemoryData тоже есть AfterInsert, где можно проинициализировать поля созданной записи.
kyn66 (2006-10-10 11:04:00) [7]Значение по умолчанию поставить не получится, т.к. используется не реальная база, а TRxMemoryData
sniknik (2006-10-10 10:52:00) [8]поставь. если считаеш что это проще. но по мне так проще полю раз задать дефаултное значение и убрать весь твой код.
ЮЮ (2006-10-10 10:51:00) [9]
> В таком случае можно было поставить простой Combobox и все.
> ..
в каком? [1] или [2]
> Изначально при открытии таблицы на редактирование я RxDBComboBox1
> принудительно устанавливаю в :
Настрой DataSource и DataField - и безо всякого кода он будет показывать значение для текущей записи. [1] касается вновь добавляемых записей.
kyn66 (2006-10-10 10:45:00) [10]В таком случае можно было поставить простой Combobox и все...
sniknik (2006-10-10 10:32:00) [11]Post; после "ручных" изменений. (но лучше всего не в событии на изменение..., а менять например в событии бефорепост, да и вообще, значение по умолчанию мохно просто указать в поле (в данных, а не гриде))
ЮЮ (2006-10-10 10:30:00) [12]
> чтобы значение по умолчанию само записывалось,
Нужно установить у DataSer-а, например в AfterInsert. Тогда манипуляции в RxDBComboBox1Change - просто лишние