![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какое событие совершает 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