|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибка в запросе...
Код:
procedure TForm5.btn1Click(Sender: TObject); begin qry1.Active:=False; qry1.SQL.Text:='INSERT INTO [Решение для первой смены] ( количество_диванов, Название_дивана, Наименование_товара, расход_товара_на_каркас, расход_товара_на_сборку, расход_за_день, смена )' + 'SELECT :param2 AS количество_диванов, [Название дивана].Название_дивана, [Наименование товара].Наименование_товара, БД.расход_товара_на_каркас, БД.расход_товара_на_сборку, ' + '(([расход_товара_на_каркас]+[расход_товара_на_сборку])* количество_диванов ) AS расход_за_день, :param3 AS Смена FROM Смена, [Наименование товара] INNER JOIN ([Название дивана]' + ' INNER JOIN БД ON [Название дивана].Название_дивана = БД.Название_дивана) ON [Наименование товара].Наименование_товара = БД.Наименование_товара GROUP BY :param2, [Название дивана].Название_дивана,' + '[Наименование товара].Наименование_товара, БД.расход_товара_на_каркас, БД.расход_товара_на_сборку, [Смена] HAVING ((([Название дивана].Название_дивана) Like :param1));'; qry1.Parameters.ParamByName('param1').Value:=dblkcbb1.Text; qry1.Parameters.ParamByName('param2').Value.StrToInt:=Edt1.Text; qry1.Parameters.ParamByName('param3').Value:=dblkcbb2.Text; qry1.ExecSQL; end; И выделяет вот эту строку... Код:
qry1.Parameters.ParamByName('param2').Value.strtoint:=Edt1.Text; |
#2
|
||||
|
||||
Value это свойство типа Variant. если бы он содержал интерфейс, то можно было бы присвоить его свойству strtoint какое-то значение. но в данном случае это скорее всего тип Integer или String. а StrToInt и IntToStr это как раз функции, но не факт, что они тут пригодятся. сам запрос я не смотрел, но что-то подсказывает что там тоже не все гладко.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Код:
qry1.Parameters.ParamByName('param2').value.Integer:=Edt1.Text; |
#4
|
||||
|
||||
Цитата:
Код:
.Parameters.ParamByName('param2').Value:=Edit1.Text; Пишу программы за еду. __________________ |
#5
|
|||
|
|||
а так пишет "неверно определен обьект Parametr"
|
#6
|
||||
|
||||
Цитата:
Код:
qry1.Parameters.ParamByName('param2').DataType:= ftString; qry1.Parameters.ParamByName('param2').Value:=Edt1.Text; Google в помощь |
#7
|
|||
|
|||
Таже ошибка. Только строку не выделяет... Может это пишет про другой параметр?
|
#8
|
|||
|
|||
Попробовал так же сделать для всех параметров... И ничего.. Ошибка таже...
|
#9
|
||||
|
||||
Насколько я помню, параметры можно передавать для формирования ограничения, но не для имен полей запроса. В этом случае вам лучше формировать текст запроса иначе:
Код:
qry1.SQL.Text:=Format('INSERT INTO [Решение для первой смены] ( количество_диванов, Название_дивана, Наименование_товара, расход_товара_на_каркас, расход_товара_на_сборку, расход_за_день, смена )' + 'SELECT %s AS количество_диванов, [Название дивана].Название_дивана, [Наименование товара].Наименование_товара, БД.расход_товара_на_каркас, БД.расход_товара_на_сборку, ' + '(([расход_товара_на_каркас]+[расход_товара_на_сборку])* количество_диванов ) AS расход_за_день, %s AS Смена FROM Смена, [Наименование товара] INNER JOIN ([Название дивана]' + ' INNER JOIN БД ON [Название дивана].Название_дивана = БД.Название_дивана) ON [Наименование товара].Наименование_товара = БД.Наименование_товара GROUP BY %s, [Название дивана].Название_дивана,' + '[Наименование товара].Наименование_товара, БД.расход_товара_на_каркас, БД.расход_товара_на_сборку, [Смена] HAVING ((([Название дивана].Название_дивана) Like ''%s''));',[Edt1.Text,dblkcbb2.Text,Edt1.Text,dblkcbb1.Text]); Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
dimon4iknik (07.05.2012)
|
#10
|
||||
|
||||
Цитата:
Цитата:
Пишу программы за еду. __________________ |
Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
dimon4iknik (07.05.2012)
|
#11
|
|||
|
|||
Ошибка такова
(([расход_товара_на_каркас]+[расход_товара_на_сборку])* количество_диванов ) http://imagepost.ru/?v=456_13.png Если я убераю эту строку то запрос срабатывает. Но от этого подсчета зависит другой запрос.. Последний раз редактировалось dimon4iknik, 07.05.2012 в 19:45. |
#12
|
||||
|
||||
Есть очень простое правило формирования БД. Если значение можно расчитать, то хранить результат расчета не надо. Поэтому расчет чего-либо в контексте вставки в БД - это грубая ошибка проектирования.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
dimon4iknik (07.05.2012)
|
#13
|
|||
|
|||
Цитата:
|
#14
|
||||
|
||||
Цитата:
Google в помощь |
Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
dimon4iknik (07.05.2012)
|
#15
|
|||
|
|||
Спасибо всем огромное) всё получилось. Я просто эту часть запроса перенёс в другой запрос... Так даже логичнее получилось)
|