Главная страница
    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.035 c
1-1092988800
HSD
2004-08-20 12:00
2004.09.05
TFileStream добавление файла в конец


6-1088500382
alexts
2004-06-29 13:13
2004.09.05
Заполнение HTML формы


1-1092888489
Fktrc
2004-08-19 08:08
2004.09.05
Потоки при завершении приложения


1-1093189122
SergP
2004-08-22 19:38
2004.09.05
Проблема с формулами в Excel


9-1084639051
G_U_N
2004-05-15 20:37
2004.09.05
2 формы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский