| 
			| 
					
						| Crazy_Pickle 
								Гость
 | 
								|  | «  : 20-07-2010 11:59 »  |  | 
 
 Уважаемые опытные да бывалые, не сочтите за труд наставить нуба на путь истинный. Пишу таблицу маршрутов ( так в данном случае товарные составы называются) под Access, на дельфях, и хочу сделать добавление этих самых маршрутов из программы, для этого собираюсь использовать SQL запросы, в частности INSERT. Для облегчения задачи таблицы у меня связаны, и что бы пользователь не вбивал ID нужной компании или продукции, я использую combobox, беру оттуда итеминдекс, в моем случае он аналогичен ID. Но это стороннее пояснение, что бы были понятны мои действия, итак, у меня выдает ошибку в синтаксисе INSERT INTO. Вот код кнопки ответственной за добавление. procedure TForm4.BitBtn1Click(Sender: TObject);Var i, x: Integer;
 s: String;
 begin
 x:= Partner.ItemIndex;
 i:= Product.ItemIndex;
 S:= 'Insert sostav (id_customer, Id_production, GTO, GD, nomer, values) Values ("'+IntToStr(x)+'","'+IntToStr(i)+'","'+GTO.Text+'","'+GD.Text+'","'+Nomer.Text+'","'+Ves.Text+'")';
 Showmessage (s);
 ADOQuery1.SQL.Add(s);
 ADOQuery1.ExecSQL;
 ADOQuery1.Clear;
 end;
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #1 : 20-07-2010 12:35 »  |  | 
 
 какой синтаксис insert?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Dale | 
								|  | « Ответ #2 : 20-07-2010 12:49 »  |  | 
 
 Я бы поступил так: поставил точку останова в строке, где строке запроса S присваивается значение, скопировал запрос в буфер обмена, а потом выполнил бы его вручную в среде Access. Обычно подобные ошибки легко отлавливаются таким образом.
 То, что сразу бросилось в глаза: название поля values явно неудачное, лучше не давать объектам базы данных имена, совпадающие с ключевыми словами. Может, в данном конкретном случае дело и не в этом, но вообще от этого бывают весьма неприятные и труднонаходимые сюрпризы.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
 Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
 
 Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #3 : 20-07-2010 13:04 »  |  | 
 
 так у него есть отладочная точка   Showmessage (s); Но это стандартная ошибка - смотрю в книгу, вижу фигу... К топикстартеру совсем не относится. |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Dale | 
								|  | « Ответ #4 : 20-07-2010 13:13 »  |  | 
 
 Я давненько Дельфей в руках не держал, уже не помню, позволяет ли Showmessage копировать текст своего сообщения в буфер обмена. А с точкой останова это точно получится. И тогда уже в самом Access доводить запрос до ума, пока не заработает. |  
						| 
								|  |  
								|  |  Записан | 
 
 Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
 Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
 
 Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
 |  |  | 
	| 
			| 
					
						| Crazy_Pickle 
								Гость
 | 
								|  | « Ответ #5 : 20-07-2010 13:24 »  |  | 
 
 Ну в данном случае мне позволено работать только таким образом, конкретно в ACCESS не получится.А ошибка следующая:
 Project Marshrut.exe raised exception class EOleException with message 'Ошибка синтаксиса в инструкции INSERT INTO'.
 Думал дело в кавычках и апострофах, перепробовал 4 варианта, так и не помогло, чешу репу, в чем может быть дело.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Dale | 
								|  | « Ответ #6 : 20-07-2010 13:25 »  |  | 
 
 А чему равно значение строки S? |  
						| 
								|  |  
								|  |  Записан | 
 
 Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
 Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
 
 Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #7 : 20-07-2010 13:43 »  |  | 
 
 Повторю вопрос
 Какой синтаксис INSERT ?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Dale | 
								|  | « Ответ #8 : 20-07-2010 13:52 »  |  | 
 
 Если подвох в отсутствии INTO после INSERT, то MSDN утверждает, что это не обязательно, как и список полей для вставки данных: Using INSERTThe INSERT statement adds one or more new rows to a table. In a simplified treatment, INSERT has the following form:
 
 INSERT [INTO] table_or_view [(column_list)] data_values
 Я сам привык его всегда ставить, отсутствие режет глаз, но для интерпретатора SQL это всего лишь шумовое слово, вроде AS и т.п. Может, конечно, в диалекте SQL для Access его опускать недопустимо. В любом случае нужно проверить на живой базе с ним и без него. |  
						| 
								|  |  
								|  |  Записан | 
 
 Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.
 Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard
 
 Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
 |  |  | 
	| 
			| 
					
						| Алексей++ 
								глобальный и пушистыйГлобальный модератор    Offline 
								Сообщений: 13
								
								
								
								
								
							 | 
								|  | « Ответ #9 : 20-07-2010 14:18 »  |  | 
 
 Интересно, а куда вставятся данные, если не указан column_list ? |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #10 : 20-07-2010 14:50 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #11 : 20-07-2010 15:37 »  |  | 
 
 Ошибка в двойных кавычках. Попробуй: S:= 'Insert sostav (id_customer, Id_production, GTO, GD, nomer, values) Values(' + '''' + IntToStr(x)+ '''' + ',' + '''' +IntToStr(i) + '''' //и т. д.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Crazy_Pickle 
								Гость
 | 
								|  | « Ответ #12 : 20-07-2010 15:41 »  |  | 
 
 Спасибо всем кто пытался помочь, разобрался. Целых две ошибки было. Ошибка была в двойных кавычках, пришлось ставить ''' (три апострофа, для преодоления)
 Действительно values было виновато ( специально затестил после нахождение ошибки в синтаксисе, действительно когда стоит вальюс - не робит)
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Crazy_Pickle 
								Гость
 | 
								|  | « Ответ #13 :  20-07-2010 15:42 »   |  | 
 
 О, не заметил сообщений. спасибо энивей ) |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #14 : 23-07-2010 04:47 »  |  | 
 
 просто BDE значение в двойных кавычках считает "токеном", т.е. наименованием поля или таблицы, а в ординарных - собственно, значением   |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	|  |