Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизОграничено ли количество параметров в запросе? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c