Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.03 c
1-1092933826
alexts
2004-08-19 20:43
2004.09.05
Парсинг текстовых файлов


3-1092192424
AZ
2004-08-11 06:47
2004.09.05
Медленная работа с таблицами


14-1092598614
QuestionX
2004-08-15 23:36
2004.09.05
Интернет в Европе


1-1092992924
Zhekson
2004-08-20 13:08
2004.09.05
Оттенки цветов


3-1092115564
wild_arg
2004-08-10 09:26
2004.09.05
Выборка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский