0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
RAD XE3+

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

05.03.2025, 01:48. Показов 7225. Ответов 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
9952 / 6487 / 2461
Регистрация: 21.01.2014
Сообщений: 27,487
Записей в блоге: 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
9952 / 6487 / 2461
Регистрация: 21.01.2014
Сообщений: 27,487
Записей в блоге: 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,684
Записей в блоге: 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,684
Записей в блоге: 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,684
Записей в блоге: 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,684
Записей в блоге: 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,684
Записей в блоге: 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
9952 / 6487 / 2461
Регистрация: 21.01.2014
Сообщений: 27,487
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru