Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
RAD XE3+

Выгрузить в Excel информацию которая отображается в DBGride

05.03.2025, 01:48. Показов 6729. Ответов 58
Метки нет (Все метки)

Друзья помогите сделать отчёт и выгрузить информацию с DBGid1 в Excel по одинаковым столбцам, есть DBGrid1 в нем отображается база людей (Access) с диагнозами (Бронхит,ОРВИ и т.д), CheckBox-сом фильтрую по году заболевания, TButton-om выгружаю в Excel табличку с двумя столбцами (Диагноз и количество).
Вопрос: Как сделать чтобы в Excel выгружались не все болячки с базы а только те что показывает DBGrid1 (отфильтрованные CheckBox-сом), табличка поле диагноз и количество, а там (ОРВИ 2 человека , Бронхит 15, ну и т.д.).
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2025, 01:48
Ответы с готовыми решениями:

Как из Excel-таблицы выгрузить информацию в Edit?
Всем громкий привет. Помогите в одной проблеме Как из Excel выгрузить информацию в Edit? При этом мне нужно сделать поиск в Excel так...

Поле типа "Гиперссылка" в DBGride отображается как WIDEMEMO
Такая ситуация, подскажите, после создания базы данных в access, в которой есть поле типа "Гиперссылка", в DBGride это поле...

Создать таблицу Excel, которая содержит информацию о личной коллекции книголюба
У меня такое задание Создать таблицу, которая содержит информацию о личной коллекции книголюба. Структура таблицы: шифр книги; ...

58
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
13.03.2025, 09:22  [ТС]
это как? можно накидать образец чтоб наглядно пощупать...
0
Модератор
 Аватар для D1973
9939 / 6475 / 2459
Регистрация: 21.01.2014
Сообщений: 27,452
Записей в блоге: 3
13.03.2025, 09:38
Цитата Сообщение от esgard Посмотреть сообщение
Я бы сделал процедурно генерируемый выпадающий список
Я бы предложил TCheckListBox, чтобы можно было выбрать не один год, а несколько. А айтемы этого Бокса заполнять при старте приложения уникальными значениями поля [Год...]
Миниатюры
Выгрузить в Excel информацию которая отображается в DBGride  
1
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
14.03.2025, 01:18  [ТС]
Ответ на вчерашней вопрос про ДР, добавил в проект дату рождения.

Ну да прикольно, я же такое не смогу сделать, а можно архивчик проекта ?
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
14.03.2025, 04:27  [ТС]
Забыл приклеить архив
Вложения
Тип файла: rar школьный шельдшер.rar (3.75 Мб, 4 просмотров)
0
Модератор
 Аватар для D1973
9939 / 6475 / 2459
Регистрация: 21.01.2014
Сообщений: 27,452
Записей в блоге: 3
14.03.2025, 06:04
Цитата Сообщение от beastfrim Посмотреть сообщение
я же такое не смогу сделать
Почему? Никаких сакральных тайных знаний там нет...
Цитата Сообщение от beastfrim Посмотреть сообщение
а можно архивчик проекта
можно, но немного позже: пришла в голову другая идея, сделаю - покажу...
0
121 / 50 / 11
Регистрация: 17.11.2021
Сообщений: 255
14.03.2025, 10:19
Я попробовал сделать, но нужно дорабатывать, фильтры между собой не дружат.
Базу переделал, и весь код заново сделал, правда в семерке.
Вложения
Тип файла: 7z школьный шельдшер2.7z (757.6 Кб, 10 просмотров)
1
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,678
Записей в блоге: 21
14.03.2025, 10:31
а вот это для чего?
Delphi
1
if qry1.Fields.Fields[0].AsString<>'' then
0
121 / 50 / 11
Регистрация: 17.11.2021
Сообщений: 255
14.03.2025, 10:40
Цитата Сообщение от krapotkin Посмотреть сообщение
это для чего?
проверка на не пустой крю, можно убрать в принципе
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,678
Записей в блоге: 21
14.03.2025, 11:10
проверка на непустой запрос после открытия это
Delphi
1
if Dataset.EOF
0
1 / 1 / 0
Регистрация: 07.09.2021
Сообщений: 105
14.03.2025, 14:11
Цитата Сообщение от ura-ura Посмотреть сообщение
Я попробовал сделать, но нужно дорабатывать, фильтры между собой не дружат.
Базу переделал, и весь код заново сделал, правда в семерке.
Чтобы фильтры между собой дружили, нужно даты фильтровать не запросом а через свойство "Filter". Хотя конечно можно и через запрос.
Но хоть у вас код и причесанный, а замучался выяснять почему не отрисовывается стринггрид если нет записей удовлетворяющих условиям фильтра. Хотя проверку на непустой запрос я убрал. Все таки чужой код это чужой код.
Чтобы не дергать каждый раз отрисовку стринг грида я бы сделал отображение полей через dbgrid.
Но конечно хозяин барин. Но лично мне проще было бы доводить программу до юзабельного состояния именно через dbgrid. Оно ведь именно для adoquery и придумано.
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,678
Записей в блоге: 21
14.03.2025, 15:01
Цитата Сообщение от esgard Посмотреть сообщение
нужно даты фильтровать не запросом
пожалуйста, не нужно учить плохому, если вы не знаете как выглядит хорошее

чтобы фильтры "дружили", нужно полученный готовый итоговый запрос вывести на экран
можно в отладчике, можно сделать ShowMessage(query.SQL.Text)
скорее всего, уже на этом этапе все будет ясно
а если нет, то прислать текст SQL сюда, и вам все расскажут
0
1 / 1 / 0
Регистрация: 07.09.2021
Сообщений: 105
14.03.2025, 15:29
Цитата Сообщение от krapotkin Посмотреть сообщение
пожалуйста, не нужно учить плохому, если вы не знаете как выглядит хорошее
это касается именно фильтрации по датам или вообще применения фильтров в ADOQuery?
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,678
Записей в блоге: 21
14.03.2025, 15:49
вообще Filter с его полудокументированным синтаксисом
очень странно противопоставлять нормальному и хорошо описанному SQL запросу
поэтому да, в общем случае стоит просто делать новый запрос и переоткрывать его.

при этом я могу понять тех, у кого РЕАЛЬНО сложные условия фильтрации, которые нужно применять мгновенно на уже скачанном датасете
для них есть обработчик OnFilterRecord, где в ход идет вся мощь делфи
но таких случаев очень мало
и уж точно они не относятся к вариантам, когда база лежит прямо рядом с EXE
1
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
17.03.2025, 02:19  [ТС]
Друзья, день добрый мы все отошли от темы вопроса который был задан первоначально, я просил помощи как можно выгрузить в Excel отфильтрованную информацию которую показывает DBGrid (скриншот), у меня в проекте кнопкой выгружает всю базу а не ту которую я отфильтровал в DBGRIDе, спасибо.
Миниатюры
Выгрузить в Excel информацию которая отображается в DBGride  
0
121 / 50 / 11
Регистрация: 17.11.2021
Сообщений: 255
17.03.2025, 06:55
Я вам уже писал что вы выводите данные не из грида а из запроса, вот ваш кусок вашего кода.
Delphi
1
2
3
4
5
6
7
With ADOQuery2 do begin//Делаем наш запрос
        Close;
        SQL.Clear;
        SQL.Add('SELECT МКБ, COUNT(МКБ) as cnt FROM DBI'); тут вы выбираете все МКБ из всей базы
        SQL.Add('GROUP BY МКБ');
        Open;
    end;
делайте фильтры сразу запросом и потом можно из грида будет брать данные.
Но проще в зависимости от требуемых фильтров создавать строку запроса.
Например, следующий запрос выдаст вам какие есть МКБ и их количество по году 2025
SQL
1
SELECT МКБ, COUNT(МКБ) AS cnt FROM DBI WHERE ГодВвода='2025' GROUP BY МКБ
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
17.03.2025, 08:49  [ТС]
да не нужен мне год , я к примеру сказал что нужно мне отфильтровать по году, а если я буду брать только пол возраст к примеру или кабинет, чтоб руками мне не считать количество я вот и показываю отчет по количеству, что он мне считает всю базу, а мне не нужно чтоб он считал по всей базе...
0
1 / 1 / 0
Регистрация: 07.09.2021
Сообщений: 105
17.03.2025, 08:56
Дружище. У тебя в дбгриде отображается результаты запроса к базе AODQuery1.
Экспорт через меню "выгрузка по МКБ" у тебя осуществляется через ADOQuery2.
Если тебе надо чтобы выгружалось только МКБ и количество найденных по этому МКБ строк, то можно тогда вообще ADOQuery2 не пользоваться, а использовать ADOQuery1, но экспортировать не все записи, а только колонку с МКБ и количество строк.
Я может не совсем внятно написал, но с утра традиционно у меня голова не слишком хорошо соображает))
0
 Аватар для krapotkin
6853 / 4679 / 1465
Регистрация: 14.04.2014
Сообщений: 20,678
Записей в блоге: 21
17.03.2025, 09:19
Лучший ответ Сообщение было отмечено northener как решение

Решение

Цитата Сообщение от beastfrim Посмотреть сообщение
а если я буду брать только пол возраст
Давайте сворачивать детский сад уже?
А то без употребления специальной лексики становится некомфортно.

Если вам нужно сформировать условие по ЛЮБОМУ вашему пожеланию, ВЫ должны
1) сформировать новый запрос с нужным условием и нужными полями
2) открыть этот запрос
3) в цикле
Delphi
1
2
3
4
5
while not query.eof do
begin
  ... экспортировать одну строку
  query.next;
end;
4) закрыть запрос

Больше нечем помочь.
Это все знания, которые нужны вам для проведения указанной в вопросе работы
Если есть КОНКРЕТНЫЕ вопросы - задайте.
0
Модератор
 Аватар для D1973
9939 / 6475 / 2459
Регистрация: 21.01.2014
Сообщений: 27,452
Записей в блоге: 3
19.03.2025, 11:41
Не знаю, насколько еще тема актуальна, но только сейчас дошли, наконец, руки... Вот какое-то такое у меня видение Вашей проблемы...
Миниатюры
Выгрузить в Excel информацию которая отображается в DBGride   Выгрузить в Excel информацию которая отображается в DBGride  
Вложения
Тип файла: zip school_doctor.zip (871.2 Кб, 15 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2025, 11:41

Разработать программу, которая читает с файла MS Excel информацию о рейсах авиакомпании «Перелет»
Разработать программу, которая читает с файла MS Excel ( информацию о рейсах авиакомпании «Перелет», о которых известно  номер...

Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel?
Здравствуйте! Как выгрузить процесс Excel из памяти при экспорте данных из ASP.Net (C#) в Excel? Вопрос обсуждается везде и много...

Выгрузить информацию с справочника
Есть справочник сотрудники, создана группа Иванова, в ней создана подгруппа Уволенные и Принятые, у каждого сотрудника реквизит...

Выгрузить информацию о всех абонентах на экран
Нужно создать текстовый документ и писать туда информацию об операторах и после выполнить это задание В текстовом файле хранится...

Как выгрузить информацию с сайта в XML файл?
Здравствуйте! Есть задача выгрузить в XML файл всю информацию по товарам с сайта для дальнейшего использования в целях оптимизации...


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

Или воспользуйтесь поиском по форуму:
59
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru