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

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

05.03.2025, 01:48. Показов 6059. Ответов 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
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,653
Записей в блоге: 21
10.03.2025, 10:56
Студворк — интернет-сервис помощи студентам
сформулируйте условие на русском языке, мы поможем перевести на SQL
0
Модератор
 Аватар для D1973
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,337
Записей в блоге: 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
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
11.03.2025, 01:34
Цитата Сообщение от vlad-mal Посмотреть сообщение
В Ehlib можно посмотреть код, который выполняет экспорт в иксель. Он простой и понятный, и делает именно то, что хочет ТС
А вы уверены что сей код делает именно то, что хочет ТС? Может вы не достаточно точно знаете что он хочет.
И ещё раз. EhLib платная.
0
Модератор
 Аватар для D1973
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,337
Записей в блоге: 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
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,337
Записей в блоге: 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
113 / 37 / 10
Регистрация: 17.11.2021
Сообщений: 229
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
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,337
Записей в блоге: 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
113 / 37 / 10
Регистрация: 17.11.2021
Сообщений: 229
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
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,337
Записей в блоге: 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
113 / 37 / 10
Регистрация: 17.11.2021
Сообщений: 229
12.03.2025, 11:13
Цитата Сообщение от D1973 Посмотреть сообщение
А если делать хорошо - то надо переделывать всё, начиная с БД
поддерживаю)))
Цитата Сообщение от D1973 Посмотреть сообщение
а если их будет не 2, а, к примеру, 5 и надо выбрать 3 из 5-ти?
тогда вот это
Delphi
1
 Form1.ADOQuery1.Filter:='ГодВвода like %2024%';
нужно по другому делать
0
Модератор
 Аватар для D1973
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,337
Записей в блоге: 3
12.03.2025, 11:27
Цитата Сообщение от ura-ura Посмотреть сообщение
нужно по другому делать
однозначно!
0
 Аватар для krapotkin
6847 / 4674 / 1463
Регистрация: 14.04.2014
Сообщений: 20,653
Записей в блоге: 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
9902 / 6440 / 2454
Регистрация: 21.01.2014
Сообщений: 27,337
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru