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

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

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

Студворк — интернет-сервис помощи студентам
Здраствуйте. Такой вопрос: как можно вывести в 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 штуки) и Button1(1 штук). Мне нужно сделать так,...

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

15
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
27.09.2017, 15:23
Кто мешает загнать в массив только те поля, которые нужны? Напишите подробнее как работаете с Excel.
0
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
27.09.2017, 15:27  [ТС]
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
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
27.09.2017, 15:32
вроде как 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  [ТС]
не в экспорте дело) мне нужно просто при экспорте не выводить два поля...
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
27.09.2017, 15:51
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  [ТС]
спасибо)

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

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
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
27.09.2017, 16:00
Цитата Сообщение от 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
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
27.09.2017, 16:02
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
5966 / 4542 / 1094
Регистрация: 29.08.2013
Сообщений: 28,154
Записей в блоге: 3
27.09.2017, 16:04
Цитата Сообщение от Алекcей Посмотреть сообщение
вроде как DBGridEh
а где у TC DBGridEh?

делай обычный sql запрос в query с нужными полями и выводи
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
27.09.2017, 16:09
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  [ТС]
ошибка "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
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
27.09.2017, 16:25
почему
Delphi
1
j := 6;
а не
Delphi
1
j := 0;
?
0
12 / 10 / 7
Регистрация: 08.02.2013
Сообщений: 254
27.09.2017, 16:29  [ТС]
В моём случаи 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
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,507
27.09.2017, 16:38
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  [ТС]
То же самое...

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

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

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

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

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

Вывести шахматную доску, пометив крестиками все поля, которые «бьет» ферзь
№1. Поля шахматной доски характеризуются записью: Type Pole=record Ver:(a,b,c,d,e,f,g,h); {вертикальные координаты} ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru