![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#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
|
||||
|
||||
|
Цитата:
|
| Этот пользователь сказал Спасибо Ildar-tsr за это полезное сообщение: | ||
dimon4iknik (07.05.2012)
| ||
|
#15
|
|||
|
|||
|
Спасибо всем огромное) всё получилось. Я просто эту часть запроса перенёс в другой запрос... Так даже логичнее получилось)
|