При соединении к Excelю для вывода данных я использую.. QUERY...
Query1.close;
query1.sql.add('Select AdvrtName, ConstrType, sum( price) from base.db where
AdvrtName='''+Edit1.Text'''' group by ConstrType, AdvrtName');
query1.active:=true;
из этого запроса я хочу чтобы ... из базы он выбирал AdvrtName, ConstrType(поля
базы) потом при их наличии соответственно .... складывал их сумму из третьего
поля price .............. (соответственно и группировал) ..... >>>>
примерно так ....
Если было
AdvrtName ConstrType Price
1 1 32
1 1 25 >>>>
чтобы в Excele было так........
AdvrtName ConstrType Price
1 1 57
в Qreporte получалось а вот в Excele он пишет ошибку почему? >>>>
помогите пожалуйста
Здравствуйте CO0lGirL, Вы писали:
COGL>При соединении к Excelю для вывода данных я использую.. QUERY...
COGL>Query1.close; COGL>query1.sql.add('Select AdvrtName, ConstrType, sum( price) from base.db where COGL>AdvrtName='''+Edit1.Text'''' group by ConstrType, AdvrtName'); COGL>query1.active:=true; COGL>из этого запроса я хочу чтобы ... из базы он выбирал AdvrtName, ConstrType(поля COGL>базы) потом при их наличии соответственно .... складывал их сумму из третьего COGL>поля price .............. (соответственно и группировал) ..... >>>>> COGL>примерно так .... COGL>Если было COGL>AdvrtName ConstrType Price COGL> 1 1 32 COGL> 1 1 25 >>>>> COGL>чтобы в Excele было так........ COGL>AdvrtName ConstrType Price COGL>1 1 57
COGL> в Qreporte получалось а вот в Excele он пишет ошибку почему? >>>>> COGL>помогите пожалуйста
Здравствуйте Xenia,
эту проблему я решила у меня теперь другая возникла если можно подскажите как сделать отчет в excele построенный по такому принципу>>>>>>
у меня 4 поля(1,2,3,4) на форме есть Edit1 потом я ввожу в него данные он ищет их по полю 1 ... через QUery примерно так ...
query1.sql.add('Select AdvrtName, ConstrType, sum( price) from base.db where
AdvrtName='''+Edit1.Text'''' group by ConstrType, AdvrtName');
потом так.......
XArr[2]:=Query1.FieldByName('4').AsString;
XArr[3]:=Query1.FieldByName('3').AsString;
XArr[4]:=Query1.FieldByName('2').AsString;
XArr[1]:=Query1.fieldbyName('1').asstring;
он выводит данные в столбцах ...
а мне нужно ... таким образом
чтобы они выводились в строку так можно?
Здравствуйте CO0lGirL, Вы писали:
COGL>кто нибудь подскажите как надо создавать шаблоны на отчеты.... если можно поподробнее.......
В твоем случае — трудно сказать, Query сильно портит простоту дела. :)
Я сделал наоборот. Приведу способ, который работает, и неплохо.
Готовится шаблон (натуральный .xlt в Ёкселе) с шапкой отчета, колонтитулами типа "Страница 1 из 5", постоянными строками шапки (если он многостраничный) и формулами между столбцами (об этом позже).
Все переменные ячейки (ячейки, значение которых будет изменяться в каждом отчете) заполняются специальными значениями.
Например, поле, которое будет содержать строку "Счет-фактура №129 от 12.02.2002", в шаблоне содержит строку "#title".
Этот шаблон содержит одну-единственную строку данных со столбцами (которая будет размножаться, в зависимости от количества выводимых в отчет записей).
Как все это работает.
Программа на C++ готовит табличный набор данных (например, ADO Recordset) и передает его модулю создания отчета. Его можно писать на том же c++, но проще — на VB или на скриптовых языках (у меня работает на JScript), так как только этот модуль (или скрипт) будет взаимодействовать с Excel.
Модуль, соответственно, создает Workbook на базе шаблона, определяет его рабочую область и находит место, которое будет размножаться табличными данными, а также другие спец-ячейки (например, "#title"). Он, соответственно, заменяет спецсимволы на значения из набора данных и заполняет шаблон.
Это я упрощаю, если надо подробно — могу скрипт привести.
Преимущества такого подхода следующие: почти любые юзеры умеют работать в Excel, значит, могут легко изменять шаблон (шрифты, начертания, порядок столбцов и т.д.). Кроме того, в шаблоне нет ни одного макроса, что успокаивает, если есть проблемы с вирусами.
Дальше, если в строке данных есть, скажем, столбцы "цена" и "количество", то столбец "сумма" можно сделать на формулах Ёкселя — при копировании они посчитаются.
Ну и общий плюс — юзер часто любит сохранять отчеты на диск, а Excel для этого — самое то :)
Попробуй записать макрос в Excele, а потом посмотри его.
Я обычно для несложных отчетов делаю так, ставлю на запись макрос, набрасываю примерный отчет, останавливаю макрос, копирую его, вставляю в свой код, подправляю и все, 15 мин-отчет готов. К тому же в MSOffice есть файл с иерархией объектов Excel. А для сложных отчетов шаблоны, действительно идеальное решение.
Здравствуйте Vogul, Вы писали:
V>Здравствуйте CO0lGirL, Вы писали:
V>Попробуй записать макрос в Excele, а потом посмотри его. V>Я обычно для несложных отчетов делаю так, ставлю на запись макрос, набрасываю примерный отчет, останавливаю макрос, копирую его, вставляю в свой код, подправляю и все, 15 мин-отчет готов. К тому же в MSOffice есть файл с иерархией объектов Excel. А для сложных отчетов шаблоны, действительно идеальное решение. >>>>>>>>>>>>>>>
да а только где взять пример создания шаблона?