Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизОбъединение и модификация таблиц Paradox Найти похожие ветки
← →
Forget (2004-04-26 10:23) [0]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!
← →
Reindeer Moss Eater © (2004-04-26 10:29) [1]Добавлен компонент TUpdateSql
И все? А тексты для UPDATE он содержит?
← →
Forget (2004-04-26 10:29) [2]Конечно!
← →
Reindeer Moss Eater © (2004-04-26 10:31) [3]вызывает исключение.
Какое?
← →
Forget (2004-04-26 10:39) [4]Аааа, уже не исключение, а:
"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
← →
Forget (2004-04-26 10:41) [5]К тому же использование кнопок DBNavigator а ни к чему не приводит...
← →
Anatoly Podgoretsky © (2004-04-26 10:41) [6]Страннно у тебя c и d одновременно и поле и таблица
← →
Reindeer Moss Eater © (2004-04-26 10:41) [7]запятые в перечислении обновляемых полей где?
← →
ЮЮ © (2004-04-26 10:46) [8]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:55) [9]Ну Да!
var queryupdate:TQuery;
dm.queryupdate.sql:="...";
А если CachedUpdate = false,
то Dataset нельзя изменить, запрос Select - из 2-х таблиц!
← →
ЮЮ © (2004-04-26 11:01) [10]определись с a,b,с,d !!!
В запросе с и d - никак не связанные таблицы, а и b - два проля, непонятно из каких таблиц.
В зпросе на обновление а - уже тавлица, сожержащая три поля b, c, d
← →
Forget (2004-04-26 11:07) [11]Sorry, в терминологии - вы правы!
Я делаю сводную таблицу из 2-х (c,d)
Изменяю данные в DBGride,
Пусть, к примеру, Update будет по изменениям только для 1-й таблицы - с, поле а.
По выполнению Update генерится вышеозначенная ошибка.
Вот и всё!
← →
ЮЮ © (2004-04-26 11:15) [12]update c
set
a = :a
where
a = :OLD_a
Вот и всё. Только в SELECT все равно надо связать эти таблицы
← →
ЮЮ © (2004-04-26 11:18) [13]А точнее
update c
set
a = :a
where
Id = :OLD_Id
т.к. не думаю, что в Gride стоит редактировать PrimaryKey Field(Id, в моем случае), так же как и не стоит использовать таблицы без PrimaryKey
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.089 c