Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не присваивается значение в базе [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 - просто лишние


Наверх

Титульная страница Поиск, карта сайта Написать письмо