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


Форум программистов Vingrad

Страницы: (2) Все [1] 2 
( Перейти к первому непрочитанному сообщению )

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> добавление записей через AdoQuery, пропущен символ (;) в конце инструкции 

V

   

Опции темы

neweraser
Дата 1.12.2009, 01:22 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6

Всем привет

Код

  DataModule1.ADOQuery.Close;
  DataModule1.ADOQuery.SQL.Clear;
  for i:= 0 to ObjGuardList2.Count - 1 do
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (EmplName) Values("' + ObjGuardList2.Items[i] + '")');
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (GenDir) Values("' + Datamodule1.RequisTable.FieldByName('GenDir').AsString + '")');
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (FullName) Values("' + Datamodule1.RequisTable.FieldByName('FullName').AsString + '")');
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (ObjName) Values("' + ObjChoose.DataField + '")');
  DataModule1.ADOQuery.ExecSQL;

добавляю много строк и выдается такая ошибка

Цитата
пропущен символ (;) в конце инструкции SQL

пробовал так

Код

DataModule1.ADOQuery.Close;
  DataModule1.ADOQuery.SQL.Clear;
  for i:= 0 to ObjGuardList2.Count - 1 do
  begin
    DataModule1.ADOQuery.SQL.Clear;
    DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (EmplName) Values("' + ObjGuardList2.Items[i] + '")');
    DataModule1.ADOQuery.ExecSQL;
  end;
  DataModule1.ADOQuery.SQL.Clear;
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (GenDir) Values("' + Datamodule1.RequisTable.FieldByName('GenDir').AsString + '")');
  DataModule1.ADOQuery.ExecSQL;
  DataModule1.ADOQuery.SQL.Clear;
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (FullName) Values("' + Datamodule1.RequisTable.FieldByName('FullName').AsString + '")');
  DataModule1.ADOQuery.ExecSQL;
  DataModule1.ADOQuery.SQL.Clear;
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (ObjName) Values("' + ObjChoose.DataField + '")');
  DataModule1.ADOQuery.ExecSQL;

добавляет но криво и в середине вываливается ошибка
и даже после каждой 
 DataModule1.ADOQuery.SQL.Clear; (после цикла) добавлял
DataModule1.ADOQuery.First;  smile 
в сети ничего кроме

Цитата
Access не поддерживает конструкцию оператора INSERT для множественной вставки.
Для множественной вставки используйте цикл, где на каждой итерации производите вставку 1 строки
Но, используя Delphi можно обойтись гораздо проще, не использовать оператор INSERT SQL..
а просто InsertRecord
например..

Код:
var i:integer;
begin
  for i := 0 to Memo1.Lines.Count-1 do
   ADOTable1.InsertRecord([Memo1.Lines[i]]);
end;

больше ничего не нашел, может есть какой-то еще вариант решения проблемы? не хочется ADOTable использовать, и так на форме куча компонентов

———————

Кто ищет, тот всегда найдет.

PM MAIL ICQ Skype   Вверх
Данкинг
Дата 1.12.2009, 01:42 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

Цитата(neweraser @  1.12.2009,  01:22 Найти цитируемый пост)
добавляет но криво и в середине вываливается ошибка

Почему криво, какая ошибка? Вообще перед каждым .Clear делай .Close 

Код

DataModule1.ADOQuery.Close;
DataModule1.ADOQuery.SQL.Clear;

Добавлено через 41 секунду

Цитата(neweraser @  1.12.2009,  01:22 Найти цитируемый пост)
DataModule1.ADOQuery.First; 

Это явно ни при чём. smile 

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
Teleport
Дата 1.12.2009, 03:07 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: 1
Всего: 6

Цитата
пропущен символ (;) в конце инструкции SQL

В тексте SQL-запроса в конце перед самой  нужно ставить ;

Код

ADOQ1.Active:= false;
ADOQ1.SQL.Clear;
ADOQ1.SQL.Add('INSERT INTO my_table1 VALUES("' +my_str_value1+'","' + my_str_value2+'", "' + my_str_value3 + '","' + my_str_value4 + '");');
ADOQ1.ExecSQL;

Видишь — у меня ; перед   smile 
Немного не по теме — ты всегда пишешь на каждой строке  DataModule1.ADOQuery? 
with —  вообще не пользуешься? Это я на всякий случай. 3-4 строчки еще без него, а более — уже с ним, как-то удобнее.

Это сообщение отредактировал(а) Teleport — 1.12.2009, 03:17

———————

user posted image
user posted image 

PM MAIL   Вверх
neweraser
Дата 1.12.2009, 10:10 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6

