Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232

Требуется лишний параметр в SQL-запросе

11.12.2024, 22:22. Показов 3367. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    with DataModule1.FDQueryDSDid do
    begin
      Close;
      SQL.Clear;
      SQL.add('select dsdid_suma.rik, dsdid_suma.mis, dsdid_suma.suma, ' +
        'dsdid_suma.suma_blok, dsdid.kodinval, dsdid.kod_gr_inval, dsdid.rnokpp, dsdid.inval, dsdid.pib');
      SQL.add('from dsdid_suma left join dsdid');
      SQL.add('on dsdid.id = dsdid_suma.id_main');
      SQL.add('WHERE (dsdid_suma.rik = :p1) AND (dsdid_suma.mis = :p2)');
        SQL.add('order by dsdid.inval');
      Params.ParamByName('p1').AsString := ufDSDI_Zag.cbRik.Text;  //компонент ComboBox
      Params.ParamByName('p2').AsString := ufDSDI_Zag.cbMis.Text;  //компонент ComboBox
      Open;
    end;
ругаеться, пишет что мало параметров, ожидает 3

откуда? если я задал только 2
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2024, 22:22
Ответы с готовыми решениями:

Как параметр в SQL-запросе можно использовать в строковом типе данных?
Добрый день. Подскажите, как параметр в SQL-запросе можно использовать в строковом типе данных? Я имею ввиду что-то такое: string...

Как передать параметр установленный в запросе SQL Lab в фильтр dashbord в SuperSet
Добрый день, господа! Написал скрипт в SQL Lab, SuperSet, указал параметр. Далее создал Chart и там тоже установил параметр, все...

Ошибка в SQL-запросе: "Неправильно определен параметр"
Всем привет) Написал вот такую страшную штуку. SQL.Add('if not exists (select * from Equipment '); SQL.Add('where...

39
130 / 109 / 22
Регистрация: 23.05.2015
Сообщений: 726
15.12.2024, 16:57
Студворк — интернет-сервис помощи студентам
MaryoLunga83, Получается годи месяц были объявленны как Integer в базе.
Этого мы конечно не могли знать.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
15.12.2024, 17:19
если бы сразу показал текст запроса который по факту выполняет субд, а не тот текст который придумал как в #11, то и сам бы увидел что значения параметров закавычены, что и не понравилось
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,684
Записей в блоге: 21
16.12.2024, 00:04
для удобства если кто не знал
в новых версиях для записи этих самых SQL раздолье!
Delphi
1
2
3
4
query.sql.text := '''
Select * from table1 t1
join table2 t2 on t1.f1 = t2.f1
where not exists( select 1 from table3 where f4 = t2.f2 )''';
никаких плюсиков
и ошибки видны
1
130 / 109 / 22
Регистрация: 23.05.2015
Сообщений: 726
16.12.2024, 11:20
krapotkin, Почему 3 апострофа?
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
16.12.2024, 11:49
SeGun, в новых версиях студии так можно ввести в переменную многострочный текст. То есть эти фрагменты кода:
Delphi
1
2
3
4
5
var a: String := '''
asasda
sasas
dada
''';
и
Delphi
1
var a: String := 'asasda' + #13#10 + 'sasas' + #13#10 + 'dada';
они равнозначны, но, ИМХО, первый смотрится аккуратнее и читается легче, хотя и больше места занимает.
см. Long and Multiline String Literals
1
130 / 109 / 22
Регистрация: 23.05.2015
Сообщений: 726
16.12.2024, 12:22
Понятно. Спасибо.
0
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
16.12.2024, 19:35  [ТС]
продолжение к даной теме, еще один запрос
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  with DataModule1.FDQueryDSDidZagSuma do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT dsdid.inval, ');
    SQL.Add('SUM(DSDid_Suma.suma) AS total_suma, ');
    SQL.Add('SUM(DSDid_Suma.suma_blok) AS total_suma_blok ');
    SQL.Add('FROM dsdid_suma ');
    SQL.Add('LEFT JOIN dsdid ON dsdid.id = dsdid_suma.id_main ');
    SQL.Add('WHERE dsdid_suma.rik = :pRik AND dsdid_suma.mis = :pMis ');
    SQL.Add('GROUP BY dsdid.inval ');
    SQL.Add('ORDER BY dsdid.inval;');
 
    Params.ParamByName('pRik').AsInteger := StrToInt(ufDSDI_Zag.cbRik.Text);
    Params.ParamByName('pMis').AsInteger := StrToInt(ufDSDI_Zag.cbMis.Text);
    Open;
  end;
все работает, но есть одно но

Название: Screenshot_4.jpg
Просмотров: 158

Размер: 20.9 Кб

как с делаеть 2 знака после запятой
0
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
16.12.2024, 19:37  [ТС]


я понимаю что не в структуре таблицы дело, но как на програмном уровне округлить до 2-х знаков после запятой - ничего не получаеться
0
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
16.12.2024, 19:41  [ТС]
не пойму, каким макаром в Delphi 2+2=3,99911 - к примеру (почему так??)
0
25 / 0 / 0
Регистрация: 11.12.2019
Сообщений: 232
16.12.2024, 19:52  [ТС]
пока я вам написал, уже и решение нашлось
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  with DataModule1.FDQueryDSDidZagSuma do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT dsdid.inval, ');
    SQL.Add('ROUND(SUM(DSDid_Suma.suma), 2) AS total_suma, ');
    // SQL.Add('SUM(DSDid_Suma.suma) AS total_suma, ');
    SQL.Add('ROUND(SUM(DSDid_Suma.suma_blok), 2) AS total_suma_blok ');
    // SQL.Add('SUM(DSDid_Suma.suma_blok) AS total_suma_blok ');
    SQL.Add('FROM dsdid_suma ');
    SQL.Add('LEFT JOIN dsdid ON dsdid.id = dsdid_suma.id_main ');
    SQL.Add('WHERE dsdid_suma.rik = :pRik AND dsdid_suma.mis = :pMis ');
    SQL.Add('GROUP BY dsdid.inval ');
    SQL.Add('ORDER BY dsdid.inval;');
 
    Params.ParamByName('pRik').AsInteger := StrToInt(ufDSDI_Zag.cbRik.Text);
    Params.ParamByName('pMis').AsInteger := StrToInt(ufDSDI_Zag.cbMis.Text);
    Open;
  end;
Название: Screenshot_6.jpg
Просмотров: 147

Размер: 15.4 Кб

то что я ожидал...
и почему всегда так, мучишь, мучишь код - ноч переспишь и вуаля
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
17.12.2024, 04:37
Цитата Сообщение от MaryoLunga83 Посмотреть сообщение
каким макаром в Delphi 2+2=3,99911
не 2 + 2, а 2.0 + 2.0, и это не только в Delphi, это общекомпьютерный прикол работы с действительными числами.
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
18.12.2024, 01:44
Цитата Сообщение от D1973 Посмотреть сообщение
это общекомпьютерный прикол работы с действительными числами.
Который при использовании современных типов вещественных переменных отсутствует. Точнее не виден невооруженным взглядом.
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
18.12.2024, 06:05
Цитата Сообщение от northener Посмотреть сообщение
при использовании современных типов вещественных переменных
Ну, дык, некоторые до сих пор тип real эксгумируют...
0
Модератор
10477 / 5772 / 3412
Регистрация: 17.08.2012
Сообщений: 17,532
20.12.2024, 07:13
MaryoLunga83, D1973, northener, не фантазируйте.

Если при переводе в двоичную форму мантисса числа помещается в количество разрядов, отводимых под мантиссу в машинном представлении числа, то число представляется точно. Для того, чтобы число без дробной части (скажем так, "целое") было представлено неточно, оно должно быть ну очень большим по модулю, в случае (современного) real модуль числа должен быть больше 254-1, но и в этом случае число может быть представлено точно, если единицы в двоичном представлении числа присутствуют только в 54 старших разрядах.

Если результат какой-либо операции над одним или двумя числами, представленными точно, помещается в количество разрядов, отводимых под мантиссу в машинном представлении числа, то и результат будет представлен точно.

Так что, никак не может быть 2.0+2.0=3.9999..., обязательно будет 2.0+2.0=4.0.

Или, например, корень квадратный из полного квадрата также будет представлен точно. Корень из 4.0 обязательно будет 2.0, а не, к примеру, 2.0000000001 или 1.9999999999.

D1973, всё вышеперечисленое верно в том числе и для древнего шестибайтового real, который сегодня принято называть real48 или real*48. Вы этот формат имели ввиду в сообщении #33?
1
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
20.12.2024, 07:22
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Вы этот формат имели ввиду
именно.
А что касается 2.0+2.0=4.0 - естественно, это пример утрированный, да и ТС, судя по всему, привел его "от фонаря".
0
Модератор
10477 / 5772 / 3412
Регистрация: 17.08.2012
Сообщений: 17,532
20.12.2024, 07:36
Эх... Вечно я со своим буквоедством в какие-то неловкие ситуации попадаю...
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
20.12.2024, 10:47
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
в какие-то неловкие ситуации попадаю
Да ну. Что уж неловкого в том, что Вы подноготную действительных чисел объяснили?
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
21.12.2024, 01:55
Цитата Сообщение от D1973 Посмотреть сообщение
Да ну. Что уж неловкого в том, что Вы подноготную действительных чисел объяснили?
Причем буквально в двух словах! В отличие от Антона Г. который на эту тему написал целую статью, и даже целую книгу!
0
32 / 26 / 7
Регистрация: 22.02.2019
Сообщений: 111
21.12.2024, 09:36
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Эх... Вечно я со своим буквоедством в какие-то неловкие ситуации попадаю...
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
оно должно быть ну очень большим по модулю, в случае (современного) real модуль числа должен быть больше 254-1
Имхо 254 многовато будет.
0
Модератор
10477 / 5772 / 3412
Регистрация: 17.08.2012
Сообщений: 17,532
21.12.2024, 10:23
Цитата Сообщение от avk959 Посмотреть сообщение
многовато будет
Да, на разряд ошибся. Правильно будет 253-1.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2024, 10:23

Лишний параметр при вызове функции
Помогите пожалуйста. Пишу чат. При написании клиентского приложения возникла вот такая ошибка: Chat_Client.cpp(101): E2227 Extra...

Лишний текст в запросе на ввод
После выведения в консоль всех надписей, в конце надписи выводится еще и 0 #include <iostream> using namespace std; ...

Как в SQL-запросе запросе функции (СУБД PostgreSQL) в качестве параметра передать значение textBox?
Доброго времени суток форумчане)) В СУБД PostgreSQL есть таблица Location CREATE TABLE public."Location" ( ...

Параметр в запросе
Здравствуйте. не могу понять что не так. Выдаёт ошибку "ошибка в синтаксисе INSERT INTO" Original->ADOQuery1->Close();...

Параметр в запросе
Здравствуйте! Не могу в запросе сделать такое условие: выводить все значения, но не более введённого. Например я ввожу оценку 3 и мне...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru