Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
1

Вывести в EXCEL не все поля с DBGrida

27.09.2017, 15:05. Показов 660. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте. Такой вопрос: как можно вывести в EXCEL из dbgrid-a только определенные поля(ну некоторые не нужны в отчете).

Я загоняю всё в массив и вывожу. Может кто подскажет как можно это реализовать по другому.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.09.2017, 15:05
Ответы с готовыми решениями:

Надо вывести ВСЕ существующие переменные session и все поля из формы.
Надо вывести ВСЕ существующие переменные session и все поля из формы. Скопом. Без перечисления...

При вводе значения в поля Edit и нажатии на Button данные вывести в Excel
Доброе утро всем. Я снова обращаюсь за вашей помощью. У меня такая задача. Есть Edit(2 штуки) и...

Нарисовать шахматную доску, пометив крестиками все поля, которые «бьёт» заданный ферзь, и ноликами все остальные поля
Здравствуйте. Дали задание: даны две литеры – латинская буква (от a до h) и цифра (от 1 до 8),...

Вывести все записи с определенным значением логического поля
не разу с этим не сталкивался в delphi поэтому прошу помощи. есть база access таблица vopros поля:...

15
552 / 482 / 191
Регистрация: 11.12.2013
Сообщений: 2,500
27.09.2017, 15:23 2
Кто мешает загнать в массив только те поля, которые нужны? Напишите подробнее как работаете с Excel.
0
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
27.09.2017, 15:27  [ТС] 3
Delphi
1
2
3
  for i := 0 to FCnt-1 do
    if (DBGridEh1.Columns[i].Title.Caption<>'Поле1') or (DBGridEh1.Columns[i].Title.Caption<>'Поле2') then
    XArr[i+1] := Form9.DBGridEh1.Columns[i].Title.Caption;
0
552 / 482 / 191
Регистрация: 11.12.2013
Сообщений: 2,500
27.09.2017, 15:32 4
вроде как DBGridEh умеет сам экспортировать в Excel. примерно так:
Delphi
1
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,DBGridEh1,'c:\temp\file1.xls',False);
только не забыть добавить в uses модуль DBGridEhImpExp.
0
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
27.09.2017, 15:48  [ТС] 5
не в экспорте дело) мне нужно просто при экспорте не выводить два поля...
0
552 / 482 / 191
Регистрация: 11.12.2013
Сообщений: 2,500
27.09.2017, 15:51 6
Delphi
1
2
3
4
5
6
j:=0;
for i := 0 to FCnt-1 do
    if (DBGridEh1.Columns[i].Title.Caption<>'Поле1') and (DBGridEh1.Columns[i].Title.Caption<>'Поле2') then begin
      inc(j);
      XArr[j] := Form9.DBGridEh1.Columns[i].Title.Caption;
    end;
1
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
27.09.2017, 15:56  [ТС] 7
спасибо)

а теперь данные как так же выпелить.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
 DM.QB.First;
 while not DM.QB.Eof do
  begin
   i:=1;
   while i<=FCnt do
    begin
     if (DM.QB.FindField('Поле1')<>nil) or (DM.QB.FindField(Поле2')<>nil) then
      begin
        XArr[i] := DM.QB.Fields[i-1].Value;
        i := i+1;
      end;  
    end;
0
Айлурофил
477 / 410 / 110
Регистрация: 27.05.2017
Сообщений: 2,368
Записей в блоге: 3
27.09.2017, 16:00 8
Цитата Сообщение от Kamero Посмотреть сообщение
Delphi
1
2
3
  for i := 0 to FCnt-1 do
    if (DBGridEh1.Columns[i].Title.Caption<>'Поле1') or (DBGridEh1.Columns[i].Title.Caption<>'Поле2') then
    XArr[i+1] := Form9.DBGridEh1.Columns[i].Title.Caption;
Условие неправильное. Не or, а and.
0
552 / 482 / 191
Регистрация: 11.12.2013
Сообщений: 2,500
27.09.2017, 16:02 9
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
DM.QB.First;
 while not DM.QB.Eof do
  begin
    j := 0;
    for i:= 0 to DM.QB.Fields.count-1 do
       if (DM.QB.Fields[i].FieldName<>'Поле1') and  (DM.QB.Fields[i].FieldName<>'Поле2') then
      begin
        inc(j);        
        XArr[j] := DM.QB.Fields[i].Value;
      end;  
    DM.QB.Next;
   end;
0
5585 / 4435 / 1080
Регистрация: 29.08.2013
Сообщений: 27,734
Записей в блоге: 3
27.09.2017, 16:04 10
Цитата Сообщение от Алекcей Посмотреть сообщение
вроде как DBGridEh
а где у TC DBGridEh?

делай обычный sql запрос в query с нужными полями и выводи
0
552 / 482 / 191
Регистрация: 11.12.2013
Сообщений: 2,500
27.09.2017, 16:09 11
qwertehok,
Delphi
1
2
if (DBGridEh1.Columns[i].Title.Caption<>'Поле1') or (DBGridEh1.Columns[i].Title.Caption<>'Поле2') then
    XArr[i+1] := Form9.DBGridEh1.Columns[i].Title.Caption;
не оно?
0
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
27.09.2017, 16:14  [ТС] 12
ошибка "Variant or safe array index out of bounds"

Добавлено через 2 минуты
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 //äàííûå ñ ãðèäà
DM.QB.First;
 while not DM.QB.Eof do
  begin
    j := 6;
    for i:= 0 to DM.QB.Fields.count-1 do
       if (DM.QB.Fields[i].FieldName<>'Razdel') and (DM.QB.Fields[i].FieldName<>'Fond') then
      begin
        inc(j);        
        XArr[j] := DM.QB.Fields[i].Value;   <==== Вот тут останавливается компилятор
      end;  
    DM.QB.Next;
   XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Value := XArr;
   {XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Borders[1].LineStyle:=1;
   XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Borders[2].LineStyle:=1;
   XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Borders[4].LineStyle:=1;}
   end;
0
552 / 482 / 191
Регистрация: 11.12.2013
Сообщений: 2,500
27.09.2017, 16:25 13
почему
Delphi
1
j := 6;
а не
Delphi
1
j := 0;
?
0
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
27.09.2017, 16:29  [ТС] 14
В моём случаи j=6 это с 6 строки в excel. Шапка на 5 строке. И вот уже с 6 выводятся данные. Но и при 0 то же ошибка.

Добавлено через 1 минуту
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
j:=6; 
DM.QB.First;
 while not DM.QB.Eof do
  begin
   i:=1;
   while i<=FCnt do
    begin
     if (DM.QB.FindField('Поле1')<>nil) or (DM.QB.FindField(Поле2')<>nil) then
      begin
        XArr[i] := DM.QB.Fields[i-1].Value;
        i := i+1;
      end;  
    end;
   j:=j+1;
   XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Value := XArr;
   XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Borders[1].LineStyle:=1;
   XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Borders[2].LineStyle:=1;
   XL.Range['A'+IntToStr(j), CHR(64+FCnt)+IntToStr(j)].Borders[4].LineStyle:=1;
   end;
был примерно такой код.
0
552 / 482 / 191
Регистрация: 11.12.2013
Сообщений: 2,500
27.09.2017, 16:38 15
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DM.QB.First;
 r:=5;
 while not DM.QB.Eof do
  begin
    j := 0;
    for i:= 0 to DM.QB.Fields.count-1 do
       if (DM.QB.Fields[i].FieldName<>'Razdel') and (DM.QB.Fields[i].FieldName<>'Fond') then
      begin
        inc(j);        
        XArr[j] := DM.QB.Fields[i].Value;   <==== Вот тут останавливается компилятор
      end;  
    DM.QB.Next;
    inc(r);
    XL.Range['A'+IntToStr(r), CHR(64+FCnt)+IntToStr(r)].Value := XArr;
   end;
попробуйте так, может поможет
1
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
28.09.2017, 10:08  [ТС] 16
То же самое...

Добавлено через 1 час 15 минут
Спасибо за помощь разобрался.
0
28.09.2017, 10:08
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.09.2017, 10:08
Помогаю со студенческими работами здесь

Как в функции MessageDlg вывести все поля одной таблицы
Здравствуйте, у меня такой вопрос. Как в функции MessageDlg вывести все поля одной таблицы? ...

Вывести все значения из многозначного поля в представление как отдельн
Добрый день! Подскажите, пожалуйста, есть ли возможность вывести все значения из многозначного...

Вывести в DBComboBox.Ithems все записи поля получаемого с помощью Qyery
Всем привет. Нужна помощь. Надо вывести в DBComboBox.Ithems все записи поля получаемого с помощью...

Вывести шахматную доску, пометив крестиками все поля, которые «бьет» ферзь
№1. Поля шахматной доски характеризуются записью: Type Pole=record ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Интеграция Arduino и ChatGPT: Практическое руководство
InfoMaster 16.01.2025
В современную эпоху технологических инноваций интеграция искусственного интеллекта с микроконтроллерами открывает принципиально новые возможности для создания умных устройств и автоматизированных. . .
Как создать робота, управляемого ChatGPT
InfoMaster 16.01.2025
Концепция проекта В современную эпоху искусственный интеллект и робототехника становятся все более доступными для энтузиастов и разработчиков. Создание роботизированной руки, управляемой ChatGPT,. . .
Как создать ChatGPT бота в Telegram на Python
InfoMaster 16.01.2025
В современном мире технологии искусственного интеллекта становятся все более доступными для разработчиков, открывая новые возможности для создания умных и интерактивных приложений. Одним из самых. . .
Машинное обучение с помощью Python
InfoMaster 16.01.2025
Машинное обучение стало неотъемлемой частью современных технологий, позволяя компьютерам учиться на основе данных и принимать решения без явного программирования. В сочетании с языком. . .
Использование связки C# и PHP в корпоративной разработке и микросервисной архитектуре
InfoMaster 16.01.2025
Введение в интеграцию C# и PHP В современной корпоративной разработке все чаще возникает потребность в создании гибких и масштабируемых решений, способных эффективно решать широкий спектр. . .
Как использовать Kerio дома для управления сетью и пользователями
InfoMaster 16.01.2025
Использование технологий для улучшения повседневной жизни стало неотъемлемой частью современного быта. Одной из таких технологий является Kerio — мощный инструмент для управления сетью и. . .
Есть ли будущее у DVD и Blu-ray?
InfoMaster 16.01.2025
В эпоху стремительного развития цифровых технологий и повсеместного распространения потоковых сервисов вопрос о будущем физических носителей информации становится все более актуальным. Особенно остро. . .
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru