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

Вывод нескольких таблиц из DataSet в документ Excel

15.12.2013, 22:58. Показов 1616. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте форумчане! Нуждаюсь в помощи. Есть база данных в аксесе, я с помощью DataSet создаю запрос. На форме имеется CheckListBox, DataSourse, DataSet и кнопка. В CheckListBox я выбираю сотрудников, а в эксель документ экспортирую отчет, где выводится список оборудования закрепленного за выбранным сотрудником. Список оборудования выводится отлично. Мне необходимо, в эксель также вывести перед списком оборудования имя сотрудника.
сейчас так:
монитор | сервисный номер | инвентаризационный номер
и так перечисляется список оборудования за этим сотрудником.
далее пустая строка
и потом также список оборудования другого сотрудника.

а нужно так:
Иванов И.И.
монитор | сервисный номер | инвентаризационный номер
далее его оборудование
после другой сотрудник с оборудования и так далее.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
unit Unit6;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, CheckLst, Buttons, DB, ADODB, RpRave,
  RpDefine, RpCon, RpConDS;
 
type
  TReporting = class(TForm)
    CheckListBox1: TCheckListBox;
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    RvDataSetConnection1: TRvDataSetConnection;
    RvProject1: TRvProject;
    Button1: TButton;
    procedure FormShow(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Reporting: TReporting;
  count, n : integer;
  id : array[1..100] of integer;
  fio : array[1..100] of string;
  XL : Variant;
 
implementation
uses Unit1, Math, ComObj, DBGrids;
{$R *.dfm}
 
procedure CreateEXL(Vis : Boolean);
begin
 
  XL := CreateOleObject('Excel.Application');  // создание документа Excel
  XL.WorkBooks.Add; // добвление документа
  XL.Visible := Vis;  // видимость
  n := 2;
 
end;
 
procedure ToExcell(ADODataSet1 : TADODataSet);
var
    k, m : integer;
    XArray : Variant;
 
begin
  XArray := VarArrayCreate([1, ADODataSet1.FieldCount], varVariant); // создаем вариантный массив для щаполнения данными
  ADODataSet1.First; // курсор на начало таблицы из базы данных
  While (not ADODataSet1.Eof) do   // пока не закончится таблица в базы данных
  begin
    k := 1; //  столбец в таблице
    m := ADODataSet1.FieldCount;
    while (k <= m) do    // пока к лежит в диапазоне между первым и последним столбцом в таблице бд
    begin
      XArray[k] := ADODataSet1.Fields[k-1].Value; // элемент массива со столбцами получает значение столбца из таблиц
      k := k + 1; // счетчик перемещения по столбцам
    end;
    XL.Range['A' + IntToStr(n), CHR(64 + m) + IntToStr(n)].Value := XArray;
    ADODataSet1.Next;
    n := n + 1; // перемещение по строкам, для последующих добавлений полей в документ экселя
  end;
  n := n + 1; // добавляем пустую строку для того, чтобы записать в них имя сотрудника
  XL.Range['A1', CHR(64 + ADODataSet1.FieldCount) + IntToStr(n)].Select;
  XL.Selection.Columns.AutoFit;  // автоматическое выравнивание ячеек по содержимому
  XL.Range['A1', 'A1'].Select;  // установка закрепления области на активном листе Excel
  XL.DisplayAlerts := false;  // чтобы не выходил вопрос о сохранении документа Excel
  XL.WorkBooks[1].WorkSheets[1].Name := 'Отчет1'; // задание названия листа в документе Excel
end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2013, 22:58
Ответы с готовыми решениями:

Вывод значений таблиц в документ Word
Помогите пожалуйста, нужно ввести значения двух таблиц и их итогов в документ Ворд. procedure DsMoveTo(dts: TDataSet; index: integer); ...

Экспорт данных в Excel из нескольких таблиц БД
Всем доброго времени суток! Пытаюсь реализовать экспорт записей в эксель файл из нескольких таблиц БД. Использую код для экспорта, но...

Вывод информации из нескольких таблиц в одну
у меня есть такая форма http://s015.***********/i330/1103/69/d89882cb49ac.jpg При выборе группы, в таблице сразу появляются нужные...

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

Вывод данных нескольких таблиц в dbgrid
День добрый! Есть три таблицы (структура одинакова, данные - нет, БД - MySQL, работаю через ADO). Хочется проводить поиск одновременно в...

Изменение запроса в зависимости от выбранных строк в нескольких DbGrid (в SQL получить значения из нескольких DataSet)
Здравствуйте. Есть таблицы и компоненты: Tbl_authors – Таблица авторов. С ней связаны компоненты: - ADOTable_authors, -...

Загрузка в DataSet нескольких таблиц
Здравствуйте. У меня возникло несколько вопросов. Как известно DataSet может содержать несколько таблиц. Как загрузить эти таблицы в...

Сбор информации из нескольких таблиц в один документ Word
Здравтсуйте. Появилась необходимость создать базу данных абонентов ЖКХ. Есть таблица Абоненты, где представлена сводная информация (фио,...

Поиск в документе, копирование данных нескольких однотипных таблиц в новый документ
Знатоки, помогите пожалуйста, целый день ищу нечто подобное, своих знаний в VBA не хватает. Описание задачи: Есть несколько (количество...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru