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

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

05.03.2025, 01:48. Показов 7082. Ответов 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
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 21
10.03.2025, 10:56
Студворк — интернет-сервис помощи студентам
сформулируйте условие на русском языке, мы поможем перевести на SQL
0
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
10.03.2025, 11:49
Запрос, в принципе, нельзя написать, не зная названий таблиц, связей между ними, названий и типов полей ну и т.д. То есть - не зная структуру Вашей БД нельзя написать даже самый примитивный запрос. А по большому счету, чтобы написать запрос чуть-чуть сложнее, чем SELECT * FROM MyTable, необходимо четкое понимание того, что мы хотим получить в итоге, необходимо техзадание. Ничего из вышеперечисленного Вы нам не предоставили, кроме маловразумительного обрывка кода...

Вообще, при создании приложения для управления БД Вам просто необходимо плотно работать в самой СУБД, в которой Вы создаете свою базу, ну, в Вашем случае - в Access. Все запросы создаются и отлаживаются именно там. А когда запрос отлажен и работает - вот тогда текст этого запроса можно переносить в свою программу с большой долей уверенности, что запрос сработает и там.
0
59 / 3 / 0
Регистрация: 19.03.2016
Сообщений: 19
10.03.2025, 22:17
В Ehlib можно посмотреть код, который выполняет экспорт в иксель. Он простой и понятный, и делает именно то, что хочет ТС, без обращения к SQL. Именно "картинку с телевизора".
0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
11.03.2025, 01:34
Цитата Сообщение от vlad-mal Посмотреть сообщение
В Ehlib можно посмотреть код, который выполняет экспорт в иксель. Он простой и понятный, и делает именно то, что хочет ТС
А вы уверены что сей код делает именно то, что хочет ТС? Может вы не достаточно точно знаете что он хочет.
И ещё раз. EhLib платная.
0
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
11.03.2025, 06:39
Цитата Сообщение от vlad-mal Посмотреть сообщение
экспорт в иксель ... без обращения к SQL
Ну дык экспорт в Excel - он и в предложенном коде никакой SQL не использует. Если Вы посмотрели предложенный код, то увидели, что там просто формируется вариантный массив и заполняется значениями из набора данных. Потом этот массив вставляется на лист Excel. А как формируется набор данных для экспорта - это дело пятое, это может быть SQL-запрос, это может быть прямое обращение к таблице БД, да хоть чтение из текстового файла - вообще неважно. Создали вариантную матрицу, заполнили ее данными неважно откуда, вставили матрицу на лист Экселя - все!
Цитата Сообщение от vlad-mal Посмотреть сообщение
В Ehlib можно посмотреть код
Да, можно. И Вы поймете, что делает этот код, сможете применить его в своем проекте. И еще многие форумчане смогут это сделать. Но вот ТС - пока не может, поэтому, какой смысл говорить об этом в его теме?

beastfrim, выложите уже свой проект вместе с БД. И на примере этого проекта продемонстрируйте, чего хотите добиться...
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
12.03.2025, 04:50  [ТС]
Друзья вот проект который я мучаю
Вложения
Тип файла: rar школьный шельдшер.rar (3.66 Мб, 9 просмотров)
0
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
12.03.2025, 05:58
Цитата Сообщение от beastfrim Посмотреть сообщение
есть DBGrid1 в нем отображается база людей (Access) с диагнозами (Бронхит,ОРВИ и т.д)
Ну допустим, если предположить, что диагноз указывается кодом в поле МКБ
Цитата Сообщение от beastfrim Посмотреть сообщение
CheckBox-сом фильтрую по году заболевания, TButton-om выгружаю в Excel табличку с двумя столбцами (Диагноз и количество).
А вот этого я что-то не нашел... Или Вы имеете в виду главное меню, а не чекбоксы и кнопки?
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
12.03.2025, 06:22  [ТС]
Скриншот
Миниатюры
Выгрузить в Excel информацию которая отображается в DBGride  
0
122 / 51 / 11
Регистрация: 17.11.2021
Сообщений: 259
12.03.2025, 08:08
Вначале в ексель шапку вы берете из грида
Delphi
1
2
3
4
5
for k :=1 to DBGrid1.FieldCount do
 begin
  i :=i+1;
  ExcelApp.cells[1,i] :=DBGrid1.Columns.Items[k-1].Title.caption;
 end;
а далее пошел вывод из ADOQuery1

Добавлено через 4 минуты
Если нужно именно то что грид отображает, пройдите по его ячейкам и строкам циклом перенося в ексель
0
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
12.03.2025, 09:20
beastfrim, теперь понятно. Как время будет - что-нибудь набросаю...
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
12.03.2025, 09:39  [ТС]
ura-ura. А зачем мне шапка из грида и вывод из ADOQuery1, я создаю Excel с двумя колонками МКБ и Количество, куда должно попасть МКБ и Количество, только не со всей базы а только то что я отфильтровал, или как это сказать показывает Грид.
0
122 / 51 / 11
Регистрация: 17.11.2021
Сообщений: 259
12.03.2025, 09:44
у вас кстати можно выбрать оба фильтра 24 и 25, но в результате только 24 отображается)))
можно сделать сброс одного при нажатии на другой
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.N20241Click(Sender: TObject);
begin
if Form1.N20241.Checked = false then form1.ADOQuery1.Filtered := False
else
begin
   Form1.N20251.Checked :=false;
   Form1.ADOQuery1.Filtered := False;
   Form1.ADOQuery1.Filter:='ГодВвода like %2024%';
   Form1.ADOQuery1.Filtered :=True
end;
end;
 
procedure TForm1.N20251Click(Sender: TObject);
begin
if Form1.N20251.Checked = false then form1.ADOQuery1.Filtered := False
else
begin
   Form1.N20241.Checked :=false;
   Form1.ADOQuery1.Filtered := False;
   Form1.ADOQuery1.Filter:='ГодВвода like %2025%';
   Form1.ADOQuery1.Filtered :=True
end;
end;
1
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
12.03.2025, 09:51  [ТС]
Точняк спасибо!! но первый вопрос меня больше интересует =)
0
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
12.03.2025, 10:40
beastfrim, если сделать в режиме "на и отъе..сь" - то вот так:
Delphi
1
2
3
4
5
6
7
8
With DM.ADQ2 do begin//Делаем наш запрос
        Close;
        SQL.Clear;
        SQL.Add('SELECT МКБ, COUNT(МКБ) as cnt FROM DBI');
        SQL.Add('WHERE [ГодВвода] = "2024"'); //<<==
        SQL.Add('GROUP BY МКБ');
        Open;
    end;
где вместо конкретного значения 2024 нужно будет подставить переменную, в которую будет записан выбранный год.

А если делать хорошо - то надо переделывать всё, начиная с БД

Добавлено через 46 минут
Цитата Сообщение от ura-ura Посмотреть сообщение
можно сделать сброс одного при нажатии на другой
а если их будет не 2, а, к примеру, 5 и надо выбрать 3 из 5-ти?
0
122 / 51 / 11
Регистрация: 17.11.2021
Сообщений: 259
12.03.2025, 11:13
Цитата Сообщение от D1973 Посмотреть сообщение
А если делать хорошо - то надо переделывать всё, начиная с БД
поддерживаю)))
Цитата Сообщение от D1973 Посмотреть сообщение
а если их будет не 2, а, к примеру, 5 и надо выбрать 3 из 5-ти?
тогда вот это
Delphi
1
 Form1.ADOQuery1.Filter:='ГодВвода like %2024%';
нужно по другому делать
0
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
12.03.2025, 11:27
Цитата Сообщение от ura-ura Посмотреть сообщение
нужно по другому делать
однозначно!
0
 Аватар для krapotkin
6854 / 4680 / 1465
Регистрация: 14.04.2014
Сообщений: 20,681
Записей в блоге: 21
12.03.2025, 13:57
считаю, предлагать делать ФИЛЬТР на Query это цинично и безнравственно по отношению к автору
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 31
13.03.2025, 04:04  [ТС]
D1973. Не на "о*сь" не пойдет
SQL.Add('WHERE [ГодВвода] = "2024"'); //<<==
Так тут он всегда будет только считать 2024 год а если мне нужно 2025 год, или еще какой нибудь фильтр добавить например мне нужно добавить к году возраст ?
0
Модератор
 Аватар для D1973
9945 / 6480 / 2460
Регистрация: 21.01.2014
Сообщений: 27,462
Записей в блоге: 3
13.03.2025, 04:49
Цитата Сообщение от beastfrim Посмотреть сообщение
а если мне нужно 2025 год
а если читать ответы внимательно?
Цитата Сообщение от D1973 Посмотреть сообщение
вместо конкретного значения 2024 нужно будет подставить переменную, в которую будет записан выбранный год
что непонятно?

Цитата Сообщение от beastfrim Посмотреть сообщение
или еще какой нибудь фильтр добавить
инструкция WHERE может содержать достаточно большое количество условий, объединенных логическими операторами AND и OR

Цитата Сообщение от beastfrim Посмотреть сообщение
добавить к году возраст
Кстати о возрасте... Никогда не храните в БД вычисляемые величины! Тот же возраст. Вот вы внесли данные ребенка, указали возраст - 15 лет. Через год Ваша таблица, получается, будет содержать некорректные данные?
1
1 / 1 / 0
Регистрация: 07.09.2021
Сообщений: 105
13.03.2025, 09:16
Можно свои пять копеек вставить?
Кроме того, что как уже упоминали уважаемые товарищи выше - код надо кардинально переделывать, нужно еще и подумать о "заделе на будущее".
У вас выбор фильтрации по годам идет через выпадающее меню. Вы каждый следующий год будете добавлять в меню по одной строке с годом? Лучше сделать по другому.
Проще всего конечно сделать строку ввода с проверкой на цифры. Я бы сделал процедурно генерируемый выпадающий список, который будет формироваться запросом из поля "год ввода".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2025, 09:16

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru