ручная установка курсора в отчете excel

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: ручная установка курсора в отчете excel

Сообщение edward_K »

1. xlCreateExcel ( лучше CreateExcelWithTemplate ) вызываете где хотите. В данном случае в начале формы - как в примере Ирины. Вообще все ваше отличие, в том что циклы у вас другие.

Код: Выделить всё

wstr:=translatepath('%StartPath%XLS_????\')+wnmfile
if not fileexist(wstr)
     { message('ìÑΓ «íαáºτ¿¬á '+wstr)
       exit ;
     }  
  xlCreateExcelWithTemplate(wstr, True)
2. rtf и текстовая форма разные вещи - зачем вам тут rtf.
3. как попасть в ту же строку не знаю - запрос у вас сильно кривой . По идее в нем должна присутствовать ссылка спецификацию - посмотрите поля прототипа. Да и юзаmь noindex лучше в крайней случае а не по первому полю - есть индекс cattrnam+wtable+crec. Зачем вам в атрибуте ссылка на накладные?
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

1. Можете привести код на моем примере? У меня не компилирует, я уже в замешательстве.
2. Я видел только rtf и slk формы, поэтому и сделал вывод о том, что rtf и текстовая - одно и тоже. Как создать текстовую?
3. Как использовать в коде индекс cattrnam+wtable+creс? Noindex уже был до меня (отчет писал не я, я его исправляю). Отчет должен вызываться из акта на брак и выдавать список спецификаций акта на брак с другими параметрами (дата, кол-во и прочее), и номер, дату и сумму по накладной на возврат (в том числе по рекламации). Связь происходит только посредством того, что во внешних атрибутах в каждой спецификации каждой накладной на возврат (в том числе по рекламации) есть ссылка на соотествующий акт на брак. Если возможно, предложите лучший вариант такого запроса, я уже неделю бьюсь, может имеет смысл изменить саму логику запроса.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: ручная установка курсора в отчете excel

Сообщение m0p3e »

Если уж совсем для понимания принципов, то как-то так:

Код: Выделить всё

.LinkForm 'MNAKTBRK_SNAB_1 Prototype is 'MANUFAKTBRAK'
.NameInList 'Тест'
.var
 iRow, iCol : LongInt;
.endvar
.Create view rrr
from katsopr kk,spsopr sp, attrval art
where
((                      
     comp(KATSOPRNREC)  /== art.vcomp (noindex)
and '1110'               == art.wtable (noindex)
and art.crec             == sp.nrec (noindex)
and '00010000000006DDh' /== art.cattrnam (noindex)
and sp.csopr             == kk.nrec
and '206'                == kk.vidsopr (noindex)
));
.begin 
 iRow := 0;
 xlCreateExcel('MyReport.xls',true);
end.
.{
.{
.{

.}
.}
.{table 'rrr.art'
.begin
 iRow++; iCol := 0;
 iCol++; xlSetCellStringValue ( NameTovar, iRow, iCol, iRow, iCol ); 
 iCol++; xlSetCellStringValue ( rrr.kk.nsopr, iRow, iCol, iRow, iCol ); 
 iCol++; xlSetCellDateValue ( rrr.kk.dsopr, iRow, iCol, iRow, iCol ); 
 iCol++; xlSetCellNumberValue ( rrr.kk.summa, iRow, iCol, iRow, iCol ); 
end.
.}
.}
.begin
 xlKillExcel;
 MNAKTBRK_SNAB_1.fExit;
end.
.endform
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

Спасибо большое за пример! Подредактировал и запустил. Но мне необходимо выводить так, как в моем примере. Т.е. NAME_TOVAR выводить в одном цикле, а остальные переменные во втором цикле. m0p3e, у Вас идет вывод в одном цикле, что мне не подходит к сожалению. Видимо нужно как-то совместить Ваш пример с примером Ирины.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: ручная установка курсора в отчете excel

Сообщение m0p3e »

Не совсем понимаю что в итоге должно получиться, но можно использовать для вывода матрицу.
В нее можно писать с любом порядке, но нужно указывать размер - кол-во столбцов и строк. Столбцов обычно известно, а вот для подсчета строк проще всего использовать ЛТ с последующим построчным выводом.

Код: Выделить всё

.LinkForm 'MNAKTBRK_SNAB_1 Prototype is 'MANUFAKTBRAK'
.NameInList 'Тест'
.var
 iRow, iCol : LongInt;
.endvar
.Create view rrr
from katsopr kk,spsopr sp, attrval art
where
((                      
     comp(KATSOPRNREC)  /== art.vcomp (noindex)
and '1110'               == art.wtable (noindex)
and art.crec             == sp.nrec (noindex)
and '00010000000006DDh' /== art.cattrnam (noindex)
and sp.csopr             == kk.nrec
and '206'                == kk.vidsopr (noindex)
));
.begin 
 iRow := 0;
 xlCreateExcel('MyReport.xls',true);
 xlCreateMatrix(количество_строк,количество_столбцов);
end.
.{
.{
.{
.begin
 xlStWriteToMatrix(столбец,строка,NameTovar);
end.
.}
.}
.{table 'rrr.art'
.begin
 xlStWriteToMatrix ( столбец,строка,rrr.kk.nsopr ); 
 xlDtWriteToMatrix ( столбец,строка,rrr.kk.dsoprl ); 
 xlDoWriteToMatrix ( столбец,строка,rrr.kk.summa ); 
end.
.}
.}
.begin
 xlWriteMatrixToExcel(левый_верхний_угол_столбец,левый_верхний_угол_строка);
 xlKillExcel;
 MNAKTBRK_SNAB_1.fExit;
end.
.endform
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

А возможно использовать для Вашего примера переменную-счетчик аналогично примеру Ирины?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: ручная установка курсора в отчете excel

Сообщение Den »

Olegpro писал(а):А возможно использовать для Вашего примера переменную-счетчик аналогично примеру Ирины?
что мешает использовать такую переменную ?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: ручная установка курсора в отчете excel

Сообщение m0p3e »

Olegpro писал(а):А возможно использовать для Вашего примера переменную-счетчик аналогично примеру Ирины?
Ну если Ирина не против... :)
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

Мешает неопытность, я пытаюсь, но выводится не то, что нужно.

Код: Выделить всё

.LinkForm 'MNAKTBRK_SNAB_1oleg' Prototype is 'MANUFAKTBRAK'
.NameInList 'Test'
.var
iRow, iCol : LongInt;
nomre:Double//
datre:Date//
summare:Double//
.endvar
.Create view rrr
from katsopr kk,spsopr sp, attrval art, katmc mccc//
where
((                      
     comp(KATSOPRNREC)  /== art.vcomp (noindex)
and '1110'               == art.wtable (noindex)
and art.crec             == sp.nrec (noindex)
and '00010000000006DDh' /== art.cattrnam (noindex)
and sp.csopr             == kk.nrec
and '206'                == kk.vidsopr (noindex)
and sp.cmcusl==mccc.nrec (noindex)//
and NAME_TOVAR == mccc.name//

));
.begin 
iRow := 1;
xlCreateExcel('MyReport.xls',true);
end.
.{
.{
.{
.begin
xlSetCellStringValue ( Name_Tovar, iRow, 1, iRow, 1 );
iRow++;
end.
.}
.}
.begin
nomre:=0;
datre:=date(0,0,0);
summare:=0;
iRow := 0;
end.
.{table 'rrr.art'
.begin
xlSetCellStringValue ( rrr.kk.nsopr, iRow, 2, iRow, 2 ); 
xlSetCellDateValue ( rrr.kk.dsopr, iRow, 3, iRow, 3 ); 
xlSetCellNumberValue ( rrr.kk.summa, iRow, 4, iRow, 4);
iRow++;
end.
.}
.}
.begin
xlKillExcel;
MNAKTBRK_SNAB_1oleg.fExit;
end.
.endform
Что я делаю не так?
Последний раз редактировалось Olegpro 19 фев 2014, 18:39, всего редактировалось 1 раз.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: ручная установка курсора в отчете excel

Сообщение m0p3e »

Как сейчас выводится и как надо?
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

В данный момент он вообще завис. Посмотрите код, видимо я неправильно использую счетчик. :-?
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

Нашел ошибку, забыл в одном месте присвоить iRow := 1. Часть отчета, с которой сейчас работаю, вывелась верно. Буду дальше думать. Если что, буду спрашивать. Всем огромное спасибо за помощь! Я очень признателен, что не бросаете новичков!
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

Еще один вопросик: как я могу посчитать количество спецификаций в акте на брак, с которым работаю в отчете? Дело в том, что когда я выожу один акт на брак, то выводится все верно, но при выводе нескольких актов, первый столбец выводится верно, а второй и последующие всегда начинают выводится с первой строки, т.к. счетчик равен одному, другими словами значения затираются. Хотелось бы приравнять его к количеству строк в акте на брак, который выводился перед текущим. Возможно ли это?
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Re: ручная установка курсора в отчете excel

Сообщение m0p3e »

Запоминаем строку в какой-нибудь переменной. И в начале нового акта iRow присваиваем не 1, а ее.
Olegpro
Новичок
Сообщения: 25
Зарегистрирован: 06 фев 2014, 11:36

Re: ручная установка курсора в отчете excel

Сообщение Olegpro »

Это я понимаю. А как именно запомнить строку? Как это сделать в коде?
Ответить