Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.009 c
1-4894
Ahmad K
2003-01-22 05:02
2003.02.03
Ярлык... и как его настроить...


14-5152
sancho
2003-01-17 16:59
2003.02.03
ПодскажитеЮ, пожалуста!


1-4985
Dmitriy Polskoy
2003-01-23 13:23
2003.02.03
Узлы TreeView


14-5226
iNew
2003-01-16 10:39
2003.02.03
Установил SP3 для Win2k Adv Server. В папке C: WINNT появилось


3-4789
AndreyP
2003-01-16 08:00
2003.02.03
Работа с БД Clarion5 - как достать данные из *.tps





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