Форум: "Потрепаться";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
ВнизОбновление таблици в БД Найти похожие ветки
← →
syte_ser78 © (2004-08-17 11:08) [0]Поделитесь элементарным примером для сабжа.
Тоесть есть Таблица А с индексным полем - "number" и есть таблица Б с нимже. Если в таблице А запись из Б не найдена, то она добавляется, если найдена, то меняется.
← →
Anatoly Podgoretsky © (2004-08-17 11:13) [1]Edit vs Append
← →
Sandman25 © (2004-08-17 11:15) [2]
BEGIN WORK;
BEGIN
ON EXCEPTION SET lSqlErr, lIsamErr, lErrMsg
ROLLBACK WORK;
RAISE EXCEPTION lSqlErr, lIsamErr, lErrMsg;
END EXCEPTION;
FOREACH
SELECT number
INTO lNumber
FROM tableA
BEGIN
ON EXCEPTION IN (-268) -- unique constraint violated
UPDATE tableB SET number = number + lNumber;
END EXCEPTION;
INSERT INTO tableB(number) VALUES (lNumber);
END
END FOREACH;
COMMIT WORK;
END
:)
← →
Anatoly Podgoretsky © (2004-08-17 11:20) [3]А чего смеешься, разве он что то конкретное сказал, или ты над ним смеешься?
← →
syte_ser78 © (2004-08-17 11:23) [4]Я прикола не понял но наверно надо мной.
2 Anatoly Podgoretsky - научите пожалуйста, как более конкретно задать вопрос. Просто меня ответ интересует.
← →
Sandman25 © (2004-08-17 11:24) [5]Радуюсь тому, что в кои-то веки могу привести код на родном SPL языке.
← →
Sandman25 © (2004-08-17 11:25) [6][4] syte_ser78 © (17.08.04 11:23)
Тип СУБД указывайте, компоненты доступа, где необходимо совершить операцию (на клиенте через запросы/TTable или на сервере через хранимые процедуры).
← →
Жук © (2004-08-17 11:29) [7]
> если найдена, то меняется
Что меняется ? "Найдена" - это "А.намбер=Б.намбер" ?
← →
syte_ser78 © (2004-08-17 11:32) [8]
> Тип СУБД указывайте, компоненты доступа, где необходимо
> совершить операцию (на клиенте через запросы/TTable или
> на сервере через хранимые процедуры).
Delphi7 Операцию совершать на клиенте (DataSource Table)
← →
syte_ser78 © (2004-08-17 11:33) [9]
>
> > если найдена, то меняется
>
> Что меняется ? "Найдена" - это "А.намбер=Б.намбер" ?
Если найдена запись в таблице А (по индексному полю) то она вся меняется на запись из Б
← →
Anatoly Podgoretsky © (2004-08-17 11:35) [10]syte_ser78 © (17.08.04 11:23) [4]
Этому учат в детстве
← →
Sandman25 © (2004-08-17 11:38) [11]if TableB.Locate("number", TableAnumber.AsVariant, []) then
begin
TableB.Edit;
TableBNumber.Value := TableANumber.Value + TableBNumber.Value
end
else
begin
TableB.Append;
TableBNumber.Value := TableANumber.Value;
end;
TableB.Post;
← →
syte_ser78 © (2004-08-17 11:43) [12]
> [11] Sandman25 © (17.08.04 11:38)
Спасибо! Смысл понятен.
← →
syte_ser78 © (2004-08-17 11:58) [13]Если не сложно еще один вопросик.
на строку
TableB.Post;
выскакивает -
TableA DataSet not in edit or insert mode
Имена таблиц заменены на те что были в примере.
← →
syte_ser78 © (2004-08-17 12:10) [14]Исправил!
← →
Anatoly Podgoretsky © (2004-08-17 12:17) [15]syte_ser78 © (17.08.04 11:58) [13]
А то что до записи требуется перевести в этот режим.
← →
syte_ser78 © (2004-08-17 13:59) [16]
> [15] Anatoly Podgoretsky © (17.08.04 12:17)
> syte_ser78 © (17.08.04 11:58) [13]
> А то что до записи требуется перевести в этот режим.
Да нет, с этой проблемой я разобрался. Причина была в другом.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.055 c