С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 07.04.2022
Сообщений: 12

Запрос для подсчета строк в delphi Через query

15.05.2022, 09:08. Показов 984. Ответов 17

Студворк — интернет-сервис помощи студентам
Здравствуйте! Делай генератор отчетов на delphi 7 с бд paradox. Использую BDE query. При построении запросов, некоторые из них ведут себя странно. Что может быть не так?
Delphi
1
2
3
4
5
6
7
8
9
10
Query1.Active:=false;
Query1.SQL.Clear;
Query1.SQL.Add('Select * from Test18');
Query1.SQL.Add('Where (R08_1 = '''+inttostr(1050)+''' or (R08_1 = '''+inttostr(1110)+''' and R08_2 = '''+inttostr(4)+''') or  (R08_1 = '''+inttostr(1310)+''' and R08_2 = '''+inttostr(4)+''') or (R08_1 = '''+inttostr(1320)+''' and R08_2 = '''+inttostr(4)+'''))');
Query1.SQL.Add('and R06_1 = '''+inttostr(100)+'''');
Query1.SQL.Add('and (R27_1 between '''+Date22+''' and '''+Date33+''')');
Query1.SQL.Add('and R05_2 > R07_1_2 - 10');
Query1.Active:=true;
n:=Query1.RecordCount;
XlApp.Range['J11']:=n;
По отдельности все работает отлично. числа перевожу в строку потому что в paradox почему-то эти поля имеют текстовое значение. Помогите!

Добавлено через 5 минут
Сам запрос звучит так, если R08_1 = 1050 или (R08_1 =(1110,1320,1310), где R08_2 = 4) и R06_1=100 и Date22>=R27_1<=Date33 и R05_2(дата) > R07_1_2(дата) - 10 дней
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.05.2022, 09:08
Ответы с готовыми решениями:

Delphi, Запрос SQL в QUERY, БД
Скачала исходник программы с таблицей в 2 столбца, с возможностью заполнения строк. Данные таблицы сортируются по дате при нажатии кнопок...

Запрос через ADO Query
Не получается добавлять данные в запрос. Ситуация следующая Есть 2 таблицы кафедра Преподаватель ...

Запрос Power Query через API
Здравствуйте! Работаю проектировщиком и появилась необходимость мониторить складские остатки поставщиков (Конкретно КЭАЗ и EKF). Это можно...

17
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
16.05.2022, 11:43
Цитата Сообщение от BlasterBomber Посмотреть сообщение
Что может быть не так?
Ужас какой
Откройте уже Database Desktop, запустите SQL Builder, постройте и обкатайте там свой запрос и только потом тяните его код. И, если мне мой склероз не изменяет, параметры уже тогда, в BDE-шном TQuery существовали.
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
16.05.2022, 13:20
BlasterBomber,
1) Зачем вы используете Paradox? Последний раз эта технология была актуальная ещё при Ельцине. Ничего хорошего вас с ней не ждёт.
2) Запрос сначала отлаживается вне Дельфи, в каком-нибудь клиенте для работы с БД или сервером. Потом уже переносится в работающем виде в код программы.
3) Для заполнения строки WHERE обычно используют параметры. Или Format(), если запрос мелкий. Делать страшную колбасу из конкатенации строк - это очень плохая практика.
4) Вы переводите числа в строку, потому что запрос - это и есть строка. К Paradox'у это не имеет отношение.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
16.05.2022, 14:01
Цитата Сообщение от Gluck99 Посмотреть сообщение
К Paradox'у это не имеет отношение.
Имеет. Текстовые данные заключаются в одинарные кавычки.

Вот только городить городушки из одинарных кавычек - такое себе удовольствие, да и промахнуться легче легкого... Раз уж не по уму параметры и Format() - есть функция QuotedStr() для этого.
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
16.05.2022, 14:33
В общем как я понял ТС надо так:
Delphi
1
2
3
4
5
Query1.SQL.Text := 'Select * from Test18 where (R08_1=''1050'' or (R08_2=''4'' and R08_1 in (''1110'',''1310'',''1320'')) and '+
         'R06_1=''100'' and R27_1 between :Date22 and :Date33 and R05_2>R07_1_2-10';
Query1.ParamByName('Date22').AsDate:= StrToDate(Edit1.Text);
Query1.ParamByName('Date33').AsDate := StrToDate(Edit2.Text);
Query1.Open;
Меня только смущает вот эта часть запроса:
SQL
1
R05_2>R07_1_2-10
По нормальному это должно быть записано так:
SQL
1
R05_2-R07_1_2>=10
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
16.05.2022, 14:34
Цитата Сообщение от D1973 Посмотреть сообщение
Имеет. Текстовые данные заключаются в одинарные кавычки.
Не имеет. Вы код авторский посмотрите, что он делает. Он берет число (не переменную) и напрямую переводит его в строку.
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
16.05.2022, 15:06
Цитата Сообщение от Gluck99 Посмотреть сообщение
Он берет число (не переменную) и напрямую переводит его в строку
А, Вы об этом. Ну, так-то, оно конечно... На общем фоне даже внимания не обратил
0
AxBxC=X
 Аватар для harrybook
155 / 135 / 58
Регистрация: 27.04.2016
Сообщений: 549
16.05.2022, 15:37
Если это не учебная программа, то от Paradox/BDE лучше отказаться, пока не поздно. Фунционально PX вполне работоспособен и документация чудесная, но в реальности всё не совсем так. Если мне память не изменяет, то после некоторого эксплуатационного периода могут возникнуть проблемы с индексами и т.д. Так что лучше отказаться. В пользу FireBird, например.
0
0 / 0 / 0
Регистрация: 07.04.2022
Сообщений: 12
16.05.2022, 20:40  [ТС]
Цитата Сообщение от Gluck99 Посмотреть сообщение
1) Зачем вы используете Paradox? Последний раз эта технология была актуальная ещё при Ельцине. Ничего хорошего вас с ней не ждёт.
2) Запрос сначала отлаживается вне Дельфи, в каком-нибудь клиенте для работы с БД или сервером. Потом уже переносится в работающем виде в код программы.
3) Для заполнения строки WHERE обычно используют параметры. Или Format(), если запрос мелкий. Делать страшную колбасу из конкатенации строк - это очень плохая практика.
4) Вы переводите числа в строку, потому что запрос - это и есть строка. К Paradox'у это не имеет отношение.
1) К сожалению, парадокс это наша основная субд, поэтому приходится подстраиваться.
2) Такой возможности у меня нет, а было бы удобно
3) Учту. Спасибо!
4) Тип поля в бд для числовых данных во всей таблице стоит текстовый)

Добавлено через 1 минуту
Цитата Сообщение от harrybook Посмотреть сообщение
Если это не учебная программа, то от Paradox/BDE лучше отказаться, пока не поздно. Фунционально PX вполне работоспособен и документация чудесная, но в реальности всё не совсем так. Если мне память не изменяет, то после некоторого эксплуатационного периода могут возникнуть проблемы с индексами и т.д. Так что лучше отказаться. В пользу FireBird, например.
У нас на работе совсем не хотят уходить от парадокса, поэтому адаптируюсь
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
16.05.2022, 20:49
Лучшее враг хорошего. Если работает, то не трогай. Эти две народные мудрости для ПО как нельзя лучше подходят.
Сколько раз видел, как из лучших побуждений - переход на что-то новое, гробилось хорошо работающее старое, не сосчитать. Я сам несколько раз на грабли наступал, когда вроде все проверил, все предусмотрел, даже в тестовом режиме не одну неделю эксплуатировал, а как только перевел всех на это новое ПО, тут же и получил несовместимость и грабли со всего размаха.
0
AxBxC=X
 Аватар для harrybook
155 / 135 / 58
Регистрация: 27.04.2016
Сообщений: 549
17.05.2022, 00:38
У нас на работе совсем не хотят уходить от парадокса, поэтому адаптируюсь
А им-то какая разница, или там все BDE D7 программисты?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
17.05.2022, 00:39
Цитата Сообщение от harrybook Посмотреть сообщение
Если мне память не изменяет, то после некоторого эксплуатационного периода могут возникнуть проблемы с индексами
В подавляющем большинстве случаев это не проблемы. И легко решаются пересозданием файла индексов без прекращения работы приложения и без участия пользователя.
Других проблем до сих пор не встречал.
0
AxBxC=X
 Аватар для harrybook
155 / 135 / 58
Регистрация: 27.04.2016
Сообщений: 549
17.05.2022, 00:51
northener
Сейчас и не вспомню, слишком много времени прошло.
Дело было в ЖКХ, комп был под Win 98 или Me.
з.ы.
По закону подлости, мне стабильно попадается то самое меньшинство.
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
17.05.2022, 00:58
Цитата Сообщение от BlasterBomber Посмотреть сообщение
Такой возможности у меня нет, а было бы удобно
Почему нет? Может вы просто не знаете как это сделать?
Database Desktop еще живет и его можно найти во всемирной помойке под именем DBD32.EXE Вот SQL Builder рекомендовать не могу. Не люблю я его исторически.

Добавлено через 5 минут
Цитата Сообщение от harrybook Посмотреть сообщение
По закону подлости, мне стабильно попадается то самое меньшинство.
Подозреваю что это всё-таки было большинство, но вы не знали что и как делать. Ибо в большинстве случаев это DBIERR_INDEXOUTOFDATE. Это действительно незалеченная болячка IDAPI. Но это пустяк.
А меньшинство я встречал только в неординарных случаях типа сложных аварий с электропитанием.
0
AxBxC=X
 Аватар для harrybook
155 / 135 / 58
Регистрация: 27.04.2016
Сообщений: 549
17.05.2022, 01:11
northener
У меня лично с PX проблем не было вообще никогда, но ЖКХ - это отдельная страна.
А с электропитанием у нас тогда проблемы были повсеместно, без ибп вообще ничего делать было нельзя.
0
17.05.2022, 01:19

Не по теме:

Цитата Сообщение от harrybook Посмотреть сообщение
А с электропитанием у нас тогда проблемы были повсеместно
Но тогда "неча пенять" на Paradox/BDE.
Много раз сталкивался (не с ЖКХ, но какая разница) когда ИБП присутствовал, но не был включен. Присутствовал, но аккумуляторы были дохлые и т.д. и т.п.

0
17.05.2022, 01:29

Не по теме:

northener
От сильных скачков ИБП не спасает.

0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
17.05.2022, 01:36

Не по теме:

harrybook, давай закончим оффтопить, пока нас не поставили в угол

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.05.2022, 01:36
Помогаю со студенческими работами здесь

Запрос на выборку и подсчета количества строк
mysql_query(&quot;SELECT * FROM таблица WHERE условие&quot;,$db); Всего в таблице &quot;таблица&quot; 100 строк По условию &quot;WHERE условие&quot; 50...

SQL запрос в Query для соединения двух таблиц для Qreport
Время поджимает. Некогда думать самому. Есть две таблицы парадокс. в первой есть поле код_товара и название_товара. во второй поле...

Как составить запрос Query для Room по такому заданию?
У меня есть класс Garment c такими полями. @Entity(tableName = GarmentTable.NAME) public class Garment { ...

Как через Query в Delphi записать в таблицу текст c такими кавычками " "(двойными)?
Как через Query в Delphi записать в таблицу текст c такими кавычками &quot; &quot;(двойными)? Мне нужно в таблицу MySQL записать html-код, в котором...

События (Events) для subform, имеющей источником запрос (SourceObject=Query), не назначаются
Здравствуйте! Пытаю форму с сабформой, имеющей в качестве источника запрос (me.subform1.SourceObject=&quot;Запрос.Имя_запроса&quot;) ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru