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

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

05.03.2025, 01:48. Показов 7159. Ответов 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
9949 / 6484 / 2461
Регистрация: 21.01.2014
Сообщений: 27,473
Записей в блоге: 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
9949 / 6484 / 2461
Регистрация: 21.01.2014
Сообщений: 27,473
Записей в блоге: 3
14.03.2025, 06:04
Цитата Сообщение от beastfrim Посмотреть сообщение
я же такое не смогу сделать
Почему? Никаких сакральных тайных знаний там нет...
Цитата Сообщение от beastfrim Посмотреть сообщение
а можно архивчик проекта
можно, но немного позже: пришла в голову другая идея, сделаю - покажу...
0
122 / 51 / 11
Регистрация: 17.11.2021
Сообщений: 259
14.03.2025, 10:19
Я попробовал сделать, но нужно дорабатывать, фильтры между собой не дружат.
Базу переделал, и весь код заново сделал, правда в семерке.
Вложения
Тип файла: 7z школьный шельдшер2.7z (757.6 Кб, 10 просмотров)
1
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 21
14.03.2025, 10:31
а вот это для чего?
Delphi
1
if qry1.Fields.Fields[0].AsString<>'' then
0
122 / 51 / 11
Регистрация: 17.11.2021
Сообщений: 259
14.03.2025, 10:40
Цитата Сообщение от krapotkin Посмотреть сообщение
это для чего?
проверка на не пустой крю, можно убрать в принципе
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 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
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 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
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 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
122 / 51 / 11
Регистрация: 17.11.2021
Сообщений: 259
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
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 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
9949 / 6484 / 2461
Регистрация: 21.01.2014
Сообщений: 27,473
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru