Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Ограничено ли количество параметров в запросе?   Найти похожие ветки 

 
pavel_guzhanov ©   (2005-12-29 13:34) [0]

я задал этот вопрос в конце своего предыдущего топика, но мне кажется, что туда уже вряд ли кто заглянет, так что повторюсь:
есть какое-нибудь ограничение на количество параметров в запросе "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-29 13:35) [1]

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


 
Digitman ©   (2005-12-29 13:54) [2]

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


 
pavel_guzhanov ©   (2005-12-29 14:15) [3]

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


 
Digitman ©   (2005-12-29 14:20) [4]


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


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

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


 
Johnmen ©   (2005-12-29 14:24) [5]

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

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


 
pavel_guzhanov ©   (2005-12-29 14:28) [6]


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



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


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

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


 
Johnmen ©   (2005-12-29 14:33) [8]

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


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


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


 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:44) [10]

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


 
pavel_guzhanov ©   (2005-12-29 14:50) [11]


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

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


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

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


 
pavel_guzhanov ©   (2005-12-29 15:02) [13]

Сделал так перед присвоение значений параметрам:
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 15:12) [14]

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


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

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


 
pavel_guzhanov ©   (2005-12-30 09:27) [16]

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


 
Johnmen ©   (2005-12-30 09:43) [17]

>Наплевал на все, и стал использовать 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 15:36) [18]

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


 
sniknik ©   (2005-12-30 15:46) [19]

> что запрос имеет более 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 16:25) [20]

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



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.028 c
2-1135430288
аматор
2005-12-24 16:18
2006.01.22
работа с FileStream


2-1136353843
konrads
2006-01-04 08:50
2006.01.22
TQuery


14-1135613840
Pazitron_Brain
2005-12-26 19:17
2006.01.22
Сон


9-1123591873
Monsteria
2005-08-09 16:51
2006.01.22
Индекатор загрузки


2-1136274898
g.town
2006-01-03 10:54
2006.01.22
BDE