![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему не обновляется ДБЕдит? [D6, IB6.x]
off © (2003-04-07 18:47:00)Доброго времени суток! Есть две таблицы в одной допустим пользователи в другой закрепленные за ними объекты. В SelectSQL второй таблицы пишем:
select * from OBJCTS
where USERID=?USERID
Таким образом при перемщении по ДБГриду привязанному к первой таблице во втором отображаются только те объекты, которые относятся к данному пользователю. Теперь к записи соответствующей допустим тому же USERID прилепим ДБЕдит. А тепрь самое главноепри "путешествии"по первому ДБГриду, во втором значения соответственно обновляются, а вот противныйДБЕдит не обновляется. Как лечить?
Соловьев (2003-04-08 13:08:00) [1]в IBDataset можно к параметру обращятся в SelectSQL так как в IBQuery...
off (2003-04-08 13:02:00) [2]
> Соловьев ©
Я ж не через IBQuery работаю, а через IBDataSet просто в SelectSQL пишуselect * from OBJCTS
where USERID=?USERID
А если к AfterScroll привязывать так он (ДБЕдит) и так после скролинга по второму ДБГриду все правильно отображает.
AlexSV (2003-04-08 12:55:00) [3]> off © (08.04.03 12:22)
Реализация после update:
procedure TFieldDataLink.UpdateField;
begin
if Active and (FFieldName <> "") then
begin
FField := nil;
if Assigned(FControl) then
SetField(GetFieldProperty(DataSource.DataSet, FControl, FFieldName)) else
SetField(DataSource.DataSet.FieldByName(FFieldName));
end else
SetField(nil);
end;
Перенеси в проект DBCtrls и замени TFieldDataLink.UpdateField приведенным кодом.
Соловьев (2003-04-08 12:42:00) [4]
> Да так чтоб самому прописать обработку события я не пробовал.
>
попробуй у первого Query сделать обработку AfterScroll:
with Query2 do
begin
Close;
ParamByName("USERID
").AsInteger := Query1.FieldByName("USERID
").AsInteger;
if not Prepared then Prepare;
Open;
end;
off (2003-04-08 12:38:00) [5]Все уснули что-ли? Господин Соловьев?
off (2003-04-08 12:26:00) [6]
> Соловьев ©
Да так чтоб самому прописать обработку события я не пробовал. Хотя написал ДатаСет2.рефрешь и привязал к батону, так при нажатии на батон все становиться на свои места.
off (2003-04-08 12:22:00) [7]
> AlexSV ©
> исправляй TFieldDataLink (из DBCtrls).
Где исправить я понял, но боюсь самому мне не справиться. Может кто подскажет где именно подкорретировать, а то я сам напортачу.
Соловьев (2003-04-08 12:20:00) [8]какое событие обрабатываешь?
off (2003-04-08 12:05:00) [9]
> AlexSV ©
> устанавливай upd1
А где его взять?
off (2003-04-08 12:03:00) [10]
> ЮЮ © (08.04.03 03:48)
> противный ДБЕдит привязать к тому же DataSourse, что и Grid
> :-)
ДБЕдит уже привязан. И впринципе все было бы нормально если бы не приходилось для обновления второго ДБЕдита переходить на второй ДБГрид привязанный ко второму датасорсу.
Теперь если мы кликнем по второму ДБГриду, допустим, на вторую запись, то запись в ДБЕдите поменяется на нужную. А вот теперь интересный момент в первом ДБГриде перейдем на следующую запись. Данные во втором ДБГриде соответственно изменятся, а вот значение в ДБЕдите останется прежним. ПОЧЕМУ?
AlexSV (2003-04-08 11:51:00) [11]> off © (08.04.03 11:20)
Тогда тебе прямая дорога - установи D6_upd1.
Просто в D5 и D6 (про D7 не знаю) внесен глюк в TFieldDataLink, который не корректно обновляет DBAware компоненты его использующие. Проверить это просто: при переходе в наборе данных на другую запись значение в DBEdit (например) не обновиться, пока этот DBEdit не получит фокус ввода. Если это так, то устанавливай upd1, или исправляй TFieldDataLink (из DBCtrls).
Жук (2003-04-08 11:49:00) [12]При чём здесь обновление ? Если грид и едит привязаны к одному соурсу, то при перемещении по гриду, в едите текущая запись должна показываться автоматом.
Соловьев (2003-04-08 11:42:00) [13]на какое событие повешено обновление?
И
> ЮЮ © (08.04.03 03:48)
точно сделал?
off (2003-04-08 11:20:00) [14]> AlexSVУстановлен только стандартный пакет т.е., что на компашке было то и поставил.
AlexSV (2003-04-08 10:47:00) [15]> off ©
А D6_upd1 установлен?
ЮЮ (2003-04-08 03:48:00) [16]противный ДБЕдит привязать к тому же DataSourse, что и Grid :-)