88 / 84 / 43
Регистрация: 02.05.2015
Сообщений: 766
1

Ошибка о том, что параметр не найден: qry_EveryDay: Parameter 'param1' not found

09.12.2015, 05:07. Показов 2457. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
вот сдал сессию и вернулся к проекту...
поскольку на новый вопрос моём прошлом топике никто не ответил, я создаю новый...
Построил я запрос с параметрами но при выполнение запроса вылезает ошибка о том что параметр не найден:
qry_EveryDay: Parameter 'param1' not found.
Delphi
1
2
3
4
  qry_EveryDay.SQL.Text:='SELECT TodayDate,Name,Price,QuantityBuy,Cost,ClientData FROM EveryDay WHERE TodayDate>='':param1'' AND TodayDate<='':param2''';
  qry_EveryDay.Parameters.ParamByName('param1').Value:=dtp1.Date;
  qry_EveryDay.Parameters.ParamByName('param2').Value:=dtp2.Date;
  qry_EveryDay.Active:=True;
сразу спрошу правильно ли условие отбора? или же оно иначе записывается? надо отобрать записи в период от..до
собственно дату получаю через TDateTimePicker..
Да и не знаю как правильно, надо ли брать дату в запросе в кавычки' пробовал и так и так, но склоняюсь к тому что надо..


Ну и хотелось бы спросить можно ли избавиться от костыля в виде цикла тут:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//{
          qry_now.DisableControls;
          qry_now.First;
          while not qry_now.Eof do
            begin
              qry_tweety.Edit;
              qry_tweety.SQL.Text:='UPDATE Tweety SET Quantity=Quantity-:quantity WHERE (Name=:name)';
              qry_tweety.Parameters.ParamByName('name').Value:=qry_now.FieldByName('Name').AsString;
              qry_tweety.Parameters.ParamByName('quantity').Value:=qry_now.FieldByName('QuantityBuy').AsFloat;
              qry_now.Next;
              with qry_tweety do
                begin
                  ExecSQL;
                  SQL.Text:='SELECT Name,Price,Quantity,Packing,id,PriceBuy,Code,Manufacturer,Art FROM Tweety';
                  Active:=True;
                end;
              ColWidthSet;
              CollOff;
            end;
          qry_now.EnableControls;  //}
Надо вычитать из поля записи одной таблицы поле записи другой таблицы при условии совпадения полей имени

Скажем запись первой таблицы
ИМЯ,ЦЕНА,КОЛИЧЕСТВО_НА_СКЛАДЕ
гвоздь,30,1000

А второй таблицы
ИМЯ,ЦЕНА,КОЛИЧЕСТВО_ПОКУПКА
гвоздь,30,200

и мне надо выполнять операцию 1000-200 и запоминать это в кол-во_на_складе
собственно всё реализовано, но можно ли это сделать исключительно SQL'ем?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2015, 05:07
Ответы с готовыми решениями:

Ошибка AdoQuery1: Parameter 'param1' not found
вот код мне нужна добавлять дание в таблицу. void __fastcall TForm6::Button1Click(TObject *Sender)...

Oracle: ошибка о том, что параметр не инициализирован
При компиляции следующего кода получаю ошибку о том, что параметр не инициализирован(:s_code): ...

Ошибка 'ADOQuery1: Parameter 'id_sotr_' not found'
Всем привет! Делаю запрос через adoquery, который должен выводить записи из таблицы в dbgrid исходя...

Ошибка: 'FDQuery: Parameter 'edit.Text' not found'
Мир всем и привет ! помогите пожалуйста раньше я сделал через ADOQuery не было проблем, и в чем...

6
15 / 15 / 14
Регистрация: 10.06.2015
Сообщений: 165
09.12.2015, 09:13 2
Лучший ответ Сообщение было отмечено CheshireesCat как решение

Решение

