Форум: "Базы";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
ВнизUPDATE INTO TABLE VALUES.. Добавить более одной строки Найти похожие ветки
← →
MsGuns (2003-01-16 19:01) [0]Добрый вечер Мастерам и со всеми прошедшими !
Может, кто знает как, используя операнд VALUES, добавить в таблицу более одной строки ? Local SQL
Вариант типа
INSERT INTO DPrPlat
VALUES (7,4,"Саша","Машин","Оператор","БТЗ",350.50,"")
VALUES (7,5,"Маша","Сашин","Программист","ОТИЗ",570.00,"")
не проходит :((
← →
MsGuns (2003-01-16 19:03) [1]В сабже охибка: Конечно, же INSERT, а не UPDATE
← →
Delirium^.Tremens (2003-01-16 19:17) [2]Решил разрядить обстановку? :-)
← →
D (2003-01-16 19:25) [3]insert into TABLE(Field1,...) select ... from ... ... ?
← →
MsGuns (2003-01-16 19:25) [4]>Delirium^.Tremens © (16.01.03 19:17)
>Решил разрядить обстановку? :-)
..если бы.. Тормознул просто и не могу сдвинуться. Можно, конечно, через TTable (Paradox), но хочется запросиком-с.
(Данные берутся из TStringGrid, с которым балуется бухгалтер - речь идет о треклятых сложных проводках)
← →
Delirium^.Tremens (2003-01-16 19:30) [5]Либо
Insert Into Table_Name (f1, f2, f3)
SELECT f1, f2, f3 FROM Table_Other_Name
Либо в цикле формировать параметризованные запросы
Insert ... Into ... Values
в TQuery и делать ExecSQL.
← →
Delirium^.Tremens (2003-01-16 19:32) [6]Пардон, не формировать в цикле, а заполнять параметры, конечно.
← →
MsGuns (2003-01-16 19:33) [7]INSERT INTO SELECT не проходит, т.к. строки (новые записи) есть в Стринггриде, а ни в какой ни в таблице.
В цикле запускать n запросов с добавлением по одной записи - это отстой,- я уж лучше через TTable простым Append-Post
← →
Delirium^.Tremens (2003-01-16 19:37) [8]>>MsGuns © (16.01.03 19:33)
Зря ты так, попробуй смастери TQuery с запросом типа
Insert Into MyTable (f1, f2, f3) VALUES (:f1, :f2, :f3)
...
StartTransaction;
...
Пробегись в цикле с подстановкой параметров + ExecSQL
...
Commit;
и убедишься, что это очень неплохо.
← →
Delirium^.Tremens (2003-01-16 19:40) [9]>>MsGuns © (16.01.03 19:33)
P.S. Разница с Append + Post, я думаю, будет для тебя откровением, раз ты этого еще не пробовал.
← →
MsGuns (2003-01-16 19:58) [10]>Delirium^.Tremens © (16.01.03 19:40)
Все класс, вот только для Paradox (ОДНА таблица) - StartTranzaction ?
← →
MsGuns (2003-01-16 20:02) [11]Метод StartTransAction есть метод TDataBase. У меня же открыто n таблиц к этому моменту, а модифицировать надо одну. Что такое транзакция в SQL-серверах, я себе достаточно хорошо представляю, но вот для Paradox, по-моему, это фикция, принимая во внимание, что работа идет через BDE-шные компоненты.
← →
MsGuns (2003-01-16 20:06) [12]В общем, я так понял:
ОДНИМ ЗАПРОСОМ ДОБАВИТЬ ЧЕРЕЗ ОПЕРАНД "VALUES" В LOCAL SQL БОЛЕЕ ОДНОЙ НОВОЙ ЗАПИСИ НЕЛЬЗЯ.
Правильно ?
← →
rom900 (2003-01-17 08:38) [13]Если у тебя локальная база данных, то лучше использовать компонент TTable и, соответственно, методы для него, которые ты привел выше.
← →
Delirium^.Tremens (2003-01-17 10:02) [14]>>rom900 © (17.01.03 08:38)
>>MsGuns © (16.01.03 20:06)
> Если у тебя локальная база данных, то лучше использовать
> компонент TTable и, соответственно, методы для него, которые
> ты привел выше.
Позволю себе продолжать с вами не соглашаться. Для случая массового INSERT сравнение методов вставки с навигацией (TDataSet.Append[Insert]) и выполнением SQL команды, показывает значительный выигрыш второго варианта. И не важно, локальная база или к.л. другая.
Не важно так же (в принципе), поддерживает она реально транзакции или это фикция, все равно такие изменения данных следует оформлять в блоке StartTransaction ... Commit (естественно я имею в виду методы TDataBase). Это должно стать стилем программирования подобных операций. Особенно для твоей бухгалтерии, MsGuns © :-)
Когда нибудь, когда гораздо более массовый Insert заставит тебя страдать в ожидании час или больше, вспомни о том, что я говорил и сделай это. Процесс сократится до минут.
← →
MsGuns (2003-01-17 11:01) [15]>Delirium^.Tremens © (17.01.03 10:02)
>Не важно так же (в принципе), поддерживает она реально транзакции или это фикция, все равно такие изменения данных следует оформлять в блоке StartTransaction ... Commit
В общем случае согласен. особенно в части хорошего стиля программирования.
Короче, сделал Insert .. Values .. в цикле. Работает быстро, но сравнить с Apeend/Insert - Post нельзя, т.к. на один документ (банковский) более 8-10 проводок практически не бывает. Да и таблица проводок не гиганская, прямо скажу,- если несколько тыщ будет, и то хорошо.
Но вообще-то вопрос задавался конкретный и никто на него ПРЯМО не ответил :)) Но в принципе я уж сам врубился. Всем спасибо за участие, особенно Delirium^.Tremens ©
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.03;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c