Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.03;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
1-5029
OxOTHuK
2003-01-23 07:16
2003.02.03
Динамическое создание


1-4907
Kventin
2003-01-25 15:38
2003.02.03
Ошибка: Cannot focus a disabled or invisible window


3-4736
BigVova
2003-01-15 16:43
2003.02.03
Можно ли в триггере определить транзакцию


6-5103
mouse_1
2002-11-24 10:53
2003.02.03
Работа с сетевой картой


1-4874
trotski
2003-01-24 22:12
2003.02.03
RichEdit