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

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

Какое событие совершает DBGrid (EhDBGrid) после перехода


Layner ©   (2003-10-31 11:03:00) 

от редактированной записи на другую строку? Мне как раз в этот момент надо самому UPDATE`ить запись, "руками", а не успеваю, выскакивает ошибка в несоответствии типов (что и верно, в PicList отображаю текст, а в табл. нужно вставлять ID, который я и вычисляю)...
Заранее спасибо.


Zacho   (2003-10-31 11:59:00) [1]


> Layner © (31.10.03 11:57) [15]

И забудь пока про PickList и KeyList. Твоя задача решается созданием lookup поля в q1


Layner   (2003-10-31 11:57:00) [2]

Zacho © (31.10.03 11:54)
Сейчас исправлю, последний ответ не увидел, благодарю, сейчас напишу.


Layner   (2003-10-31 11:56:00) [3]

Zacho © (31.10.03 11:50)
DBGridEh сам вот не хочет менять :(
Извиняюсь за назойливость, можно я скину по почте свой пример(D7+Eh)?
Проанализирую, в чем тут дело, ну все переделал, не помогает :( :( :( :( :(


Zacho   (2003-10-31 11:54:00) [4]


> Layner © (31.10.03 11:46) [11]

О-ооо ! Выкинь быстро все это, и создай lookup-поле в датасете.

> Column.PickList.Add(q2.FieldValues["name"]);
> Column.KeyList.Add(q2.FieldValues["name"]);

И нафига заполнять KeyList такими же значениями, как и в PickList ? Суть в чем: при просмотре/редактировании берется строка из PickList, а в датасет заносится соответствующая ей строка из KeyList.


Zacho   (2003-10-31 11:50:00) [5]


> Layner © (31.10.03 11:33) [8]

Если используешь PickList совместно с KeyList, то ничего в BeforePost подменять не надо, это сделает сам DBGridEh.


Layner   (2003-10-31 11:46:00) [6]

procedure Tmf.gCellClick(Column: TColumnEh);
var
i:integer;
begin
Column.PickList.Clear;
case g.SelectedIndex of
6:
begin
q2.SQL.Clear;
q2.SQL.Add("select rowid, name from test");
q2.Active := true;
for i:=0 to q2.Recordset.RecordCount-1 do
begin
Column.PickList.Add(q2.FieldValues["name"]);
Column.KeyList.Add(q2.FieldValues["name"]);
q2.RecNo := q2.RecNo+1;
end;
q2.Active := False;
end;
end;
end;

procedure Tmf.q1BeforePost(DataSet: TDataSet);
begin
q1.FieldByName("rod_id"):= //сюда "лезут" данные из PickList, а как KeyList занести?
end;


Layner   (2003-10-31 11:39:00) [7]

Иначе в BeforePost в БД посылается текстовое поле PickList, а надо, чтобы в БД ложилось значение KeyList.


chtr   (2003-10-31 11:39:00) [8]

tdataset.fieldbyname(fieldname):=value;


Layner   (2003-10-31 11:33:00) [9]

Zacho © (31.10.03 11:14)
Это мне как раз и требовалось!!!
Подскажи, пожалуйста, как в BeforePost подменить значение ячейки посылаемое в БД по умолчанию - что ведет к ошибке, на KeyList??


chtr   (2003-10-31 11:17:00) [10]

sorry не въехал, шел от вопроса:
Какое событие совершает DBGrid (EhDBGrid) послеперехода


Zacho   (2003-10-31 11:14:00) [11]

Еще добавлю:
1.В TDBGridEh кроме PickList есть еще и KeyList, возможно нужные ID тебе просто достаточно прописать в KeyList
2. Сильно подозреваю, что на самом деле тебе нужно создать lookup поле в DataSet"е.


BrainStorm   (2003-10-31 11:14:00) [12]

After уже будет совсем другая ист... активная запись


chtr   (2003-10-31 11:12:00) [13]

AfterScroll :))


BrainStorm   (2003-10-31 11:11:00) [14]

DataSet.BeforeScroll


Layner   (2003-10-31 11:09:00) [15]

Vlad © (31.10.03 11:06)
СПАСИБО!!! Я к гриду привязался :)


Vlad   (2003-10-31 11:06:00) [16]

DataSet.BeforePost


Наверх

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