Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Объединение и модификация таблиц 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.049 c
11-1071780594
Arioch
2003-12-18 23:49
2004.05.23
Какой еще Delphi 8 ?


1-1083748083
ASMiD
2004-05-05 13:08
2004.05.23
Определение цвета прямоугольника


7-1082149888
Сащок
2004-04-17 01:11
2004.05.23
Регистрация файлов


1-1083764211
Aleksandr
2004-05-05 17:36
2004.05.23
Сколько раз можно вызывать SetEvent?


1-1084047903
nkoleda
2004-05-09 00:25
2004.05.23
Excel и примечание