![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Может кому то будет интересно.
Код:
ConnectionWord(self);
ItemN:=1; //таблица в вордовском документе
row:=2; //Строка
j:=1; //Столбец
ii:=2; //Первая строка для объединения строк
numLines:=1; //хранит количество добавленных строк
for I := 0 to 5 do //6 - количество разделов
begin
TD:=TadoQuery.create(nil);
with TD do
begin
try
connection:=DataModule1.ADOConnection;
sql.Text:=Format(SQLtext,[inttostr(i),inttostr(KafCode), inttostr(LearnYear)]);
ExecSQL;
open;
if td.RecordCount < 1 then //Если пусто добавляет пустую строку
begin
if numLines > 1 then WDoc.Tables.Item(ItemN).Rows.Add(EmptyParam);
WDoc.Tables.Item(ItemN).Cell(row+numLines,j).Range.Text:= RazdelName(i);
numLines := numLines+1;
row:=row+1;
ii:=ii+1;
end;
while not TD.Eof do
begin
for Ind := 0 to td.RecordCount-1 do //Количество записей в подразделе
begin
if numLines > 1 then WDoc.Tables.Item(ItemN).Rows.Add(EmptyParam);
WDoc.Tables.Item(ItemN).Cell(row, 2).Range.Text:= td.FieldByName('Meripriyt').AsString;
WDoc.Tables.Item(ItemN).Cell(row, 3).Range.Text:= td.FieldByName('Srok_vip').AsString;
WDoc.Tables.Item(ItemN).Cell(row, 4).Range.Text:= td.FieldByName('Otvetstven').AsString;
WDoc.Tables.Item(ItemN).Cell(row, 5).Range.Text:= td.FieldByName('Note').AsString;
td.Next;
numLines := numLines+1;
inc(row);
end;
WDoc.Tables.Item(ItemN).Cell(i+numLines,j).Range.Text:= td.FieldByName('NAME_VIDDEYAT').AsString;
if td.RecordCount > 1 then
begin
WDoc.Tables.Item(ItemN).Cell(ii,j).Merge(WDoc.Tables.Item(ItemN).Cell(1+numLines,j));
ii:= numLines+1;
end;
ii:= numLines+1;
end;
finally
Free;
end;
WApp.Visible := true;
end;Последний раз редактировалось koly86, 16.04.2015 в 10:26. |
|
#2
|
|||
|
|||
|
Что она выводит?
|
|
#3
|
|||
|
|||
|
Цитата:
данные из запроса const SQLText = 'select * from table ' |
|
#4
|
|||
|
|||
|
А почему в цикле явно задано 6 итераций, а разделов 5? Непонятно
Код:
for I := 0 to 5 do //5 - количество разделов А запрос какого формата? |
|
#5
|
|||
|
|||
|
Цитата:
потому что в вордовском документе весь первый столбец = уникальные названия раздела, и к каждому этому разделу идет сколько угодно под пунктов, которые выводятся с 2-го-5 столбец |
|
#6
|
|||
|
|||
|
Попробуйте свой код обрамить в [CODE*][*/CODE] (только без звездочек), а то неудобно читать.
|