Дарья Писарева
Ученик
(95),
закрыт
6 месяцев назад
INSERT INTO Поставщик ( [Код поставщика], Поставщик, Телефон, Адрес)
VALUES (1, [ООО Меркурий], 11-11-11, [Пр. Ленина 1] )
VALUES (2, [ООО Леда], 22-22-22, [Пр. Ленина 2] );
VALUES (3, [ООО Тропик], 33-33-33, [Пр. Ленина 3] );
Андрей
Высший разум
(384504)
9 месяцев назад
INSERT INTO Поставщик ([Код поставщика], Поставщик, Телефон, Адрес)
VALUES (1, 'ООО Меркурий', 11-11-11, 'Пр. Ленина 1'),
(2, 'ООО Леда' , 22-22-22, 'Пр. Ленина 2'),
(3, 'ООО Тропик' , 33-33-33, 'Пр. Ленина 3');
VALUES пишется ОДИН раз, наборы значений разделяются запятыми.
В квадратные скобки заключают ТОЛЬКО имена полей/таблиц. А строки — в кавычки.
darklumen
Мыслитель
(6497)
9 месяцев назад
аксес может только по 1 записи вставлять, соответственно 3 запроса
INSERT INTO Поставщик ( [Код поставщика], Поставщик, Телефон, Адрес)
VALUES (1, [ООО Меркурий], 11-11-11, [Пр. Ленина 1] )
INSERT INTO Поставщик ( [Код поставщика], Поставщик, Телефон, Адрес)
VALUES (2, [ООО Леда], 22-22-22, [Пр. Ленина 2] );
INSERT INTO Поставщик ( [Код поставщика], Поставщик, Телефон, Адрес)
VALUES (3, [ООО Тропик], 33-33-33, [Пр. Ленина 3] );
Запрос на добавление нескольких записей в Access
От: |
_Anastasia |
||
Дата: | 15.08.07 12:39 | ||
Оценка: |
Здравствуйте!
Мне нужно добавить несколько записей в таблицу Access. Использую следующий запрос:
INSERT INTO ARHIVCHECK( [CHECKNUM], [DATECHECK], [WAREHOUSE], [CODEGOOD], [OKEY], [QUANTITY], [SUMMA], [SUMDISC], [KINDPAY], [KINDCHECK] ) VALUES
('47', '15.08.2007 15:32:36', 'Торговый зал', '00032', 'пара', '1.000000', '2109.000000', '0.000000', 'Наличная оплата', 'продажа'),
('47', '15.08.2007 15:32:36', 'Торговый зал', '00018', 'пара', '1.000000', '1687.000000', '0.000000', 'Наличная оплата', 'продажа');
Но возникает исключение «Пропущен символ ( в конце инструкции SQL.».
Как это исправить? Какой должен быть запрос, чтобы добавить несколько записей?
Re: Запрос на добавление нескольких записей в Access
От: |
MasterZiv
|
||
Дата: | 15.08.07 14:10 | ||
Оценка: |
> Мне нужно добавить несколько записей в таблицу Access. Использую
Напиши два запроса и выполни их подряд поочереди.
Разницы никакой нет.
Posted via RSDN NNTP Server 2.1 beta
Re: Запрос на добавление нескольких записей в Access
От: |
.
|
||
Дата: | 15.08.07 17:01 | ||
Оценка: |
_Anastasia wrote:
> ‘продажа’),
Если я правильно помню, то запятая не нужна.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Запрос на добавление нескольких записей в Access
От: |
ZAMUNDA
|
для жалоб и предложений | |
Дата: | 15.08.07 21:12 | ||
Оценка: |
2 (1) |
Здравствуйте, _Anastasia, Вы писали:
_A>Здравствуйте!
_A>Мне нужно добавить несколько записей в таблицу Access. Использую следующий запрос:
*Тег [sql], а не [code].
INSERT INTO ARHIVCHECK( [CHECKNUM], [DATECHECK], [WAREHOUSE], [CODEGOOD], [OKEY], [QUANTITY], [SUMMA], [SUMDISC], [KINDPAY], [KINDCHECK] ) VALUES
('47', '15.08.2007 15:32:36', 'Торговый зал', '00032', 'пара', '1.000000', '2109.000000', '0.000000', 'Наличная оплата', 'продажа')
, -- << Вот тут должна быть точка с запятой.
-- А того, что внизу, быть не должно!
('47', '15.08.2007 15:32:36', 'Торговый зал', '00018', 'пара', '1.000000', '1687.000000', '0.000000', 'Наличная оплата', 'продажа');
Это ж «Single-record append query» там только одну запись добавить можно.
_A>Как это исправить? Какой должен быть запрос, чтобы добавить несколько записей?
1. Надо сделать таблицу с одним полем, я её называю обычно «blanc».
CREATE TABLE blanc (ValueMy Integer NOT NULL);
и добавить в неё одну запись (с любым значением)
INSERT INTO blanc (ValueMy) VALUES (0);
2. Используй UNION в подзапросе для вставки данных запросом типа «INSERT ZZZ(…) SELECT … FROM XXX».
INSERT INTO ARHIVCHECK( [CHECKNUM], [DATECHECK], [WAREHOUSE])
SELECT [CHECKNUM], [DATECHECK], [WAREHOUSE] -- млин, я не писатель вам тут. Непомню можно-ли тут * поставить.
FROM (
SELECT '47' AS [CHECKNUM], DateSerial(2007, 15 ,08) + TimeSerial(15, 32, 36) AS [DATECHECK], 'Торговый зал' AS [WAREHOUSE] FROM blanc
UNION
SELECT '47' AS [CHECKNUM], DateSerial(2007, 15 ,08) + TimeSerial(15, 32, 36), 'Торговый зал' AS [WAREHOUSE] FROM blanc
) AS InsertedTbl;
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re: Запрос на добавление нескольких записей в Access
От: |
_d_m_ |
||
Дата: | 15.08.07 23:18 | ||
Оценка: |
Здравствуйте, _Anastasia, Вы писали:
_A>Здравствуйте!
_A>Мне нужно добавить несколько записей в таблицу Access. Использую следующий запрос:
_A>
_A>INSERT INTO ARHIVCHECK( [CHECKNUM], [DATECHECK], [WAREHOUSE], [CODEGOOD], [OKEY], [QUANTITY], [SUMMA], [SUMDISC], [KINDPAY], [KINDCHECK] ) VALUES
_A>('47', '15.08.2007 15:32:36', 'Торговый зал', '00032', 'пара', '1.000000', '2109.000000', '0.000000', 'Наличная оплата', 'продажа'),
_A>('47', '15.08.2007 15:32:36', 'Торговый зал', '00018', 'пара', '1.000000', '1687.000000', '0.000000', 'Наличная оплата', 'продажа');
_A>
_A>Но возникает исключение «Пропущен символ ( в конце инструкции SQL.».
_A>Как это исправить? Какой должен быть запрос, чтобы добавить несколько записей?
Значит Акцес не поддерживает такой синтаксис. Можно попробовать (а Акцесе не спец) воспользоваться таким пакетом:
begin tran;
insert
ARHIVCHECK(...)
values
('47' AS [CHECKNUM], DateSerial(2007, 15 ,08) ...)
;
insert
ARHIVCHECK(...)
values
('47' AS [CHECKNUM], DateSerial(2007, 15 ,08) ...)
;
...
commit;
Операторы insert выполняются в контексте одной транзакции — это важно. Иначе, каждый оператор insert выполняется в своей отдельной транзакции, что сильно замедляет выполнение пакета.
Re[2]: Запрос на добавление нескольких записей в Access
От: |
_d_m_ |
||
Дата: | 15.08.07 23:19 | ||
Оценка: |
Здравствуйте, ZAMUNDA, Вы писали:
ZAM>2. Используй UNION в подзапросе для вставки данных запросом типа «INSERT ZZZ(…) SELECT … FROM XXX».
ZAM>
ZAM>INSERT INTO ARHIVCHECK( [CHECKNUM], [DATECHECK], [WAREHOUSE])
ZAM>SELECT [CHECKNUM], [DATECHECK], [WAREHOUSE] -- млин, я не писатель вам тут. Непомню можно-ли тут * поставить.
ZAM>FROM (
ZAM>SELECT '47' AS [CHECKNUM], DateSerial(2007, 15 ,08) + TimeSerial(15, 32, 36) AS [DATECHECK], 'Торговый зал' AS [WAREHOUSE] FROM blanc
ZAM>UNION
ZAM>SELECT '47' AS [CHECKNUM], DateSerial(2007, 15 ,08) + TimeSerial(15, 32, 36), 'Торговый зал' AS [WAREHOUSE] FROM blanc
ZAM>) AS InsertedTbl;
ZAM>
Я не знаю как в Акцесе, но в MS SQL предложение FROM необязательно, соответсвенно нет необходимости в таблице [blanc]:
insert
ARHIVCHECK(...)
select
'47' AS [CHECKNUM], DateSerial(2007, 15 ,08) ...
union all
select
'47' AS [CHECKNUM], DateSerial(2007, 15 ,08) ...
;
Re[3]: Запрос на добавление нескольких записей в Access
От: |
ZAMUNDA
|
для жалоб и предложений | |
Дата: | 16.08.07 07:02 | ||
Оценка: |
Здравствуйте, _d_m_, Вы писали:
___>Я не знаю как в Акцесе, но в MS SQL предложение FROM необязательно, соответсвенно нет необходимости в таблице [blanc]:
МАМАЙ КЛИНУС, ДАРАГОЙ, в MSSQL ЙА БЭЗ Blanс ВИСЁ ДЭЛАЙУ!
Ну мож ещё MSFOX вспомним? Так там ащще мона в массив записать всё и APPEND сделать.
А в Access обязательно указание таблицы, и если в таблице нет записей, то в «SELECT {const} AS Somth FROM blank» набор будет пустым — вот такая ботва.
PS: Транзакций Access’овском SQL тож нет (да вроде и ADO.Connection.BeginTransaction и т.д тож не сработают если к Access подключено).
PPS: Кстати правильно «Blank», опечатался я…
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[4]: Запрос на добавление нескольких записей в Access
От: |
_d_m_ |
||
Дата: | 16.08.07 09:35 | ||
Оценка: |
Здравствуйте, ZAMUNDA, Вы писали:
ZAM>Здравствуйте, _d_m_, Вы писали:
___>>Я не знаю как в Акцесе, но в MS SQL предложение FROM необязательно, соответсвенно нет необходимости в таблице [blanc]:
ZAM>МАМАЙ КЛИНУС, ДАРАГОЙ, в MSSQL ЙА БЭЗ Blanс ВИСЁ ДЭЛАЙУ!
А что у Мамая был КЛИНУС??? На ум приходит только… гхм-гхм … клитор и анус
Re[2]: Запрос на добавление нескольких записей в Access
От: |
_Anastasia |
||
Дата: | 16.08.07 12:10 | ||
Оценка: |
Здравствуйте, ZAMUNDA, Вы писали:
ZAM>1. Надо сделать таблицу с одним полем, я её называю обычно «blanc».
ZAM>
ZAM>CREATE TABLE blanc (ValueMy Integer NOT NULL);
ZAM>
и добавить в неё одну запись (с любым значением)
ZAM>INSERT INTO blanc (ValueMy) VALUES (0);
ZAM>
ZAM>2. Используй UNION в подзапросе для вставки данных запросом типа «INSERT ZZZ(…) SELECT … FROM XXX».
ZAM>
ZAM>INSERT INTO ARHIVCHECK( [CHECKNUM], [DATECHECK], [WAREHOUSE])
ZAM>SELECT [CHECKNUM], [DATECHECK], [WAREHOUSE] -- млин, я не писатель вам тут. Непомню можно-ли тут * поставить.
ZAM>FROM (
ZAM>SELECT '47' AS [CHECKNUM], DateSerial(2007, 15 ,08) + TimeSerial(15, 32, 36) AS [DATECHECK], 'Торговый зал' AS [WAREHOUSE] FROM blanc
ZAM>UNION
ZAM>SELECT '47' AS [CHECKNUM], DateSerial(2007, 15 ,08) + TimeSerial(15, 32, 36), 'Торговый зал' AS [WAREHOUSE] FROM blanc
ZAM>) AS InsertedTbl;
ZAM>
Спасибо большое…Все заработало…
Только неудобно немного получается: надо создавать лишнюю таблицу, делать к ней пустое обращение. Но, наверное, сама база так сделана.
А транзакций в Аксесе действительно нет.
Re[5]: Запрос на добавление нескольких записей в Access
От: |
ZAMUNDA
|
для жалоб и предложений | |
Дата: | 16.08.07 12:13 | ||
Оценка: |
|
Здравствуйте, _d_m_, Вы писали:
ZAM>>МАМАЙ КЛИНУС, ДАРАГОЙ, в MSSQL ЙА БЭЗ Blanс ВИСЁ ДЭЛАЙУ!
___>А что у Мамая был КЛИНУС??? На ум приходит только… гхм-гхм … клитор и анус
Клинус — это ж знаменитый советник Мамая по хозяйственным делам.
Клинус
Знаменитый звездочёт и бухгалтер Клинус, был другом детства Мамая, но судьба разделила их в юношестве — Мамай поехал учиться военному делу в южные районы Крыма, а Клинус пешком пошёл по берегу моря на запад в Магрибские земли, изучать науки и чародейство. Однако, дружба с воинственным Мамаем оставила свой след, наряду с талантом к наукам, юный Клинус проявлял недюжую ловкость и силу. Некоторые источники сообщают, что именно он стал прототипом Гендальфа из Толкиенистского «Властелина колец».
Окончив обучение в 1360 году, Клинус придумал трусцу и ею отправился обратно в крымское ханство, чтоб найти себе женщину и старого друга Мамика (так он звал Мамая). Через пять лет судьба послала Клинусу окончание пути, а Мамаю власть, чтобы напрячь людей на поиски старого друга Клиныша (он так называл Клинуса). Ещё через год судьба и арабский скакун, чьё имя история умалчивает, обеспечили встречу старых друзей.
Просохнув через месяц и узнав что Клинус неплохо знает математику, Мамай определил старого друга на работу. Клинус быстро втянулся в загадочный мир подсчёта съеденного, лошадьми из канюшен Мамая , овса и наложенного ими же навоза. Однако настоящую революцию он совершил в деле подсчёта необходимого количества людей и лошадей перед первым походом Мамая на русские земли. Это он заложил основы реляционных баз данных, придумав связывать одного солдата и одной или нескольими лошадьми, клинок с одним живым или мёртвым воином и Мамая со множеством сундуков золота.
Умер Клинус в безвестии от удара шальной подковой по темечку, во время куликовской битвы в 1380 г. К сожалению, стан Клинуса был разорён русскими богатырями, которые и использовали по нужде весь папирус с трудами Клинуса.
Вот так-то!!! Историю учить надо, а не всякую фигню писать.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[3]: Запрос на добавление нескольких записей в Access
От: |
ZAMUNDA
|
для жалоб и предложений | |
Дата: | 16.08.07 13:01 | ||
Оценка: |
Здравствуйте, _Anastasia, Вы писали:
__A>Спасибо большое…Все заработало…:)
Пожалуйста. Канешно заработало, я такой финт ушами давно использую.
_A>Только неудобно немного получается: надо создавать лишнюю таблицу, делать к ней пустое обращение.
Неудобно ёжиков рожать! Удобным должно быть сопровождение, тестирование и (в идеале) рефакторинг — а не написание программы.
Хотите «удобно» — переходите на MS SQL Server Express.
_A>А транзакций в Аксесе действительно нет.
Ну значит и правда нет. Значит память у меня ещё есть…
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
Re[4]: Запрос на добавление нескольких записей в Access
От: |
Igor.K
|
||
Дата: | 16.08.07 16:09 | ||
Оценка: |
_A>>А транзакций в Аксесе действительно нет.
ZAM>Ну значит и правда нет. Значит память у меня ещё есть…
Транзакции в MS Access действительно есть, только в языке Jet SQL они никак не представлены.
А используются они, примерно, так:
On Error GoTo errorTransaction
Dim myWrk As DAO.Workspace, myDbs As DAO.DATABASE
Set myWrk = DBEngine.Workspaces(0)
Set myDbs = CurrentDb
myWrk.BeginTrans
myDbs.Execute "UPDATE ...", dbFailOnError
myDbs.Execute "INSERT ...", dbFailOnError
myDbs.Execute "DELETE ...", dbFailOnError
myWrk.CommitTrans
exitTransaction:
myDbs.Close
myWrk.Close
Exit Sub
errorTransaction:
myWrk.Rollback
MsgBox "Transaction was not completed successfully", vbCritical, "Problem with batch run"
goto exitTransaction
end sub
«СССР — четыре слова и все лживые» — Вагрич Бахчанян
Re[5]: Запрос на добавление нескольких записей в Access
От: |
Бенедикт |
||
Дата: | 17.08.07 07:21 | ||
Оценка: |
_A>>>А транзакций в Аксесе действительно нет.
ZAM>>Ну значит и правда нет. Значит память у меня ещё есть…
IK>Транзакции в MS Access действительно есть, только в языке Jet SQL они никак не представлены.
Справка по языку Microsoft Jet SQL
Инструкция TRANSACTION
Используется для запуска и завершения явных транзакций.Синтаксис
Запускает новую транзакцию.BEGIN TRANSACTION
Заканчивает транзакцию путем завершения всей работы, выполненной в ходе транзакции.
COMMIT [TRANSACTION | WORK]
Заканчивает транзакцию путем свертывания всей работы, выполненной в ходе транзакции.
ROLLBACK [TRANSACTION | WORK]
Дополнительные сведения
Автоматический запуск транзакции невозможен. Чтобы начать транзакцию, ее необходимо явно запустить с помощью инструкции BEGIN TRANSACTION.Допускается пять уровней вложения транзакций. Чтобы запустить вложенную транзакцию, воспользуйтесь инструкцией BEGIN TRANSACTION в контексте существующей транзакции.
Для присоединенных или связанных таблиц транзакции не поддерживаются.
Re[6]: Запрос на добавление нескольких записей в Access
От: |
Igor.K
|
||
Дата: | 19.08.07 05:36 | ||
Оценка: |
Здравствуйте, Бенедикт, Вы писали:
_A>>>>А транзакций в Аксесе действительно нет.
ZAM>>>Ну значит и правда нет. Значит память у меня ещё есть…
IK>>Транзакции в MS Access действительно есть, только в языке Jet SQL они никак не представлены.
Б>Справка по языку Microsoft Jet SQL[q]Инструкция TRANSACTION
Б>Используется для запуска и завершения явных транзакций.
Ты смотри, действительно появились. Просто по MS Office 97 я их действительно не помню.
… << RSDN@Home 1.2.0 alpha rev. 653>>
«СССР — четыре слова и все лживые» — Вагрич Бахчанян
- Переместить
- Удалить
- Выделить ветку
Пока на собственное сообщение не было ответов, его можно удалить.
Code with amendments per above comments to make it Access friendly & remove typos:
INSERT INTO test ( ProcessID, Name, Address, RandomData)
VALUES (123 , 'TestName', 'TestAdd', 'qwrj3ri');
INSERT INTO test ( ProcessID, Name, Address, RandomData)
VALUES (456 , 'TestName2', 'TestAdd', 'qwerty');
INSERT INTO test ( ProcessID, Name, Address, RandomData)
VALUES (789 , 'TestName', 'TestAdd', 'qwrj3ri');
INSERT INTO test ( ProcessID, Name, Address, RandomData)
VALUES (1234, 'Testing123', 'tester', 'asdfghjk');
Useful reference: https://msdn.microsoft.com/en-us/library/bb243852(v=office.12).aspx
Specific comments:
@Damien_The_Unbeliever:
I don’t think access supports multiple rows in the values.
Amended to include an insert into
per row instead of a value set per row (values (...), (...)
).
@Thomas Tschernich:
our missing single quote next to the end of your insert
Changed 'tester', sdfg')
to 'tester', 'sdfg');
@JohnLBevan:
superfluous character on end of first set of values
Changed 'qwrj3ri'), T
to 'qwrj3ri'),
I am currently trying to insert a new row of information into a table, and am using the sql view inside of MS Access. When I run this code:
SELECT *
FROM VersionReleases;
INSERT INTO
VersionReleases(CurrentVersionID, PreviousVersionID, ScriptID, ReleaseDate)
VALUES
(555, 556, 1543, 2018);
It gives me an error specified in title, and I can’t understand why.
Would appreciate some guidance, thanks a bunch.
asked Dec 25, 2018 at 15:26
0
Just drop the SELECT statement. It is of no use here.
INSERT INTO VersionReleases
(CurrentVersionID, PreviousVersionID, ScriptID, ReleaseDate)
VALUES
(555, 556, 1543, 2018);
answered Dec 25, 2018 at 15:39
MS Access only supports the evaluation of one SQL statement; hence anything following a semi-colon delineating the end of a SQL statement will result in MS Access reporting the error:
Characters found after end of SQL statement
As such, your query will need to become either:
SELECT * FROM VersionReleases;
Or:
INSERT INTO
VersionReleases(CurrentVersionID, PreviousVersionID, ScriptID, ReleaseDate)
VALUES
(555, 556, 1543, 2018);
With a new query created to contain the other SQL statement.
answered Dec 26, 2018 at 23:56
Lee MacLee Mac
8771 gold badge11 silver badges24 bronze badges
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.