Цитата(Данкинг @  1.12.2009,  01:42 Найти цитируемый пост)
какая ошибка?

он с ObjguardList2 добавляет как нужно, потом добавляет запись в 3-4 строку (в зависимости от ObjguardList2.Count), хотя мне надо в 1-ю строку в поле ‘GenDir’,  а потом ошибка (какая не помню (я не дома) smile

Код

 DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (GenDir) Values("' + Datamodule1.RequisTable.FieldByName('GenDir').AsString + '")');

Цитата(Teleport @  1.12.2009,  03:07 Найти цитируемый пост)
with —  вообще не пользуешься?

пользовался, но потом посчитал это некрасивым  smile , т.к. у меня сначала with, потом if условия, goto и др… а потом опять добавление  smile могу код скинуть  smile только вечером

Цитата(Teleport @  1.12.2009,  03:07 Найти цитируемый пост)
В тексте SQL-запроса в конце перед самой ‘ нужно ставить ;

я пробовал, все равно та же ошибка :((

———————

Кто ищет, тот всегда найдет.

PM MAIL ICQ Skype   Вверх
Frees
Дата 1.12.2009, 10:19 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Эксперт
****

Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54

может 
поле Datamodule1.RequisTable.FieldByName(‘FullName’).AsString или другие поля имеют значение null? asstring тогда вернет пустоту и запрос у тебя криво соберется

———————

Кольцов Виктор Владимирович

PM MAIL ICQ   Вверх
Данкинг
Дата 1.12.2009, 12:01 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

Цитата(neweraser @  1.12.2009,  10:10 Найти цитируемый пост)
потом добавляет запись в 3-4 строку (в зависимости от ObjguardList2.Count), хотя мне надо в 1-ю строку в поле ‘GenDir’,  

Если надо вставлять в конкретную строку, то используется не Insert, а Update с условием Where. smile 
И вообще, что значит «третья» строка? Конечно, в трёх записях не запутаешься, но когда добавишь 1000-ю запись, далеко не факт, что в таблице она и физически будет именно 1000-й. smile

Это сообщение отредактировал(а) Данкинг — 1.12.2009, 12:19

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
neweraser
Дата 1.12.2009, 18:56 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6

Цитата(Frees @  1.12.2009,  10:19 Найти цитируемый пост)
поле Datamodule1.RequisTable.FieldByName(‘FullName’).AsString или другие поля имеют значение null?

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

Цитата(Данкинг @  1.12.2009,  12:01 Найти цитируемый пост)
Update с условием Where

как это?

———————

Кто ищет, тот всегда найдет.

PM MAIL ICQ Skype   Вверх
Данкинг
Дата 1.12.2009, 18:58 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

Цитата(neweraser @  1.12.2009,  18:56 Найти цитируемый пост)
как это? 

При наличии ключевого (к примеру) поля:

Код

update TABLE set pole1='3' where id=3

В данном случае в pole1 будет занесено значение «3» для тех записей, у которых поле id имеет значение 3.

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
Teleport
Дата 1.12.2009, 19:18 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: 1
Всего: 6

neweraser — главное определиться — тебе нужно ИЗМЕНИТЬ (ОБНОВИТЬ) значения в существующей записи (строке) или же ДОБАВИТЬ НОВУЮ запись (строку) в таблицу.

———————

user posted image
user posted image 

PM MAIL   Вверх
neweraser
Дата 1.12.2009, 19:29 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6

все равно не доходит до меня :(
ipicture не грузится, поэтому так присоеденил на всякий случай.
в поле EmplName у меня добавляется несколько записей
в остальные по одной записи из лругой таблицы
изначально код выглядел вот так 

Код

DataModule1.ADOQuery.Close;
  DataModule1.ADOQuery.SQL.Clear;
  for i:= 0 to ObjGuardList2.Count - 1 do
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (EmplName) Values("' + ObjGuardList2.Items[i] + '")');
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (GenDir) Values("' + Datamodule1.RequisTable.FieldByName('GenDir').AsString + '")');
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (FullName) Values("' + Datamodule1.RequisTable.FieldByName('FullName').AsString + '")');
  DataModule1.ADOQuery.SQL.Add('Insert into ' + TableName + ' (ObjName) Values("' + ObjChoose.DataField + '");');
  DataModule1.ADOQuery.ExecSQL;

 

smile

Присоединённый файл ( Кол-во скачиваний: 12 )

Присоединённый файл
 123.jpg 15,44 Kb

———————

Кто ищет, тот всегда найдет.

PM MAIL ICQ Skype   Вверх
neweraser
Дата 1.12.2009, 19:31 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6

Teleport, я добавляю новые записи в только что созданную таблицу

Присоединённый файл ( Кол-во скачиваний: 16 )

Присоединённый файл
 123.jpg 15,44 Kb

———————

Кто ищет, тот всегда найдет.

PM MAIL ICQ Skype   Вверх
Данкинг
Дата 1.12.2009, 19:34 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

neweraser, хочешь сказать, этот код заполняет первую строку таблицы? smile 

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
neweraser
Дата 1.12.2009, 19:44 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6

нееет, он должен заполнять только ЕмплНаме, допустим 4 поля сверху, остальные 3 поля только на первой строке, а остальные поля потом будут заполняться

Добавлено через 1 минуту и 25 секунд
 smile фигня какая-то, вирус? английские буквы в русские переключаются, делпхи  smile  (было написано на англ. раскладке)

———————

Кто ищет, тот всегда найдет.

PM MAIL ICQ Skype   Вверх
Данкинг
Дата 1.12.2009, 20:05 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Yersinia pestis
****

Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130

Цитата(neweraser @  1.12.2009,  19:44 Найти цитируемый пост)
остальные 3 поля только на первой строке, а остальные поля потом будут заполняться

Вот для этого каждая строка и должна иметь уникальный номер (например, ID). Вначале заполняем 4 строки ЕмплНаме с помощью insert, а потом уже — 3 столбца первой строки с помощью update… where ID=1… smile

Цитата(neweraser @  1.12.2009,  19:44 Найти цитируемый пост)
фигня какая-то, вирус? английские буквы в русские переключаются, делпхи 

Это не вирус, это ПунтоСвитчер. smile

———————

There’s nothing left but silent epitaphs.

PM MAIL WWW   Вверх
neweraser
Дата 1.12.2009, 20:29 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Опытный
**

Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

Репутация: нет
Всего: 6

а можно без ид? например where (‘поле GenDir — первая строка’) smile
пс это не пунто свичер, а что-то с форумом или моей оперой smile

Добавлено через 1 минуту и 40 секунд
т.к. в блокноте нормально все )) скопировал — вставил в окошко сообщения — вроде нормально

———————

Кто ищет, тот всегда найдет.

PM MAIL ICQ Skype   Вверх



















Страницы: (2) Все [1] 2 

Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Delphi: Базы данных и репортинг»
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


Запрос на добавление нескольких записей в 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с ВИСЁ ДЭЛАЙУ!

А что у Мамая был КЛИНУС??? http://rsdn.org/forum/images/anvaka/shok.gif На ум приходит только… гхм-гхм http://rsdn.org/forum/images/anvaka/squirm.gif… клитор и анус


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с ВИСЁ ДЭЛАЙУ! :-)

___>А что у Мамая был КЛИНУС??? http://rsdn.org/forum/images/anvaka/shok.gif На ум приходит только… гхм-гхм http://rsdn.org/forum/images/anvaka/squirm.gif… клитор и анус
Клинус — это ж знаменитый советник Мамая по хозяйственным делам.

Клинус

Знаменитый звездочёт и бухгалтер Клинус, был другом детства Мамая, но судьба разделила их в юношестве — Мамай поехал учиться военному делу в южные районы Крыма, а Клинус пешком пошёл по берегу моря на запад в Магрибские земли, изучать науки и чародейство. Однако, дружба с воинственным Мамаем оставила свой след, наряду с талантом к наукам, юный Клинус проявлял недюжую ловкость и силу. Некоторые источники сообщают, что именно он стал прототипом Гендальфа из Толкиенистского «Властелина колец».
Окончив обучение в 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>>

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

Подождите ...

Wait...

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

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

Мне нужно добавить несколько записей в таблицу. Если добавлять одну запись, то всё нормально. А если, как минимум, две, то пишет, что пропущена точка с запятой.
Вот запрос:

INSERT INTO Изделие ( название, вес, колличество, цена, дата_изготовления, фирма_изготовитель )
VALUES 
('Название1', 1.1, 1, 1.1, 2001/01/01, 'фирма1'),
('Название2', 2.2, 2, 2.2, 2002/02/02, 'фирма2');

Помогите, пожалуйста.

 
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]

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

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


Понравилась статья? Поделить с друзьями:
  • Как заказать инн через фнс пошаговая инструкция
  • Кетонал таблетки 150 мг инструкция по применению цена отзывы аналоги
  • Покраска сруба снаружи своими руками пошаговая инструкция
  • Тексаред уколы инструкция по применению цена как разводить
  • Пантенол для губ помада инструкция по применению