Пропущен символ в конце инструкции sql access


Запрос на добавление нескольких записей в 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>>

«СССР — четыре слова и все лживые» — Вагрич Бахчанян

  • Переместить
  • Удалить
  • Выделить ветку

Пока на собственное сообщение не было ответов, его можно удалить.

JWT аутентификация в Java

Javaican 21.04.2025

JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .

Спринты Agile: Планирование, выполнение, ревью и ретроспектива

EggHead 21.04.2025

Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .

Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров

Programma_Boinc 21.04.2025

Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров.

3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .

Система статов в Unity

GameUnited 20.04.2025

Статы — фундаментальный элемент игрового дизайна, который определяет характеристики персонажей, предметов и других объектов в игровом мире. Будь то показатель силы в RPG, скорость передвижения в. . .

Статические свойства и методы в TypeScript

run.dev 20.04.2025

TypeScript прочно занял своё место в системе современной веб-разработки. Этот строго типизированный язык программирования не просто расширяет возможности JavaScript — он делает разработку более. . .

Batch Transform и Batch Gizmo Drawing API в Unity

GameUnited 20.04.2025

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

Звук в Unity: Рандомизация с Audio Random Container

GameUnited 20.04.2025

В современных играх звуковое оформление часто становится элементом, который либо полностью погружает игрока в виртуальный мир, либо разрушает атмосферу за считанные минуты. Представьте: вы исследуете. . .

Максимальная производительность C#: Советы, тестирование и заключение

stackOverflow 20.04.2025

Погружение в мир микрооптимизаций C# открывает перед разработчиком целый арсенал мощных техник. Но как определить, где и когда их применять? Ответ начинается с точных измерений и профилирования.

. . .

Максимальная производительность C#: Предсказание ветвлений

stackOverflow 20.04.2025

Третий ключевой аспект низкоуровневой оптимизации — предсказание ветвлений. Эта тема менее известна среди разработчиков, но её влияние на производительность может быть колоссальным. Чтобы понять. . .

Максимальная производительность C#: Векторизация (SIMD)

stackOverflow 20.04.2025

Помимо работы с кэшем, другим ключевым аспектом низкоуровневой оптимизации является векторизация вычислений. SIMD (Single Instruction, Multiple Data) позволяет обрабатывать несколько элементов данных. . .

SQL = "SELECT dbo_Promoters.postcode, dbo_Promoters.[Box Office], dbo_Promoters.PHONE, dbo_Promoters.ADDRESS1, dbo_Promoters.ADDRESS2, dbo_Promoters.TOWN, dbo_Promoters.COUNTY, dbo_Promoters.name, dbo_Venues.venue, dbo_Venues.[venue postcode], dbo_Companies.[contact name], dbo_Companies.address1, dbo_Companies.address2, dbo_Companies.town, dbo_Companies.county, dbo_Companies.postcode, dbo_Companies.mobile, dbo_Companies.Email, dbo_Companies.[Tel:], dbo_EventsLive.[Accom costs etc], dbo_Promoters.NAME, dbo_EventsLive.EventID, dbo_EventsLive.[event date], dbo_EventsLive.time, dbo_Promoters.email, dbo_EventsLive.AdultTP, dbo_EventsLive.FamilyTP, dbo_EventsLive.ChildTP, dbo_EventsLive.[workshop requested], dbo_EventsLive.[Total Cost of Event], dbo_EventsLive.[Promoter Fee], dbo_EventsLive.[Actual Cost of Show], dbo_EventsLive.[workshop notes], dbo_EventsLive.[workshop time], dbo_EventsLive.[workshop cost], dbo_EventsLive.GALSPCoCost, dbo_EventsLive.PromoShowCost,"

SQL = SQL & "dbo_EventsLive.PromoOnCosts , dbo_EventsLive.PromoTotalCost , dbo_WhichProjectLive.WhichProject, dbo_Shows.[Show Name]"

SQL = SQL & "FROM dbo_WhichProjectLive INNER JOIN (dbo_Shows INNER JOIN (dbo_Companies INNER JOIN (dbo_Promoters INNER JOIN (dbo_Venues INNER JOIN dbo_EventsLive ON dbo_Venues.ID = dbo_EventsLive.VenueID) ON dbo_Promoters.ID = dbo_EventsLive.PromoterID) ON dbo_Companies.ID = dbo_EventsLive.CompanyID) ON dbo_Shows.ID = dbo_EventsLive.ShowID) ON dbo_WhichProjectLive.ID = dbo_EventsLive.WhichProject_ID "

SQL = SQL & " WHERE dbo_EventsLive.EventID=" & [currentID]

If OpenConnection Then
        If rs.State = adStateOpen Then rs.Close
         rs.Open SQL, cn, adOpenKeyset, adLockOptimistic

 

IvanSh

Пользователь

Сообщений: 57
Регистрация: 16.02.2014

#1

26.12.2014 23:36:08

Всем привет!
В таблицу Access из 8 полей нужно внести(изменить) значения в 2 поля в определенной строке таблицы. Делаю это через макрос в VBA. Если с добавлением полной строки со всеми полями проблем нет, то с добавлением в конкретную строку одного или 2-х значений проблема. Помогите SQL запрос подправить.

Код
strSQL = "INSERT INTO User_data (SIG_2,SN2) VALUES ('" & sig_2 & "','" & sn2 & "') SELECT * FROM User_data WHERE  email = '" & email & "';"
 

Компилятор говорит, что пропущен символ ; в конструкции SQL

Изменено: IvanSh27.12.2014 00:18:31

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

А конечный SQL запрос можно показать (что в strSQL)?

There is no knowledge that is not power

 

IvanSh

Пользователь

Сообщений: 57
Регистрация: 16.02.2014

#3

26.12.2014 23:42:28

Цитата
Johny пишет: А конечный SQL запрос можно показать (что в strSQL)?

Это и есть конечный запрос. Пролистайте в конец бегунок.
После идет уже его выполнение. Перенес в 2 строки запрос ( у меня в одну строку все)

strSQL = «INSERT INTO User_data (SIG_2, SN2) VALUES (‘» & sig_2 & «‘,'» & sn2 & «‘)
SELECT * FROM User_data WHERE  email = ‘» & email & «‘;»

cn.Execute strSQL

Изменено: IvanSh26.12.2014 23:47:16

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#4

26.12.2014 23:44:59

Цитата
IvanSh пишет: с добавлением в конкретную строку одного или 2-х значений

это как? я всегда думал, что изменение отдельных полей в существующей записи выполняется с помощью UPDATE, а не INSERT
или о чём Вы?

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

IvanSh

Пользователь

Сообщений: 57
Регистрация: 16.02.2014

ВСЕ верно, я забыл SQL просто )) если не сложно поправьте как будет запрос выглядеть ))

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

#6

26.12.2014 23:48:48

Цитата
IvanSh пишет: Это и есть конечный запрос. Пролистайте в конец бегунок.

Конечный запрос — это то, что хранится в переменной strSQL после присвоения ему значения. Так понятнее?

There is no knowledge that is not power

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

сорри, не скажу.
я настолько редко пользуюсь чем-либо, кроме SELECT-а, что сам всегда лезу в Jet-овскую справку.
единственный момент — изменяемую запись надо однозначно идентифицировать.
желательно — по первичному ключу.
а этого отсюда вообще не видно.
да и вообще мало что видно.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

А вообще по смыслу запроса вы выбираете данные из одной таблицы, чтобы вставить в другую. Только я не уверен, что данный запрос это делает, так как количество столбцов должно быть 2 в «SELECT * FROM User_data».

There is no knowledge that is not power

 

IvanSh

Пользователь

Сообщений: 57
Регистрация: 16.02.2014

Все спс ikki за замечание, сам запрос подправил ))

strSQL = «UPDATE User_data SET SIG_2 = ‘» & sig_2 & «‘, SN2 ='» & sn2 & «‘ WHERE  [email] = ‘» & email & «‘;»

Про первичный ключ тоже все верно, но у меня нет сложных связей в таблицах, просто нужно из полученной ексель формы макросом(надстройкой) подправить данные в существующей строке таблицы в access. А так как емайл уникален, то и строка такая одна. Понятно что говно-архитектура, но на первом этапе пойдет, главное пока автоматизировать сохранение данных.
Можно конечно SELECTом подтянуть наружу уникальный ID записи в какой-нить невидимый Label на форме и с ним уже работать ))

Изменено: IvanSh27.12.2014 00:10:12

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

название темы, конечно, вообще ни к селу ни к городу
поправить бы…  

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Johny

Пользователь

Сообщений: 2737
Регистрация: 21.12.2012

Автор, я так и не понял, что вы хотели и что у вас получилось.

There is no knowledge that is not power

 

Юрий М

Модератор

Сообщений: 61088
Регистрация: 14.09.2012

Контакты см. в профиле

#12

27.12.2014 00:10:20

Цитата
ikki пишет:
поправить бы

Каким образом? )

 

IvanSh

Пользователь

Сообщений: 57
Регистрация: 16.02.2014

#13

27.12.2014 00:11:16

Цитата
Johny пишет: Автор, я так и не понял, что вы хотели и что у вас получилось.

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

 

IvanSh

Пользователь

Сообщений: 57
Регистрация: 16.02.2014

#14

27.12.2014 00:11:45

Цитата
ikki пишет: поправить бы..

Еще бы я знал как тему подправлять, с ходу не нашел.

 

Юрий М

Модератор

Сообщений: 61088
Регистрация: 14.09.2012

Контакты см. в профиле

И с двух ходов не найдёте))

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

#16

27.12.2014 00:15:44

IvanSh, это я не Вам.

Цитата
Юрий М пишет: Каким образом? )

а вот тут могут быть варианты
ибо, по сути, к экселю тема имеет ну о-о-очень отдалённое отношение.
так что можно и в курилку.
а обозвать… «изменение полей таблиц Access (UPDATE)»
:?:

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Юрий М

Модератор

Сообщений: 61088
Регистрация: 14.09.2012

Контакты см. в профиле

#17

27.12.2014 00:17:55

Изменяю и переношу.

1
2
3
4
5
INSERT INTO Teachers (КодУчителя, Фамилия, Имя, Отчество, Предмет, НомерТелефона) VALUES(1, Антипина, Светлана, Бронислововна, БД, 23432);
INSERT INTO Teachers (КодУчителя, Фамилия, Имя, Отчество, Предмет, НомерТелефона) VALUES(2, Наговицына, Елена, Александровна, Информ, 21122);
INSERT INTO Teachers (КодУчителя, Фамилия, Имя, Отчество, Предмет, НомерТелефона) VALUES(3, Сычева, Наталья, Витальевна, Информ, 21132);
INSERT INTO Teachers (КодУчителя, Фамилия, Имя, Отчество, Предмет, НомерТелефона) VALUES(4, Сычёв, Даниил, Витальевич, Физра, 23444);
INSERT INTO Teachers (КодУчителя, Фамилия, Имя, Отчество, Предмет, НомерТелефона) VALUES(5, Чепырина, Валентина, Александровна, Экология, 23422);

 
Whippi

 
(2003-01-13 15:56)
[0]

Что за фигня:

Написал простенький запрос к Аксесовской базе:


SELECT Изделия.*, Компоненты.*, Состав.*


FROM Изделия, Компоненты, Состав;


WHERE Изделия.ИЗД=Состав.ИЗД


AND Компоненты.КОМП=Состав.КОМП;

и выдало такую ошибку: Обнаружены символы за пределами инструкций SQL.

Но вот не вижу где ошибка. Ткните носом пожалуйста :))


 
Delirium^.Tremens

 
(2003-01-13 15:58)
[1]

Русские символы


 
Zz_

 
(2003-01-13 16:04)
[2]

FROM Изделия, Компоненты, Состав
;


 
Whippi

 
(2003-01-13 16:11)
[3]

2Delirium^.Tremens:

