Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ограничено ли количество параметров в запросе? [D7, XP]


pavel_guzhanov ©   (2005-12-29 13:34:00) 

я задал этот вопрос в конце своего предыдущего топика, но мне кажется, что туда уже вряд ли кто заглянет, так что повторюсь:
есть какое-нибудь ограничение на количество параметров в запросе "Insert INTO"? У меня в запросе 17 параметров получается. Вроде запрос правильно составлен, с типами не напутал, а при выполнении выдается ошибка "Ошибка синтаксиса Insert Into" Может это быть из-за большого количества параметров?
запрос такой:
insert into Table1 (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12, Field13, Field14, Field15, Field16, Field17) values (:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :n, :o, :p, :q)
далее
QInsert.Parameters[0].Value:=Q.Fields[0].AsInteger;  
QInsert.Parameters[1].Value:=MainForm.E1.Text;
QInsert.Parameters[2].Value:=1;
QInsert.Parameters[3].Value:=5;
QInsert.Parameters[4].Value:=StrToInt(MainForm.E2.Text);
QInsert.Parameters[5].Value:=MainForm.E3.Text;
QInsert.Parameters[6].Value:=0;
QInsert.Parameters[7].Value:=0;
QInsert.Parameters[8].Value:=0;
QInsert.Parameters[9].Value:=0;
QInsert.Parameters[10].Value:=0;
QInsert.Parameters[11].Value:=0;
QInsert.Parameters[12].Value:=1;  
QInsert.Parameters[13].Value:=1;
QInsert.Parameters[14].Value:=2;
QInsert.Parameters[15].Value:=3;
QInsert.Parameters[16].Value:=5;

Field2 и Field6 - текстовые, остальные числовые .

Не пойму, где тут ошибка синтаксиса...


pavel_guzhanov   (2005-12-30 16:25:00) [1]

ну да, согласен, когда было сообщение о более чем 255 символов, у меня перед именами параметров были пробелы.... сейчас наверное такого не будет, но проверю это только 4 января - это у меня рабочий день.... Если ветка не уйдет слищком далеко, напишу, что получилось... Спасибо всем за помощь и с наступающим Новым Годом!


sniknik   (2005-12-30 15:46:00) [2]

> что запрос имеет более 255 символов...
обман... подлый обман. если посчитать символы в строке
> QInsert.SQL.Text:='insert into Groups (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10,
> Field11, Field12, Field13, Field14, Field15, Field16, Field17) values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q)';
то легко убедится что даже вся строка имеет длинну 244 символа, не говоря о запросе который будет меньше.

p.s. и как ты только терпиш этом мерзкий компилятор, который тебе так гнустно врет?


pavel_guzhanov   (2005-12-30 15:36:00) [3]

я так пробовал, и получил ошибку, что запрос имеет более 255 символов...


Johnmen   (2005-12-30 09:43:00) [4]

>Наплевал на все, и стал использовать ADOTable.

Это есть крайняя степень моветона.

Твой запрос синтаксических ошибок не имеет.
Попробуй
QInsert.Close;
QInsert.SQL.Text:='insert into Groups (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12, Field13, Field14, Field15, Field16, Field17) values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q)';


pavel_guzhanov   (2005-12-30 09:27:00) [5]

Блин, так и не разобрался((. Наплевал на все, и стал использовать ADOTable.


pavel_guzhanov   (2005-12-29 15:18:00) [6]

на строке
QInsert.ExecSQL;
появляется ошибка "Ошибка синтаксиса в инструкции INSERT INTO"


Johnmen   (2005-12-29 15:12:00) [7]

Тогда ещё раз. Какая ошибка и на какой строке кода вылазит.


pavel_guzhanov   (2005-12-29 15:02:00) [8]

Сделал так перед присвоение значений параметрам:
QInsert.Parameters[0].DataType:=ftInteger;
 QInsert.Parameters[1].DataType:=ftString;
 QInsert.Parameters[2].DataType:=ftInteger;
 QInsert.Parameters[3].DataType:=ftInteger;
 QInsert.Parameters[4].DataType:=ftInteger;
 QInsert.Parameters[5].DataType:=ftString;
 QInsert.Parameters[6].DataType:=ftInteger;
 QInsert.Parameters[7].DataType:=ftInteger;
 QInsert.Parameters[8].DataType:=ftInteger;
 QInsert.Parameters[9].DataType:=ftInteger;
 QInsert.Parameters[10].DataType:=ftInteger;
 QInsert.Parameters[11].DataType:=ftInteger;
 QInsert.Parameters[12].DataType:=ftInteger;
 QInsert.Parameters[13].DataType:=ftInteger;
 QInsert.Parameters[14].DataType:=ftInteger;
 QInsert.Parameters[15].DataType:=ftInteger;
 QInsert.Parameters[16].DataType:=ftInteger;


Не помогло((


Johnmen   (2005-12-29 14:54:00) [9]

список типов TFieldType + F1


pavel_guzhanov   (2005-12-29 14:50:00) [10]


> Перед присвоением значений параметрам укажи их вид и типы.

Извиняюсь за возможно глупый вопрос, но как это сделать?. Если так:
QInsert.Parameters[0].DataType:=....
то какой тип указывать? Integer, как в программе, или Числовой, как в акцессе? а также String или Текстовый?


Johnmen   (2005-12-29 14:44:00) [11]

Понятно.
Перед присвоением значений параметрам укажи их вид и типы.


pavel_guzhanov   (2005-12-29 14:37:00) [12]


> Как формируется текст запроса?


 QInsert.Close;
 QInsert.SQL.Clear;
 QInsert.SQL.Add('insert into Groups (Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10, Field11, Field12, Field13, Field14, Field15, Field16, Field17)');
 QInsert.SQL.Add(' values (:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q)');


Johnmen   (2005-12-29 14:33:00) [13]

Как формируется текст запроса?


pavel_guzhanov   (2005-12-29 14:32:00) [14]

пробелы убрал... не помогло


pavel_guzhanov   (2005-12-29 14:28:00) [15]


> а ты, чудо, где-нибудь упомянул в своем посте о том что
> ты НЕ используешь кл.-серв. СУБД ?



> pavel_guzhanov ©   (29.12.05 13:35) [1]
> забыл сказать. БД-Access, компоненты доступа к базе - ADO


Johnmen   (2005-12-29 14:24:00) [16]

>(:a, :b, :c, :d, :e, :f, :g, :h, :i, :j, :k, :l, :m, :n, :o, :p, :q)

Убери пробелы.


Digitman   (2005-12-29 14:20:00) [17]


> sql monitor ничего не показывает


а ты, чудо, где-нибудь упомянул в своем посте о том что ты НЕ используешь кл.-серв. СУБД ?

то что ты видишь (куак диагностика ошибки), явно не относится к исполняющей части - сформированный (с учетом факт.параметров) текст запроса явно не проходит "проверку на вшивость" уже на КЛИЕНТСКОЙ стороне.


pavel_guzhanov   (2005-12-29 14:15:00) [18]

sql monitor ничего не показывает... я где-то читал, что его используют только с серверными базами....


Digitman   (2005-12-29 13:54:00) [19]

подключи SQL Monitor да посмотри результирующий текст запроса


pavel_guzhanov   (2005-12-29 13:35:00) [20]

забыл сказать. БД-Access, компоненты доступа к базе - ADO


Наверх

Титульная страница Поиск, карта сайта Написать письмо