Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2016, 08:37   #1
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
Вопрос Экспорт данных из DBGrid в Word в созданную таблицу.

Доброе утро уважаемые коллеги, прежде чем написать на форум я посмотрел и загуглил всевозможные примеры, попробовал сам и столкнулся с такой трудностью что при выгрузки данных в таблицу в Word пишется только первая строка из набора данных DataSet. Вот мой код, помогите правильно и грамотно обработать цикл записи в таблицу в Word.
Код:
Var
  WordApp, wdTbl, wdRow  : Variant;
  i ,j, Col                         : Integer;
  Bm                              : TBookmarkStr;
//************************************************************
Bm := DBGrid1.DataSource.DataSet.Bookmark; // установка закладки на текущую позицию
     DBGrid1.DataSource.DataSet.First; // Встаем на 1-ую запись в нашем наборе
     Col:=1; // переменная для задания счетчика строки в таблице Word
      while not (DBGrid1.DataSource.DataSet.Eof) do
       begin
         wdRow := wdTbl.Rows.Add;  // Добавление пустой строки
         for i:= 0 to DataSet.Fields.Count - 1 do
          begin
            WordApp.Selection.Font.Name:='Times New Roman';  //тип шрифта
            WordApp.Selection.Font.Size:=(10);   //размер шрифта
            wdRow.Cells.Item(Col).Range.Text := DBGrid1.DataSource.DataSet.Fields[i].AsString;
          end;
         DBGrid1.DataSource.DataSet.Next; //переход на следующую запись
         Inc(Col); //увеличение счетчика
       end;
    DBGrid1.DataSource.DataSet.Bookmark := Bm;
Помоги решить проблему, если кто знает как осуществить тоже самое через ADOQuery, буду тоже рад помощи. Помогите коллеги.
manula вне форума Ответить с цитированием
Старый 17.03.2016, 15:13   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

В конце цикла, где увеличиваете счётчик, ещё надо поставить
Код:
DBGrid1.DataSource.DataSet.Next;
phomm вне форума Ответить с цитированием
Старый 18.03.2016, 09:51   #3
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Доброе утро, то есть еще раз прописать эту строку?)
manula вне форума Ответить с цитированием
Старый 18.03.2016, 14:04   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

что такое
Col: integer;
wdrow: variant;
Цитата:
Col:=1; // переменная для задания счетчика строки в таблице Word
Цитата:
wdRow := wdTbl.Rows.Add; // Добавление пустой строки
wdRow //строка
.Cells // ячейки объекта(!!!) одна строка и сколько-то колонок
.Item(Col) // КАКАЯ ячейка ??? если у нас ВСЕГО одна строка (в строке (объекте типа строка) ведь!!!, не в таблице)
.Range.Text
когда в таблице одна строка то все нормально, а вот когда их становится больше то пишем КУДА?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 18.03.2016, 14:25   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

Сорри, я невнимательно прочитал код, глазами почему-то не зацепился.
phomm вне форума Ответить с цитированием
Старый 22.03.2016, 08:43   #6
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Как правильно организовать цикл, evg_m Вы так ответили что вроде как и не ответили, Вы по факту скажите как надо исправить, количество столбцов и строк в таблице у меня задано изначально, мне лишь надо построчно читать из DataSet и отправлять построчно в таблицу Word.
Вот листинг создания таблицы:
Код:
 num_rows:=DBGrid1.DataSource.DataSet.RecordCount + 1;
 num_columns:=DBGrid1.DataSource.DataSet.FieldCount - 1;

  wdTbl := WordApp.Documents.Item(1).Tables.Add(WordApp.Selection.Range, NumRows := num_rows, NumColumns := num_columns);
manula вне форума Ответить с цитированием
Старый 22.03.2016, 11:52   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
количество столбцов и строк в таблице у меня задано изначально,
зачем тогда ?!
Цитата:
wdRow := wdTbl.Rows.Add; // Добавление пустой строки
так и работайте "напрямую" с ПОЛНОЙ (wdTbl) таблицей.
а не с добавленными строками (wdrow).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 22.03.2016, 18:54   #8
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
Сообщение от manula Посмотреть сообщение
помогите правильно и грамотно обработать цикл записи в таблицу в Word.
Вы суда смотрели ? http://programmersforum.ru/showthrea...38#post1568038
xxbesoxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт данных в таблицу Word документа. ZaraZoV Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 4 13.08.2015 13:43
Delphi БД - Экспорт DBGrid в Word Nasle73 Общие вопросы Delphi 2 12.05.2015 11:08
Экспорт массива в таблицу Word Smerch66 Общие вопросы Delphi 1 30.01.2011 10:46
Экспорт значений из нескольких документов Word в одну таблицу Excel для дальнейших расчетов. YJYNGK Microsoft Office Excel 0 30.10.2010 13:42
Передача данных из Excel в созданную таблицу Самоучка БД в Delphi 2 06.11.2008 20:53