![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Объединение и модификация таблиц Paradox [D5, Paradox]
Forget © (2004-04-26 10:23:00)Cитуация:
Нужно получить данные из нескольких таблиц, отобразить результат в DBGrid'е и мочь его редактировать с соответствующей фиксацией изменений в БД.
Проблема:
Получен Dataset по запросу
query.sql:=' select a,b from c,d';
query.open;
Соответственно, результат отобразился в DBGrid, но доступен только для чтения. Добавлен компонент TUpdateSql, там, всякие поля заполнены, но при нажатии в DBнавигаторе кнопки post изменения всё равно не созраняются в БД. Принудительный код:
procedure TufmUpdate.Button1Click(Sender: TObject);
begin
dm.QueryUpdate.ApplyUpdates;
dm.QueryUpdate.CommitUpdates;
dm.QueryUpdate.close;
dm.QueryUpdate.open;
end;
вызывает исключение.
RequestLive и всякие там рекомендации HELPа вроде бы как соблюдены
Вопрос: как доделать наработку или ваще, как блин сделать то, что описано в "ситуации"? H E L P!
ЮЮ (2004-04-26 11:18:00) [1]А точнее
update c
set
a = :a
where
Id = :OLD_Id
т.к. не думаю, что в Gride стоит редактировать PrimaryKey Field(Id, в моем случае), так же как и не стоит использовать таблицы без PrimaryKey
ЮЮ (2004-04-26 11:15:00) [2]update c
set
a = :a
where
a = :OLD_a
Вот и всё. Только в SELECT все равно надо связать эти таблицы
Forget (2004-04-26 11:07:00) [3]Sorry, в терминологии - вы правы!
Я делаю сводную таблицу из 2-х (c,d)
Изменяю данные в DBGride,
Пусть, к примеру, Update будет по изменениям только для 1-й таблицы - с, поле а.
По выполнению Update генерится вышеозначенная ошибка.
Вот и всё!
ЮЮ (2004-04-26 11:01:00) [4]определись с a,b,с,d !!!
В запросе с и d - никак не связанные таблицы, а и b - два проля, непонятно из каких таблиц.
В зпросе на обновление а - уже тавлица, сожержащая три поля b, c, d
Forget (2004-04-26 10:55:00) [5]Ну Да!
var queryupdate:TQuery;
dm.queryupdate.sql:='...';
А если CachedUpdate = false,
то Dataset нельзя изменить, запрос Select - из 2-х таблиц!
ЮЮ (2004-04-26 10:46:00) [6]query.sql:=' select a,b from c,d WHERE c.Id = d.c'
>post изменения всё равно не созраняются в БД.
И не должны, если CashedUpdate = true
>procedure TufmUpdate.Button1Click(Sender: TObject);
>begin
>dm.QueryUpdate.ApplyUpdates;
>dm.QueryUpdate.CommitUpdates;
>dm.QueryUpdate.close;
>dm.QueryUpdate.open;
>end;
выбирал в query, а обновляешь dm. QueryUpdate.
Forget (2004-04-26 10:41:00) [7]К тому же использование кнопок DBNavigator а ни к чему не приводит...
Anatoly Podgoretsky (2004-04-26 10:41:00) [8]Страннно у тебя c и d одновременно и поле и таблица
Reindeer Moss Eater (2004-04-26 10:41:00) [9]запятые в перечислении обновляемых полей где?
Forget (2004-04-26 10:39:00) [10]Аааа, уже не исключение, а:
'Invalid use of word update. Token line 10'.
А запрос в UpdateSql вот такой:
update a
set
b = :b
c = :c
d = :d
where
b = :OLD_b and
c = :OLD_c and
d = :OLD_d
Reindeer Moss Eater (2004-04-26 10:31:00) [11]вызывает исключение.
Какое?
Reindeer Moss Eater (2004-04-26 10:29:00) [12]Добавлен компонент TUpdateSql
И все? А тексты для UPDATE он содержит?
Forget (2004-04-26 10:29:00) [13]Конечно!