Какие русские символы,пишу просто:

SELECT Изделия.*, Компоненты.*, Состав.*


FROM Изделия, Компоненты, Состав;

прокатывает, только добавляю:

WHERE Изделия.ИЗД=Состав.ИЗД


AND Компоненты.КОМП=Состав.КОМП;

Выдает:Обнаружены символы за пределами инструкций SQL.

2Zz_


> FROM Изделия, Компоненты, Состав ;

А у меня что?


 
stone

 
(2003-01-13 16:13)
[4]

после FROM Изделия, Компоненты, Состав не надо ставить ;


 
Whippi

 
(2003-01-13 16:20)
[5]

Блиииииииииин,

спасибо за науку, впредь акуратнее буду примеры сдирать :))


Привет!

Использую OleDbCommand. В качестве запроса использую несколько операций INSERT. При выполнении команды (ExecuteNonQuery()) возникает исключение. Если в команде один INSERT все проходит хорошо, если несколько ничего не получается. В качестве разделителя все использовал и ; и GO и просто строками дробил. Как решить эту проблему?

Спасибо.

Здравствуйте, <Аноним>, Вы писали:

А>Использую OleDbCommand. В качестве запроса использую несколько операций INSERT. При выполнении команды (ExecuteNonQuery()) возникает исключение. Если в команде один INSERT все проходит хорошо, если несколько ничего не получается. В качестве разделителя все использовал и ; и GO и просто строками дробил. Как решить эту проблему?

А текст исключения является Вашей комерческой тайной или вы уверены, что он не может помочь ответить на вопрос?
Если подключить телепатию, то могу предположить, что OleDb провайдер попросту не поддерживает такие операции.

… << RSDN@Home 1.2.0 alpha rev. 665>>
Now playing: «Тихо в лесу…»

Help will always be given at Hogwarts to those who ask for it.

Если команды пишутся через «;», то выдается исключение:
System.Data.OleDb.OleDbException was caught
Message=»Обнаружены символы за пределами инструкции SQL.»
Source=»Microsoft JET Database Engine»
ErrorCode=-2147217900
StackTrace:

Если команды пишутся без «;», то выдается исключение:
System.Data.OleDb.OleDbException was caught
Message=»Произошла одна или несколько ошибок во время обработки команды.»
Source=»Microsoft JET Database Engine»
ErrorCode=-2147217900
StackTrace:

Здравствуйте, Аноним, Вы писали:

Так в чём проблема выполнить раздельно?
Открываешь транзакцию, выполняешь в цикле все команды, закрываешь транзакцию.
Отлов исключений ставишь там где надо.

I am Jack’s Bugged Code.

Здравствуйте, <Аноним>, Вы писали:

А>Если команды пишутся через «;», то выдается исключение:

А>System.Data.OleDb.OleDbException was caught
А> Message=»Обнаружены символы за пределами инструкции SQL.»
А> Source=»Microsoft JET Database Engine»

Очень сомневаюсь, что Джет поддерживает такой способ работы, как несколько команд, разделённых точкой с запятой.

… << RSDN@Home 1.2.0 alpha rev. 665>>
Now playing: «Тихо в лесу…»

Help will always be given at Hogwarts to those who ask for it.

Здравствуйте, Аноним, Вы писали:

А>Использую OleDbCommand. В качестве запроса использую несколько операций INSERT. При выполнении команды (ExecuteNonQuery()) возникает исключение. Если в команде один INSERT все проходит хорошо, если несколько ничего не получается. В качестве разделителя все использовал и ; и GO и просто строками дробил. Как решить эту проблему?

Джет в принципе не умеет выполнять несколько команд, вызванных за раз. Команды GO там вовсе нет.
Сделайте два вызова.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Стиральная машина weissgauff wm 40265 t инструкция
  • Набор для лепки холодный фарфор инструкция
  • Как правильно продать долю в квартире третьему лицу пошаговая инструкция
  • Как снять полотенцесушитель в ванной своими руками пошаговая инструкция
  • Танакан капли для детей инструкция по применению