| 
| 
 | Вопрос # 5 234/ вопрос открыт / | 
 |  Здравствуйте!есть проблема с отчётом, немогу разобрать ся почему в отчёт в excel выводиться одна и та же запись и причём несколько раз.
 Приложение:Переключить в обычный режим procedure otch;varexcel,sheet,workBook:variant;col,j,i:integer;begin  Excel:=CreateOleObject('Excel.Application');  Excel.Visible:=true;  Excel.workbooks.add(GetCurrentDir+'\oth_kma.xls');  Col:=1;   j:=3;  excel.application.Range['A1:G1'].Select;   Excel.Selection.Merge;   excel.application.cells.Item[1,Col].HorizontalAlignment:=-4108;    excel.application.Range['A1'].ColumnWidth:=30;  excel.application.Range['B1'].ColumnWidth:=15;  excel.application.Range['C1'].ColumnWidth:=25;  excel.application.Range['D1'].ColumnWidth:=25;  excel.application.Range['E1'].ColumnWidth:=20;   excel.application.Range['F1'].ColumnWidth:=20;    excel.application.Range['G1'].ColumnWidth:=20;           for i:=1 to DM.tRazdels.RecordCount do           begin  excel.application.cells.item[j,col]:=F_uchet.DBLookupComboBox_kma.text;;  excel.application.cells.item[j,col+1]:=f_uchet.DBEdit2.Text;  excel.application.cells.item[j,col+2]:=f_uchet.DBE_ob_infa_kma_data.Text;  excel.application.cells.item[j,col+3]:=f_uchet.DBEdit6.Text;  excel.application.cells.item[j,col+4]:=DM.tRazdelsOb_infa_KMA_seri_nom.value;  excel.application.cells.item[j,col+5]:=DM.tRazdelsOb_infa_KMA_invent_nom.value;  excel.application.cells.item[j,col+6]:=DM.tRazdelsOb_infa_KMA_servisn_nom.value;          DM.tRazdels.next;         j:=j+1;            end;           begin           excel.range[excel.cells[1,1],excel.cells[j-1,1]].select;           excel.selection.borders.linestyle:=1;           end; end;
|  |   Вопрос задал: strannik23 (статус: Посетитель)Вопрос отправлен: 27 апреля 2011, 11:06
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, strannik23!Добавьте в самое начало процедуры(сразу за словом begin) такую строку
 DM.tRazdels.first;
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 27 апреля 2011, 11:21
 Оценка за ответ: 5
 Комментарий к оценке: ответ удовлетворил |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 27 апреля 2011, 12:34; участников в обсуждении: 2. 
|   | strannik23 (статус: Посетитель), 27 апреля 2011, 11:13 [#1]:вот ещё что, какая запись выделена в DBGridе и именно с этой записи выводиться отчёт, а если выделена последняя запись то просто последняя запись размножается и заменяет всё количество записей |  
|   | strannik23 (статус: Посетитель), 27 апреля 2011, 11:35 [#2]:извините за большое количество вопросов, но можно ли как нибудь сделать так что бы при выводе в отчёт пустые строки в EXCELе удалялись? |  
|   | Вадим К (статус: Академик), 27 апреля 2011, 11:36 [#3]:А зачем их удалять, если проще их туда просто не добавлять? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | strannik23 (статус: Посетитель), 27 апреля 2011, 11:42 [#4]:это получается можно прописать через if, если запись пуста то не выводить |  
|   | Вадим К (статус: Академик), 27 апреля 2011, 11:50 [#5]:в коде выше между 34 и 35 строкой должно быть что то вида 
 if запись пуста then begin
  DM.tRazdels.next;
  continue;
end;проверка на пустоту может быть различная, например такая (F_uchet.DBLookupComboBox_kma.text = '') and (f_uchet.DBEdit6.Text = '')
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | strannik23 (статус: Посетитель), 27 апреля 2011, 12:34 [#6]:спасибо |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |