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

Превратить результат запроса в переменную

09.06.2014, 20:00. Показов 5092. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу число, выданное запросом, выгнать в Memo, для этого преобразую в переменную. Но что-то не так в запросе, видимо, т.к. вылетает сообщение "field 's1' not found". Самое интересное, что раньше тот же код вроде работал. Не пойму, что я изменил.
Delphi
1
2
ADOQuery2.SQL.Add('SELECT Sum(Сумма) AS s1 FROM '+ComboBox5.Text+' WHERE Дата BETWEEN '+date4+' AND '+date5);
s1:=ADOQuery2.FieldByName('s1').AsInteger;
Дальше делаю так:
Delphi
1
Memo1.Lines.Add('Сумма расходов за месяц: '+IntToStr(s1)+' руб.'+#13+#10);
Здесь, кстати, новая проблема: почему-то следующие Add стирают предыдущие (т.е. больше одной строки не могу туда записать).
Что тут можно поправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2014, 20:00
Ответы с готовыми решениями:

Результат запроса SQL в переменную
Помогите пожалуйста Есть таблица в access (Sloti) в ней несколько столбцов, один из них числительные (ObiomSlota), другой столбец с...

Результат запроса в переменную
Здравствуйте, Есть запрос на выборку. Он вернет одну строчку. Как его результат записать в переменную? Выскакивает ошибка Type...

Результат SQL запроса в переменную
Есть переменная которая выводиться в файле который инклюдиться. Нужно в переменную $category засунуть результат с SQL запроса. Сам...

6
Эксперт Pascal/Delphi
 Аватар для droider
4888 / 2822 / 865
Регистрация: 04.10.2012
Сообщений: 10,264
09.06.2014, 20:42
Цитата Сообщение от Aleks_006 Посмотреть сообщение
Не пойму, что я изменил
удалили поле "s1"
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
09.06.2014, 20:50
Цитата Сообщение от Aleks_006 Посмотреть сообщение
Delphi
1
2
ADOQuery2.SQL.Add('SELECT Sum(Сумма) AS s1 FROM '+ComboBox5.Text+' WHERE Дата BETWEEN '+date4+' AND '+date5);
s1:=ADOQuery2.FieldByName('s1').AsInteger;
что вы код урывками приводите.. ;(
перед ADOQuery2.SQL.Add
есть код
Delphi
1
2
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
????

а после ADOQuery2.SQL.Add
Delphi
1
ADOQuery2.Open;
делается?!

если да - тогда проверьте, сколько записей в таблице:
Delphi
1
2
if ADOQuery2.isEmpty then Memo1.Lines.Add('Нет записей за период!')
else ....

ещё вариант. в DesingTime по ADOQuery2 двойной щелчок. Если там есть какие то вытянутые поля - удалите все поля из ADOQuery2...



Цитата Сообщение от Aleks_006 Посмотреть сообщение
Здесь, кстати, новая проблема: почему-то следующие Add стирают предыдущие (т.е. больше одной строки не могу туда записать).
ищите, похоже в начале процедуры Вы делаете Memo1.Lines.Clear; - что и очищает содержимое мемо1
0
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 98
09.06.2014, 22:58  [ТС]
Цитата Сообщение от Sergio Leone Посмотреть сообщение
делается?!
Да.
Цитата Сообщение от Sergio Leone Посмотреть сообщение
Если там есть какие то вытянутые поля - удалите все поля из ADOQuery2
Нету.
Цитата Сообщение от Sergio Leone Посмотреть сообщение
похоже в начале процедуры Вы делаете Memo1.Lines.Clear
Ничего такого, с ходу юзаю Add.
Цитата Сообщение от Sergio Leone Посмотреть сообщение
проверьте, сколько записей в таблице
Не среагировало; результат s3 выдаёт нормальным числом, только где-то за минус миллион; s2 выкидавает в DBGrid, т.е. посчитало в формуле s1 как какую-то абракадабру.
Весь фрагмент:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT Sum(Сумма) AS s1 FROM Расход WHERE Дата BETWEEN '+date4+' AND '+date5);
s1:=ADOQuery2.FieldByName('s1').AsInteger;
ADOQuery2.Open;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT Sum(Сумма) AS s2 FROM Доход WHERE Дата BETWEEN '+date4+' AND '+date5);
ADOQuery2.Open;
s2:=ADOQuery2.FieldByName('s2').AsInteger;
s3:=s2-s1;
if ADOQuery2.isEmpty then Memo1.Lines.Add('Нет записей за период!');
Memo1.Lines.Add('Сумма расходов за месяц: '+IntToStr(s1)+' руб.'+#13+#10);
Memo1.Lines.Add('Сумма доходов за месяц: '+IntToStr(s2)+' руб.'+#13+#10);
Memo1.Lines.Add('Остаток за месяц: '+IntToStr(s3)+' руб.');
Заметьте, сделал теперь запросы однозначно из разных таблиц, т.е. никаких конфликтов имён тоже быть не должно.

Добавлено через 2 минуты
Ух ты, неожиданно починил кое-что. Выкинул первое присваивание за пределы закрытого query, помогло. А я-то ломал голову, что я там сломал.
Теперь осталось разобраться с Memo.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 00:20
Цитата Сообщение от Aleks_006 Посмотреть сообщение
Delphi
1
2
3
4
5
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT Sum(Сумма) AS s1 FROM Расход WHERE Дата BETWEEN '+date4+' AND '+date5);
s1:=ADOQuery2.FieldByName('s1').AsInteger;
ADOQuery2.Open;


сначала надо OPEN, а потому же переменную читать!!!

Delphi
1
2
3
4
5
6
7
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('SELECT Sum(Сумма) AS s1 FROM Расход WHERE Дата BETWEEN '+date4+' AND '+date5);
 
ADOQuery2.Open; { <<<<<<<<<<<<ВОТ!!!!   }
 
s1:=ADOQuery2.FieldByName('s1').AsInteger;
ну и уберите в конце проверять пустой датасет или if ADOQuery2.isEmpty бессмыслено, Вы его уже после этого переопределяли, открывали/закрывали. Эта проверка в конце процедуры смысла не имеет.
0
0 / 0 / 0
Регистрация: 25.03.2013
Сообщений: 98
10.06.2014, 14:36  [ТС]
Спасибо, уже починил, а что с мемо можно сделать? Только последний результат выдает.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
10.06.2014, 16:43
Цитата Сообщение от Aleks_006 Посмотреть сообщение
Только последний результат выдает.
чудес не бывает.
в отладке надо проходить и смотреть.

И ещё, пройдитесь поиском по всему коду модуля, поищите упоминания Memo1
Если не поможет - дайте ваш модуль целиком код посмотреть, м.б. я что-то найду...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2014, 16:43
Помогаю со студенческими работами здесь

Записать в переменную результат запроса
Подскажите, как записать результат запроса в массив. Запрос ниже возвращает 15 записей типа текст. Как их записать в переменную? Данный...

Результат запроса записать в переменную
Подскажите выполняю запрос выборку, в результате получается строковое значение, которое необходимо записать в переменную, что предложите ...

Вывод Результат Запроса в Переменную
Для того чтобы получить результат запроса использую команду ExecuteScalar,только почему то в неё ничего не записывается,может кто то...

Результат SQL запроса в переменную
В принципе заголовок Как записать результат выборки SQL запроса в переменную, заведомо известно что результат может быть только один ...

Результат запроса select в переменную
Доброго времени суток. /* использую pl/sql для написания процедур. */ Есть таблица, в которой есть записи. Есть...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru