Topic: Нужна помощь в создании скрипта

Есть таблица (скажем kash).
Есть 20 полей. одно из них Дата.
Нужно выбрать все засписи с опредленной датой и продублировать все данные но уже с другой датой.
Подскажите. где то уже видел это на форуме. найти не могу

Чучкин Евгений

2 (edited by iacovlogica 2016-03-15 09:02:23)

Re: Нужна помощь в создании скрипта

Xexrby Tdutybq wrote:

Есть таблица (скажем kash).
Есть 20 полей. одно из них Дата.
Нужно выбрать все засписи с опредленной датой и продублировать все данные но уже с другой датой.
Подскажите. где то уже видел это на форуме. найти не могу

...это топорный вариант но если смотреть ничего не надо то можно и одним SQL запросом обойтись )))

Post's attachments

Attachment icon kopir.7z 281.27 kb, 367 downloads since 2016-03-15 

Re: Нужна помощь в создании скрипта

к сожалению не понял.
работю в старой версии 1.46 еще.
программу не открывает которую вложили.
в скрипте я так понимаю это вот эта часть:

procedure zakazi_Primenit_OnClick (Sender: string; var Cancel: boolean);
var
i : integer ;
begin
for i := 0 to zakazi.Tabl.RowCount -1 do
  begin
   SQLExecute('INSERT INTO sobitiya ( data , sobitie ) VALUES ('+zakazi.Ust.sqlDateTime+', '+chr(39)+ zakazi.Tabl.Cells[2,i]+chr(39)+' )');
  end;
end;

но как его применить в моей ситуации не совсем понимаю

Чучкин Евгений

4 (edited by iacovlogica 2016-03-15 09:40:15)

Re: Нужна помощь в создании скрипта

...хмм , у меня  версия 2.4 . Сам скачал и проверил все открывает

отличие вашей задачи лишь в количестве столбцов
У Вас есть установочный  версии 1.46 ?

5 (edited by iacovlogica 2016-03-15 09:59:29)

Re: Нужна помощь в создании скрипта

INSERT INTO sobitiya ( data , sobitie )
VALUES
(
{Ust},
( SELECT sobitie FROM sobitiya WHERE data BETWEEN {dtfrom} AND {dtto} )

)

Переводится так :
ВСТАВИТЬ В ТАБЛИЦУ sobitiya ( data , sobitie )
ЗНАЧЕНИЯ
(
{Ust},
( ВЫБРАТЬ sobitie ИЗ ТАБЛИЦЫ sobitiya С УСЛОВИЕМ ЧТО data НАХОДИТСЯ МЕЖДУ {dtfrom} И {dtto} )

)

Стоит пояснить что я использовал вложенный SQL запрос , и по количеству выданных данных будет произведено соответствующее количество новых записей оператором INSERT


)) и что то он не работает так как надо в отличие от первого варианта

Re: Нужна помощь в создании скрипта

SQLExecute ('INSERT INTO kash ( date , id_azs, Z_A80, R_A80) VALUES ('+sDate2+', (select (id_azs, Z_A80, R_A80) from kash WHERE date = '+sDate1+''))');

ругается на синтаксис сперва.

Чучкин Евгений

7 (edited by iacovlogica 2016-03-17 11:45:40)

Re: Нужна помощь в создании скрипта

В общем то что я второй раз написал делать НЕЛЬЗЯ оказывается .

Цитирую букварь.

Целевая таблица команды INSERT не должна появляться в утверждении FROM части SELECT данного запроса, поскольку в ANSI SQL запрещено производить выборку из той же таблицы, в которую производится вставка. (Проблема заключается в том, что операция SELECT, возможно, найдет записи, которые были внесены ранее в течение того же самого прогона команды. При использовании команд, внутри которых содержатся многоступенчатые выборки, можно легко попасть в очень запутанную ситуацию!)

Re: Нужна помощь в создании скрипта

вобщем я понял что бнз промежуточных временных таблиц тут не обойтись.
создаю в структуре временную таблю
туда по данному скрипту закидываю выборку
делаю апдейт второй таблицы и догоняю скрипотом переноса данных из вспомогательной таблицы в первую
муторно конечно с циклами боюсь громоздее получиться
хотя надо обдумать

Чучкин Евгений

Re: Нужна помощь в создании скрипта

..да только или через временную таблицу через CREATE TEMPORARY TABLE
или как я топорным вариантом ))
поставьте программу посвежее
мой первый вариант откройте .
если хотите для простоты все лишнее уберу совсем

Re: Нужна помощь в создании скрипта

посвежее - там вроде платить надо.
у меня нет пока денег.
буду пробовать.
а то сотрудники скоро выть начнут.
они каждый день мониторят цены на всех азс в округе. цифры забивают. а потом еще отчеты готовят. ряз в неделю до 10-11 вечера колупаются.
меня попросили сообразить чтонибудь чтоб хотя бы в цифрах не путаться.
цены меняются не каждый день а чтоб старые цены не набивать - попросили чтоб данные с прошлой даты переносились.
вобщем геморой

Чучкин Евгений