![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как правильно организовать вставку [D6, Oracle]
Андрусь © (2002-08-30 15:29:00)Привет всем! Возник вот такой вопрос.Может немного детский,но всё же. Есть 2 таблицы А(A_id, A_data, fk_B) и В (B_id, B). Есть Query1 с SQL
SELECT A.A_id, A.A_data, A.fk_B, A.RowID B.B
FROM A,B
WHERE A.fk_B = B.B_id
Соответственно в гриде,откуда вносим данные в А fk_B не отображаем, а там B.B. Нужно организовать вставку поля fk_B. Можно через lookup поле. Но моей ситуации объём В велик. Поэтому организую вставку через отд. модальную форму с гридом,едитом,Query2(на табл.В) и кнопкой фильтровать(на клик. просто добавляю в SQL WHERE). По двойному клику по строке грида Query1.fk_B:=Query2.B_id,Query1.B:=Query2.B. Поле Query1.B не является доступным для редактирования и возникает ошибка. Можно выбрать B.RowId... Вопрос - как правильно организовать всё.
Зараннее всем большое спасибо!
Андрусь (2002-08-30 18:14:00) [1]Или вот теоретически тоже вариант,правда не знаю - тормозить будет всё равно. Если сделать поле Query1.B calculated и на OnCalculate извлекать для каждой записи курсор.
Андрусь (2002-08-30 17:21:00) [2]Ну да типа того. Только ж говорю - сама идея некрасива.
Val (2002-08-30 17:02:00) [3]TUpdateSQL+CashedUpdates?
Андрусь (2002-08-30 16:52:00) [4]Так вот я о чем и говорю,можно же переситать не весь датасет,а лишь обновить запись,которую мы редактировали. Один путь я сказал - сделать доступной для редактирования таблицу В на уровне датасета и запретить на уровне грида. Т.о. получим возможность вставлять новые a.fk_b и в.в без рефреша.Но сама идея некрасива.
Val (2002-08-30 16:25:00) [5]что ж поделаешь?
перечитывать-то надо.
Андрусь (2002-08-30 16:14:00) [6]Логично,но как быть с таким моментом:пользователь стоит на записи n,вызвал форму,вставил а.fk_b. Обновляем данные и смещаемся на запись n. При больших n будут хорошие тормоза.
Val (2002-08-30 15:35:00) [7]надо вставлять в таблицу а.fk_b.
по закрытии формы можно перечитывать данные. можно перечитывание оставить на усмотрение пользователя(Кнопка).