По первой части:
Delphi
1
2
3
4
5
6
FD.active:= false;
  FD.SQL.Clear;
  FD.SQL.Add('Select TodayDate,Name,Price,QuantityBuy,Cost,ClientData From EveryDay where (TodayDate BETWEEN :param1 AND :param2) ');
  FD.Params.ParamByName('param1').Value := dtp1.Date;
  FD.Params.ParamByName('param2').Value := dtp2.Date;
  FD.Open;
1
88 / 84 / 43
Регистрация: 02.05.2015
Сообщений: 766
09.12.2015, 17:29  [ТС] 3
Tot999, но теперь ошибка: Несоответствие типов данных в выражении условия отбора.
0
15 / 15 / 14
Регистрация: 10.06.2015
Сообщений: 165
09.12.2015, 18:06 4
CheshireesCat, необходимо проверить какой тип поля TodayDate в базе, также проверить формат TDateTimePicker попробовать переключить dfshort/dflong;
0
88 / 84 / 43
Регистрация: 02.05.2015
Сообщений: 766
09.12.2015, 18:23  [ТС] 5
Tot999, Так ну ошибку я устранил, но в дбгрид мне ничего не выводит...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var
  dat1,dat2:string;
begin
  dat1:=DateToStr(dtp1.Date);
  dat2:=DateToStr(dtp2.Date);
//    Insert('#',dat1,0);
//    Insert('#',dat2,0);
//    Insert('#',dat1,length(dat1)+1);
//    Insert('#',dat2,length(dat1)+1);
 
    Delete(dat1,3,1);
    Insert('/',dat1,3);
    Delete(dat2,3,1);
    Insert('/',dat2,3);
    Delete(dat1,6,1);
    Insert('/',dat1,6);
    Delete(dat2,6,1);
    Insert('/',dat2,6);
  ShowMessage(dat1+' - '+dat2);
 
  qry_EveryDay.Close;
  qry_EveryDay.SQL.Text:='SELECT TodayDate,Name,Price,QuantityBuy,Cost,ClientData FROM EveryDay WHERE (TodayDate BETWEEN :param1 AND :param2)';
//  qry_EveryDay.Parameters.ParamByName('param1').Value:=dtp1.Date;
//  qry_EveryDay.Parameters.ParamByName('param2').Value:=dtp2.Date;
  qry_EveryDay.Parameters.ParamByName('param1').Value:=dat1;
  qry_EveryDay.Parameters.ParamByName('param2').Value:=dat2;
  qry_EveryDay.Active:=True;
end;
Добавлено через 1 минуту
заменяем точки в дате на /

Добавлено через 8 минут
в целом с этой проблемой кажется тоже разобрался..
в запрос надо составлять
месяц/день/год а TDateTimePicker даёт день/месяц/год
0
15 / 15 / 14
Регистрация: 10.06.2015
Сообщений: 165
09.12.2015, 18:25 6
Если вкратце, то нужно кинуть на форму datasource, в нем указать Dataset на qry_EveryDay, а далее у ДБГрида указать datasource на этот datasource; Если все это создано динамически, то в коде настроить.

Если в дезайн-тайме то не академический смысл примерно такой: у вас есть какой-то connection, нему обращается query, который выводит данные после выполнения команды в datasource, а уже данные из datasource отображает dbgrid; они должны быть друг на друга настроены.
1
88 / 84 / 43
Регистрация: 02.05.2015
Сообщений: 766
09.12.2015, 18:37  [ТС] 7
да с подключением никаких проблем))
там в первом посте есть ссылка на прошлый мой топик..
в общем,, базы подключать умею)

Добавлено через 10 минут
Нет, ты был прав, таки и правда сфейлил и не связал дбгрид с датасорс..
Спасибо за помощь, Tot999
0
09.12.2015, 18:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.12.2015, 18:37
Помогаю со студенческими работами здесь

Ошибка 76 Путь не найден (Path not found)
Есть: файл с .pptm макросом, в котором созданы UserForm1 и Module2. Код Module2: Sub...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru