Текущий архив: 2009.09.13;
Скачать: CL | DM;
Вниз
Использование скриптов в программе Найти похожие ветки
← →
Kris_ © (2009-07-13 19:57) [0]Здравствуйте!
У меня сложный вопрос (даже не про скрипты сами по себе), может быть посоветуете мне что-нибудь.
Нужно реализовать несложную программу. Есть несколько больших файлов в OpenOffice.Calc. В них данные типа БД. Необходимо выгрузить эти данные в каккуюнибудь базу данных, организовать простенький ввод с проверками, и самое главное - выдавать отчеты по этим данным. Желательно в ОО. Плюс программа должна быть сетевой (т.е. данные лежать на одном из компов).
Т.к. программа простая, а лиц у меня никаких нет, то я хотела изобразить что-то на бесплатных средствах, и так, чтоб побыстрее было (зависит от оплаты).
Вначале я пробовала использоватьтот же ОО, и его базы данных OO.BASE. Но они работают так ужасно, тормоза и глюки, что отказалась от этой мысли.
В конце всего решила использовать Turbo Delphi. Проблема выбора БД при таком раскладе решается быстро - fireBird, доступ можно организовать через АДО. А т.к. туда нельзя встраивать компоненты, то вариант вывода отчетов с помощью недорогих и красивых FR отпадает. Если выводит вручную в ОО, то проблема добавления новых отчетов. Если с помощью генератора, то быстро, а если каждый вручную из Дельфи выводить - то долго и не хочется.
У меня есть генератор отчета, написанный мною на FoxPro9, выводит данные в ОО.calc с помощью шаблона. Создается шаблон в ОО.calc, а затем программа сама заполняет его данными, делает группы и т.д.
Я пробую переписать его под Дельфи. но наткнулась на задачу.
В шаблоне есть клеточки с переменными, например,
$"в лице директора"+p_fio_dir
т.е. из фокса все решается просто пишется EVALUATE() c параметрами в виде строки с переменными и полученный результат выводится в ячейку Calc-а.
Как реализовать это на Дельфи? Вроде бы скриптами можно. Разбираюсь со скриптами, но так как эта тема для меня новая - ума не приложу с чего начать.
Получается в ячейке должна быть чуть ли ни целая функция написана с описаниями переменных, а как тогда получить доступ к переменным в программе Дельфи? или как передать параметры в скрипт? Я читаю теорию по использованию TScriptControl Но пока туго идет и очень много информации.
http://podgoretsky.com/ftp/Docs/Delphi/Tenser/7/
Как бы вы это реализовывали?
Может быть у кого-то есть советы по написанию проги на бесплатных или почти бесплатных средствах? может быть есть генераторы, о которых я не знаю и их можно подключить в рантайме турбо-дельфи?
Спасибо.
← →
Сергей М. © (2009-07-13 20:15) [1]Удалено модератором
← →
Сергей М. © (2009-07-13 20:21) [2]Т.е. есть некий заказчик, который под страхом смерной кары требует, чтобы в твоем "творчестве" так или иначе, прямо или кривокосвенно фигурировал OpenOffice, так ?
← →
Anatoly Podgoretsky © (2009-07-13 20:30) [3]> Сергей М. (13.07.2009 20:21:02) [2]
Вполне возможно
← →
Kris_ © (2009-07-13 20:31) [4]не придирайтесь к словам, пожалуйста.
← →
Kris_ © (2009-07-13 20:32) [5]я выразилась так, объясняя, что данные во всех файлах идентичны (поля и данные в строках), образуют единообразную структуру. Каждый файл заполняется отдельным менеджером.
← →
Kris_ © (2009-07-13 20:35) [6]Сергей М., в чем ваш вопрос? заказчик, как обычно, не знает, чего хочет. Просто обычно им удобнее манипулировать результатами запросов именно в таблицах.
← →
turbouser © (2009-07-13 20:38) [7]
> Kris_ © (13.07.09 19:57)
> то вариант вывода отчетов с помощью недорогих и красивых
> FR отпадает.
не совсем :)
http://www.fast-report.com/ru/download/free-report-download.html
← →
Kris_ © (2009-07-13 20:46) [8]turbouser,
Все прочие компоненты отпадают потому, что их нельзя добавить в турбо-дельфи. т.е. добавить можно лишь в рантайм. Я с трудом это себе представляю с генератором отчетов.
Пожалуйста, предложите мне то, что я еще не рассматривала..
← →
KilkennyCat © (2009-07-13 20:49) [9]Может, это пиар сайта Анатолия? такой хитрый :)
Собственно, я попытался вникнуть, че-то понял, че-то непонял...
Я бы опять сказанул по поводу нечеткого ТЗ.
Kris_, наиишет все четко, а то сумбур сплошной. Хоть нормальным блок-схемом. А то смешали и глобальные задачи, и частные ... все в одну кучу.
← →
Сергей М. © (2009-07-13 20:52) [10]
> не придирайтесь к словам
Выражение "данные типа БД" из уст Автора говорит, увы, о многом..
> в чем ваш вопрос?
Вопрос в том, кто из вас обозначил ОО как непременный фигурант проекта)..
← →
Anatoly Podgoretsky © (2009-07-13 20:55) [11]
> Может, это пиар сайта Анатолия? такой хитрый :)
У меня самый полный Тенцер в Сети.
← →
Kris_ © (2009-07-13 20:58) [12]KilkennyCat,
общая задача описана нормально - нужна простая программа, некая база данных и простенький интерфейс к ней - ввод данных и отчеты.
Частный вопрос в том, можно ли написать на дельфи некий аналог функции EVALUATE() foxpro. Для того, чтобы добавить функциональности генератору отчетов.
Сергей М, я полагаю, вы остановились тут съязвить? Вам нужно фамилию назвать? народ привык работать в ОО.calc. Есть другие предложения?
я писала: "Желательно в ОО." Где вы видите "непременно"? Для того и вопрос задан, чтобы посоветоваться.
← →
Kris_ © (2009-07-13 21:00) [13]
> Может, это пиар сайта Анатолия? такой хитрый :)
ага, отправленный в "прочее".
← →
Сергей М. © (2009-07-13 21:02) [14]
> Где вы видите "непременно"?
Да хотя бы здесь:
> Есть несколько больших файлов в OpenOffice.Calc
← →
Сергей М. © (2009-07-13 21:04) [15]
> полагаю, вы остановились тут съязвить?
Да.
И посему остерегайтесь необдуманных выражений мысли программиста
← →
Игорь Шевченко © (2009-07-13 21:04) [16]
> Частный вопрос в том, можно ли написать на дельфи некий
> аналог функции EVALUATE() foxpro
можно
← →
Kris_ © (2009-07-13 21:05) [17]Сергей М., это исходные данные, так сказать. Вы против?
если есть у вас соображения по делу я выслушаю. Но пока - лишь только странные придирки.
← →
Kris_ © (2009-07-13 21:08) [18]Игорь Шевченко, как? Подскажите, пожалуйста. В этом и был вопрос.
Сергей, уговорили, упала ниже плинтуса - я не программист, я кнопко.. как там?. Не надо ко мне таких высоких требований предъявлять.
← →
Сергей М. © (2009-07-13 21:09) [19]
> Kris_ © (13.07.09 21:05) [17]
Нет, не против.
А выходные данные программы в виде ОО-документа ТОЖЕ строго обозначен заказчиком ?)
← →
Anatoly Podgoretsky © (2009-07-13 21:10) [20]дав там
← →
Сергей М. © (2009-07-13 21:11) [21]
> Kris_ © (13.07.09 21:08) [18]
А вот так низко нагибаться, барышня, опасно)
← →
turbouser © (2009-07-13 21:13) [22]
> Kris_ © (13.07.09 20:46) [8]
Как раз с генератором отчетов в этом случае все просто...
← →
Anatoly Podgoretsky © (2009-07-13 21:13) [23]Пытаемся понять обоснованность ОО
← →
Сергей М. © (2009-07-13 21:14) [24]
> Anatoly Podgoretsky © (13.07.09 21:13) [23]
Угу
← →
Игорь Шевченко © (2009-07-13 21:17) [25]вот так например:
http://www.google.ru/search?q=%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9+%D0%B2+Delphi&hl=ru&lr=&newwindow=1&start=10&sa=N
на delphikingdom.com был пример вычислятеля выражений.
опять же, можно преобразовать в макрос OO.Calc и пусть сам Calc вычисляет.
Все-таки, я согласен с Сергеем - все смешалось в кучу, опенофис, база, отчеты, задача непонятная, но создается впечатление, что все зависит от аналога Evaluate, а все остальные моменты - пара несущественных пустяков.
Вы б донесли до общественности, где у вас появляются выражения, которые надо Evaluate - в базе, в исходных данных, в отчете надо получать по данным базы - глядишь, и разговор пойдет более предметный и занимательный.
← →
Игорь Шевченко © (2009-07-13 21:19) [26]Anatoly Podgoretsky © (13.07.09 21:13) [23]
Сергей М. © (13.07.09 21:14) [24]
Эт вы зря, ОО это хорошо. В том плане, что для крупных объектов автоматизации за лицензии Ms Office платить не надо.
← →
Сергей М. © (2009-07-13 21:19) [27]
> Anatoly Podgoretsky © (13.07.09 21:10) [20]
Это что, новая технология ?
Просвети пож ..
← →
Сергей М. © (2009-07-13 21:22) [28]
> Игорь Шевченко © (13.07.09 21:19) [26]
> В том плане, что для крупных объектов автоматизации
Мы тут еще ни про какие объекты - ни про крупные, ни про иные - не слышали.
Автор ведь сразу в позу...
В известную)
← →
Kris_ © (2009-07-13 21:23) [29]Игорь, если бы вы почитали внимательно первый пост, то было бы ясно где появляются выражения. Там даже пример приведен.
Мне не нужны математические выражения. Мне нужно другое.
вы не вчитались, поэтому это у вас все в кучу.
Какие "остальные моменты"? Для меня все существенно.
Куда еще можно вывести отчет? "обоснованность ОО" есть предложения - давайте. Какая вам нужна обоснованность? Вопрос не только что родился, я уже много вариантов перебрала.
Сергей, если вам скучно, то давайте в другой теме обмениваться остротами. Только если вы больше не будете оскорблять своими милыми шутками меня.
← →
Сергей М. © (2009-07-13 21:29) [30]
> Kris_ © (13.07.09 21:23) [29]
Я Вас всего лишь спросил - КТО из вас - Вы или Заказчик - обозначил ОО как НЕПРЕМЕННЫЙ фигурант проекта)
← →
turbouser © (2009-07-13 21:31) [31]
> Kris_ © (13.07.09 21:23) [29]
Тот же FreeReport. Качаем,распаковываем куда-нибудь.
Кидаем русские ресурсы из папки res в папку source.
В опциях своего проекта задаем в search path папку source FreeReport-a.
Добавляем в uses все что нам потребуется - и вуаля! Пашет =))))unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, FR_Class, FR_DSet, FR_DBSet,
FR_OLE, FR_Rich, FR_ChBox, FR_Shape, FR_BarC, FR_RRect,
FR_Desgn, FR_View, FR_Dock, FR_Ctrls, FR_DBOp,
FR_E_TXT, FR_E_RTF, FR_E_CSV, FR_E_HTM, FR_Const, StdCtrls, DB, DBClient;
type
TForm1 = class(TForm)
btnDesignReport: TButton;
btnLoadReport: TButton;
ClientDataSet1: TClientDataSet;
ClientDataSet1ID: TIntegerField;
ClientDataSet1NAME: TStringField;
procedure btnDesignReportClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnLoadReportClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Report: TFrReport;
DBDataSet: TfrDBDataSet;
implementation
{$R *.dfm}
procedure TForm1.btnDesignReportClick(Sender: TObject);
begin
Report.DesignReport;
end;
procedure TForm1.btnLoadReportClick(Sender: TObject);
begin
Report.LoadFromFile("c:\test.frf");
Report.ShowReport;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Report.Free;
DBDataSet.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DBDataSet := TfrDBDataSet.Create(Self);
DBDataSet.DataSet := ClientDataSet1;
Report := TFrReport.Create(Self);
Report.Dataset := DBDataSet;
end;
end.
← →
Игорь Шевченко © (2009-07-13 21:31) [32]Kris_ © (13.07.09 21:23) [29]
ну так подготовьте шаблон не для foxpro. заносите данные из базы на отдельный лист, а дальше пусть ОО работает согласно шаблону.
> Мне не нужны математические выражения
я сильно извиняюсь, но функция Evaluate в foxpro вычисляет именно выражения. В том числе и математические. И вычислятели для Delphi тоже не только числа умеют складывать, но и строки. Впрочем, ОО это умеет делать гораздо ненапряжнее для программиста.
← →
Сергей М. © (2009-07-13 21:34) [33]
> turbouser © (13.07.09 21:31) [31]
> FreeReport. Качаем,
> Кидаем
> Добавляем
Ты очумел ?)
ОО же заявлен !!!
И на входе и на выходе)
Какой нахрен FR?)
← →
turbouser © (2009-07-13 21:38) [34]
> Сергей М. © (13.07.09 21:34) [33]
да ну?
> Т.к. программа простая, а лиц у меня никаких нет, то я хотела
> изобразить что-то на бесплатных средствах...
> Может быть у кого-то есть советы по написанию проги на бесплатных или почти
> бесплатных средствах? может быть есть генераторы, о которых я не знаю и
> их можно подключить в рантайме турбо-дельфи?
← →
Сергей М. © (2009-07-13 21:44) [35]
> turbouser © (13.07.09 21:38) [34]
Ну да !
Цитирую:
> Есть несколько больших файлов в OpenOffice.Calc. В них данные
> типа БД
← →
Игорь Шевченко © (2009-07-13 21:46) [36]
> Цитирую:
дальше цитируй :)
← →
Сергей М. © (2009-07-13 21:47) [37]
> есть генератор
> выводит данные в ОО
А это выход.
> turbouser © (13.07.09 21:38) [34]
И какие сомнения ?
Автор изначально видит предполагает ОО и на входе и на выходе.
Я ошибаюсь ?
← →
Kris_ © (2009-07-13 22:01) [38]turbouser, это я знаю все, как создать шаблон отчета frf? который
>Report.LoadFromFile("c:\test.frf");
?
Сергей, еще раз повторяю. У меня есть генератор, написанный на фоксе, использует шаблон - это файл самого CAlC. В нем можно ручками написать в ячейке - цитирую$"Таким образом, товарооборот Арендатора в Помещении за отчетный квартал (Ткв) составляет "+p_sumTOOBval+" долларов США, с учетом НДС."
Т.е. можно подправить отчет и не трогать прогу. Вот это выражение мне надо "вычислить". sumTOOBval - это переменная, вычисляемая в тексте программы. Это функциональность необходима в генераторе. В моем генераторе.
> я сильно извиняюсь, но функция Evaluate в foxpro вычисляет
> именно выражения. В том числе и математические. И вычислятели
> для Delphi тоже не только числа умеют складывать, но и строки.
> Впрочем, ОО это умеет делать гораздо ненапряжнее для программиста.
>
да, но мне не нужна математика - я объяснила выше что именно мне нужно.
Все после $ подставляется в функцию VALUATE() и в ячейку генератор посылает результат.
← →
turbouser © (2009-07-13 22:04) [39]
> Kris_ © (13.07.09 22:01) [38]
Oo
DisignReport - а там сохранить...
← →
Игорь Шевченко © (2009-07-13 22:04) [40]
> Все после $ подставляется в функцию VALUATE() и в ячейку
> генератор посылает результат.
Это не может не радовать.
То есть, стоит задача создать отчет по шаблону, сделанному для FoxPro, только на Delphi и данные брать из Firebird ?
← →
Kris_ © (2009-07-13 22:04) [41]файлы ОО, которые даны изначально я без проблем передам в БД.
Такого вопроса у меня нет (если это именовалось под "остальными вопросами").
← →
Kris_ © (2009-07-13 22:08) [42]Игорь, вы что - издеваетесь?
я хочу написать такой же для дельфи. Этот шаблон не подоходит? дельфи не может строку прибавить к переменной строке? что в нем не так? где написано в ОО, что этот шаблон только для фокспро?
← →
Сергей М. © (2009-07-13 22:11) [43]
> Kris_ © (13.07.09 22:01) [38]
> У меня есть генератор, написанный на фоксе
Так.
> использует шаблон - это файл самого CAlC
Так.
> В нем можно ручками написать
В ком ?
> sumTOOBval - это переменная, вычисляемая в тексте программы
Какой ?
Твоей ? OOCalc ?
← →
Сергей М. © (2009-07-13 22:12) [44]Чудовищная каша в голове)
← →
oldman © (2009-07-13 22:15) [45]
> где написано в ОО, что этот шаблон только для фокспро?
Мама родная!
А для С он тоже подойдет? А для бэйсика? А для других "программ"?
[44] +1!
← →
Kris_ © (2009-07-13 22:15) [46]да, должна признать, я идиотка в плане объяснения чего-нибудь кому-нибудь. Извините, ну нет у меня такого таланта.
Ручками - пишут в шаблоне (его можно подправить, не трогая и не перекомпилируя программу, например,в ставить запятые или слова поменять).
В ОО.calc нет никакой программы, используется только шаблон.
← →
Kris_ © (2009-07-13 22:17) [47]
> Чудовищная каша в голове)
ты в мою голову заглядывал?
oldman, подойдет. Что в нем особенного? ШАблон - это файл с расширением odt.
← →
Сергей М. © (2009-07-13 22:21) [48]
> ты в мою голову заглядывал?
Зачем заглядывать ?
Ты сама нарисовала картину маслом)
← →
БарЛог © (2009-07-13 22:23) [49]Я, обычно, после прочтения подобных тем вспоминаю про
"Ребята, девушки, программирование я уважаю как хз что, но дело такое что мне бы гденить не толь исходник нитоль декомпилятор, как мне изменить программу написанную не моей головой, та БД что мне нужна уже есть, нужно только ее расскрыть, есть какиенить предложение и советы??? готовое я от вас непрошу, Делфи я тоже уважаю и желаю его чем быстрее познать, давай те сотрудничать в дольнейшем если даже у меня ничего не выйдет, в будущем с меня выйдет какойнить охламон по программированию на языках такого характера, P.s а глюк вот еше какой, файл *.*exe под делфю а как я понял работает от Фокса, как возможна?? что делать?? Терпеть Фокс немогу, но что то нужно делать С ув. <<имя>>
"
и перечитываю "Орешник" :)
← →
Игорь Шевченко © (2009-07-13 22:23) [50]
> Игорь, вы что - издеваетесь?
Да нет, я понять пытаюсь
> Этот шаблон не подоходит?
Для получения отчета средствами FoxPro наверное подходит.
> дельфи не может строку прибавить к переменной строке?
Может.
> что в нем не так?
Наверное все так, если он есть и через FoxPro работает.
> где написано в ОО, что этот шаблон только для фокспро?
Там где вызывается Evaluate из FoxPro, а правильно мыслю ?
← →
Игорь Шевченко © (2009-07-13 22:25) [51]я только одного не понимаю, почему не сделать настроенный не на FoxPro, а на средства самого ОО. Макросы он прекрасно умеет.
← →
Kris_ © (2009-07-13 22:28) [52]Сережа, ты извини, конечно, но я не понимаю - чем я заслуживаю такого обращения тут? Я на этом форуме не первый день, давно, правда не заходила, но прекрасно знаю и помню кто тут есть кто, в том числе и твой ник отлично помню, как и долгие обсуждения тут "взлетит - не взлетит". Просто давно не занималась дельфи - и обратилась за помощью, понимаешь это слово? Я еще раз перечитала свой первый пост и не вижу в нем никакой каши, неясностей и т.д. Я задала конкретный вопрос, и не просила обсуждать "зачем мне ОО" и т.д. и кто мне дал такое задание. Даже не знаешь другой раз куда обратиться, потому что все темы начинаются и заканчиваются обсуждением каких-то "поз" (прошвырнулась по соседним темкам). Ну не всем это нужно и не у всех есть время.
Три страницы "обсуждения" и ни о чем.
В последний раз отвечаю тебе вполне сдержанно.
← →
Kris_ © (2009-07-13 22:30) [53]Игорь, EVALUATE() было в программе фокспро. То , что написано в ячейке шаблона я приводила.
← →
Игорь Шевченко © (2009-07-13 22:33) [54]Kris_ © (13.07.09 22:30) [53]
Замечательно. Теперь надо чтобы программа на delphi вычислила эту строку точно также, как это делает Foxpro, я правильно понимаю ?
← →
Kris_ © (2009-07-13 22:34) [55]
> Макросы он прекрасно умеет.
я сама писала этот генератор, я знаю возможности ОО и то, что именно он умеет, как им управлять и т.д.
Программа вычисляет переменные, данные, цифры и т.д. ОО в данном случае лишь представляет данные в организованном виде. Зачем мне тут нужны макросы? как их использовать? Я приводила пример. Объясните мне, как вывести строку
Таким образом, товарооборот Арендатора в Помещении за отчетный квартал (Ткв) составляет 2000 долларов США, с учетом НДС.
в документ ОО.calc, где 2000 есть вычисленная сумма? О том, что яне хочу каждый раз вручную делать отчеты - я писала в верхнем посте. Т.е. выдать в каждую отдельную ячейку некий текст - не проблема. Я хочу генератор.
← →
Kris_ © (2009-07-13 22:35) [56]
> Замечательно. Теперь надо чтобы программа на delphi вычислила
> эту строку точно также, как это делает Foxpro, я правильно
> понимаю ?
Правильно! я и писала "некий аналог функции EVALUATE()" или выразилась как-то так. В самом начале.
← →
Kris_ © (2009-07-13 22:38) [57]Я думала, что это можно сделать при помощи Microsoft ScriptControl, и обратилась за помощью к тем, кто опытный в этом вопросе и скажет - можно ли это сделать с помощью данного инструмента. И главное - как это реализовать - хотя бы алгоритм. Я смогу, уверяю вас, солнышки.
← →
Сергей М. © (2009-07-13 22:40) [58]
> Я на этом форуме не первый день
Тогда ты не могла не заметить, что за фразу "данные типа БД" здесь сразу посылают лесом тех, кто задал вопрос в иных конф-х, нежели в "Потрепаться".
← →
Kris_ © (2009-07-13 22:43) [59]Сергей, я объяснила тебе, что именно имела ввиду под этой фразой. Если не хочешь помогать - к чему весь этот треп? Я же сказала - мне далеко до таких умных как ты, поэтому я, глупая, и обратилась за помощью.
Давайте начнем дискуссию о женщинах и программистах. Я - женщина. Нельзя ли помочь? или у тебя проблемы?
← →
Игорь Шевченко © (2009-07-13 22:44) [60]
> Объясните мне, как вывести строку
> Таким образом, товарооборот Арендатора в Помещении за отчетный
> квартал (Ткв) составляет 2000 долларов США, с учетом НДС.
>
> в документ ОО.calc, где 2000 есть вычисленная сумма?
поместить на отдельный лист в отдельную ячейку вычисленную сумму.
В нужной ячейке, где нужна упомянутая строка, написать формулу:
CONCATENATE("Таким образом, товарооборот Арендатора в Помещении за отчетный квартал (Ткв) составляет ";тут имя ячейки; "долларов США, с учетом НДС.")
← →
Kris_ © (2009-07-13 22:49) [61]
> поместить на отдельный лист в отдельную ячейку вычисленную
> сумму.В нужной ячейке, где нужна упомянутая строка, написать
> формулу:CONCATENATE("Таким образом, товарооборот Арендатора
> в Помещении за отчетный квартал (Ткв) составляет ";тут имя
> ячейки; "долларов США, с учетом НДС.")
как вариант подошло бы, надо подумать.
ОДно но - генератор - универсальная вещь для любого отчета. Не везде есть суммы и т.д. Переменные разные и их число разное.
← →
Игорь Шевченко © (2009-07-13 22:59) [62]Я бы завел отдельный лист в каждом шаблоне, в ячейки которого из программы поместил бы нужные для отчета данные. Сами шаблоны настроил бы на использование значений этих ячеек. В конце концов, формулы тоже можно из программы в ячейки записывать, так что если требуется какой-то хитрый алгоритм, его можно реализовать минимум в двух местах - в самой программе и в шаблоне.
> ОДно но - генератор - универсальная вещь для любого отчета.
> Не везде есть суммы и т.д. Переменные разные и их число
> разное.
Я надеюсь, что для каждого "любого отчета" имеется соответствующий этому конкретному отчету шаблон ?
Его и надо будет переделать на использование средств OpenOffice вместо FoxPro
← →
Игорь Шевченко © (2009-07-13 23:01) [63]На мой взгляд это наименее геморройный способ, вместо того, чтобы встраивать ScriptControl и писать скрипты на javascript или на visual basic script
← →
Сергей М. © (2009-07-13 23:04) [64]
> обратилась за помощью
> у кого-то есть советы по написанию проги на бесплатных или
> почти бесплатных средствах
Я и спросил : ОО обязан фигурировать в этих советах ?
← →
Kris_ © (2009-07-13 23:07) [65]я все-таки не пойму в чем универсальность будет? передать в ячейку данные легко. Нужно передать в конкретную ячейку определенные данные - это уже сложнее.
Когда я вписываю в ячейку имя поля таблицы, то прочитать это имя и обратиться к данным таблицы легко - есть специальная функция - имя поля и все просто. А вот обратиться к переменной по ее имени..
..с переменными - не очень подходит. МОжно завести лист и выводить туда что? в каком порядке? есть переменных много - и фио, и суммы и т.д. для каждого отчета свои данные. Еще раз - не вижу универсальности или не понимаю о чем вы говорите. Хочу понять.
← →
Kris_ © (2009-07-13 23:10) [66]Сергей, я отвечала вам уже на этот вопрос.
Повторю еще раз - Не обязан. Пользователи привыкли им пользоваться - раз. А второе, если даже найти способ выводить отчет на экран как это делает FR, то где гарантия, что они не скажут - "фу, а мы так не хотели..". Я писала - что заказчик в данном случае "сам не знает чего хочет". Что тут не ясно? У вас есть предложения? я их просила. Четвертая страница - и ничего. Я работаю уже больше 10 лет, и не вчера придумала все это, и уже столько же лет общаюсь с заказчиками. У вас что к ОО - личное?
← →
Сергей М. © (2009-07-13 23:18) [67]
> выводить отчет на экран как это делает FR
Тот же самый FR способен экспортировать генерируемые им отчеты во многие популярные контейнерные форматы.
Нахрена при этом знать о существовании какого-то там ОО ?
← →
Сергей М. © (2009-07-13 23:31) [68]
> У вас что к ОО - личное?
Это не у меня, это у Вас к нему "личное" - Вы жужжите про него уже 6 десятков постов, не дав при этом ни единого вразумительного объяснения тому, зачем оно кому-то надо, кроме а-ля "булгактерша привыкла"
← →
Kris_ © (2009-07-13 23:31) [69]Сергей, в turbo delphi нельзя установить FR. Я уже это два раза писала. Опять виновата, что ты меня плохо понимаешь.
← →
Kris_ © (2009-07-13 23:33) [70]
> кроме а-ля "булгактерша привыкла"
ух ты :) а ты их переучиваешь, поросят таких? чтоб делали как надо!
← →
Игорь Шевченко © (2009-07-13 23:37) [71]Kris_ © (13.07.09 23:07) [65]
> я все-таки не пойму в чем универсальность будет?
А какого рода нужны универсальность ?
> Нужно передать в конкретную ячейку определенные данные -
> это уже сложнее.
Не совсем понимаю, в чем сложность передать определенные данные в конкретную ячейку или в конкретный поименованный диапазон ячеек. Вроде несложно.
> Когда я вписываю в ячейку имя поля таблицы, то прочитать
> это имя и обратиться к данным таблицы легко - есть специальная
> функция - имя поля и все просто.
Еще бы узнать, где она есть, эта функция ? В ОО, в FoxPro, еще где-нибудь ?
Я так понимаю, что хочется нечто вроде "вот у меня есть шаблон для программы на FoxPro, я хочу то же самое, без существенных изменений шаблона, но программа должны быть на Delphi, а данные будут браться из Firebird" - тут я не помощник на разу, я FoxPro не знаю, виды нужных отчетов не представляю, требований к универсальности не слышал.
Я излагаю, как бы я строил отчеты при заданных условиях - есть база данных, есть программа, есть шаблоны отчетов, на основании этих шаблонов и содержимого базы надо получить отчеты с данными, причем, половину или больше работы переложить на OpenOffice - группировки, итоги, сводные таблицы, диаграммы и т.п.
Задача даже решается, если на отдельном листе положить в ячейки специальные ссылочные имена, типа #Amount, #Period, в программе прочитать этот лист и понять, что для данного конкретного шаблона поле из базы данных/переменную c именем Amount нужно положить именно в эту конкретную ячейку (B5, к примеру), так как шаблон ожидает занчение с этим смыслом в этой ячейке.
← →
Сергей М. © (2009-07-13 23:42) [72]
> в turbo delphi нельзя установить FR
Можно. Если постараться. И головой, конечно же, поработать.
А если и нельзя, то альтернатив ему - вагон с тележкой.
Если, конечно же, не лупиться денно и нощно в ОО и не потакать дурацким капризам булгактерш, не способным даже сформировать нечто мало-мальски схожее с ТЗ.
← →
Kris_ © (2009-07-14 00:29) [73]Всем спасибо.
Сергей, тебе отдельное, большое, научил наконец-то работать, а то я не знала как и чем мне работать, и нужно ли стараться.
← →
Skyle © (2009-07-14 08:41) [74]Ну ладно, раз уж начали с чтения такой статьи, то ....
Вы уже научились передавать свои данные внутрь скрипта, который выполняется в ScriptControl? Или в этом как раз и заключается проблема?
← →
Skyle © (2009-07-14 08:54) [75]Дополню.
> Skyle © (14.07.09 08:41) [74]
Статья, что вы указали в [0], полностью вам не нужна, если вы не собираетесь делать GUI с помощью скриптов. Вам достаточно обратить внимание на метод AddObject. Реализовав com-объект внутри своей программы с нужным интерфейсом и добавив его в хост вы затем сможете совершенно элементарно строить любые отчёты. Самый простой пример. Допустим, ваш объект называется Reporter и у него есть метод QueryOpen, возвращающий, для простоты, массив. После этого ваша реализация гибкого отчёта решается элементарно, примерно так
Dim Data()
Data = Reporter.QueryOpen("MyMegaReportStoredProc")
Excel.Cells(I, J).Value = "Таким образом, товарооборот Арендатора в Помещении за отчетный квартал (Ткв) составляет " & Data(0) & " долларов США, с учетом НДС."
Excel.CellS(I, J + 1).Value = "В лице директора " & Data(1) & " сим повелеваю: установить арендную плату в размере " & Data(2) & " очень условных единиц"
← →
Наиль © (2009-07-14 09:48) [76]Для работы с ООo я предложил бы использовать отличную библиотеку:
http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=405083&pg=18
С другой стороны я бы попробывал использовать готовое решение, а конкретно Бизнес Пак.
http://www.pvision.ru/bp.htm
В нём реализованы все требуемые возможности, кроме использования собственных баз данных (но прикрутить своё можно попробывать). Но у меня подозрение, что и того, что там есть может хватить для поставленой задачи.
Что касается использования стороних построителей отчёта, а в частности FastReport, то их вполне можно использовать и в RunTime, см. [31]. Тем более, что в них имеют встроенные редакторы отчёта. FreeReport"ом не пользовался, поэтому не знаю если ли в нём RunTime-редактор, но если очень нужны frf-файлы, то их лёгко подготовить тем же БизнесПаком.
> Игорь Шевченко © (13.07.09 22:59) [62]
> Я бы завел отдельный лист в каждом шаблоне, в ячейки которого
> из программы поместил бы нужные для отчета данные. Сами
> шаблоны настроил бы на использование значений этих ячеек.
> В конце концов, формулы тоже можно из программы в ячейки
> записывать, так что если требуется какой-то хитрый алгоритм,
> его можно реализовать минимум в двух местах - в самой программе
> и в шаблоне.
Согласен, что для программиста такой вариант оптимален, т.к. для подготовки шаблона подойдёт любой пользователь со средним знанием Calc/Excel. Создаёшь программу, а пользователи по существующим данным могут создавать любые шаблоны.
Я бы сделал так:
Первый лист для шаблона, второй для одиночных данных, таких как "Адрес", "Расшифровка подписи" и т.п.
Остальные листы для таблиц.
Но при таком подходе есть огромная сложность (неактуальная для автора ветки), если таблица переменной длины, то расположение подписи простой пользователь задать не сможет. Можно конечно расположить подписи в самом низу листа, а строки между последней строкой таблицы и подписями скрывать, но это не лучший вариант.
С одной стороны использование OOo удобство, т.к. можно свалить всю черновую работу на пользователей: "Делайте отчёты, какие захотите", но с другой строны - сложности с совметимостью, долгий запуск последних версий и другие проблемы (Об этом и намекал Сергей М.)
ИксРепорт (где Икс = Free/Fast/Cristal и т.п.) - это скорость работы, независимость от компьютера. Но для изменения отчётов требуется средний уровень знаний ИксРепорт, а это редкость для классического пользователя. Поэтому работа по составлению отчётов опять ляжет на программиста.
← →
Kris_ © (2009-07-14 09:55) [77]
> Skyle © (14.07.09 08:41) [74]
> Ну ладно, раз уж начали с чтения такой статьи, то ....Вы
> уже научились передавать свои данные внутрь скрипта, который
> выполняется в ScriptControl? Или в этом как раз и заключается
> проблема?
Skyle, я пока не знаю что куда передавать.
> Dim Data()Data = Reporter.QueryOpen("MyMegaReportStoredProc")Excel.
> Cells(I, J).Value = "Таким образом, товарооборот Арендатора
> в Помещении за отчетный квартал (Ткв) составляет " & Data(0)
> & " долларов США, с учетом НДС."Excel.CellS(I, J + 1).Value
> = "В лице директора " & Data(1) & " сим повелеваю: установить
> арендную плату в размере " & Data(2) & " очень условных
> единиц"
где должен быть написан этот текст? я думала в целевой ячейке. Но тогда зачем тут Excell.Cells?
Я думала что должно быть в этой ячейке - это присваивание переменной значения:Dim StrVar
StrVar = "Таким образом, товарооборот Арендатора в Помещении за отчетный квартал (Ткв) составляет " & ProgramVar1 & " долларов США, с учетом НДС."
А вот как оттуда получить значение именно ProgramVar1 я не знаю пока.
Сам объект ОО_report у меня создается, естественно, и используется в программе. Похоже - мне понадобится еще один специальный объект - с исходными данными для кода в ячейке? т.е. Programvar1 должна быть описана в объекте? Тогда к ней можно доступ получить?
А потом ParseScriptText получить это значение в программу. А оттуда уже обратно в ячейку в виде value как у вас Excell.Cells().Value...
Если можно еще раз что где должно быть..
← →
Kris_ © (2009-07-14 10:07) [78]
> Но при таком подходе есть огромная сложность (неактуальная
> для автора ветки), если таблица переменной длины, то расположение
> подписи простой пользователь задать не сможет. Можно конечно
> расположить подписи в самом низу листа, а строки между последней
> строкой таблицы и подписями скрывать, но это не лучший вариант.
>
Понимаете, повторюсь, у меня уже эта вся функциональность есть - и группы и сдвиги и подписи, и формулы и т.д. - все это строится уже на раз два.
Насчет актуальности ОО для пользователя - давайте уже не спорить. У нас на него полгорода перешли - стоит на каждой машине! Юзер уже давно привык и к скорости и ко всем его недостаткам. Ну нету у нас такой проблемы.
Так же у меня нет проблемы с выводом чего-либо в ОО, мне не нужны библиотеки, весь механизм вывода, функции, скрытия, раскрытия, шрифтов и т.д. - уже давно изучен мною и есть написанная мною библиотека и перевести этот функционал на дельфи элементарно аналогичными командами - в этот тоже нет никакого вопроса..
Все остальное посмотрю. FR я тоже использовала, но вся загвоздка в том, что его для начала купить надо. Это как вариант.
Что касается каких-то новых отчетов, когда есть генератор, то пользователь вряд ли будет копаться в шаблонах, разве только очень умный и тот под контролем. Я в первом топике писала, что так мне проще будет. На создание нового уйдет 2 часа, вместо 2 дней, когда я буду из программы вносить в каждую отдельную ячейку данные, а потом высчитывать - куда мне вставить еще одну таблицу и после какой строки. А так же то, что вы предлагаете - отдельный лист с переменными - это тоже по сути ручная работа программисту. Не для пользователя я стараюсь.
← →
turbouser___ (2009-07-14 10:22) [79]
> Kris_ © (14.07.09 10:07) [78]
> FR я тоже использовала, но вся загвоздка в том, что его
> для начала купить надо. Это как вариант.
Зачем покупать FREE REPORT ??
Да, Free Report в отличии от своего потомка Fast Report имеет довольно
ограниченные возможности, но и того, что есть вполне должно хватить.
Ссылку на Free Report я приводил выше.
← →
Наиль © (2009-07-14 10:27) [80]
> На создание нового уйдет 2 часа, вместо 2 дней, когда я
> буду из программы вносить в каждую отдельную ячейку данные,
> а потом высчитывать - куда мне вставить еще одну таблицу
> и после какой строки. А так же то, что вы предлагаете -
> отдельный лист с переменными - это тоже по сути ручная работа
> программисту.
Второй, третий и т.д. листы - листы программиста.
На них чётко определены ячейки в которые надо вносить данные.
Поэтому высчитывать ни чего не надо. Программист такой программе не нужен.
А первый лист - лист для печати. Он делается на основе данных с остальных листов с использованием формул. На изменение такого листа требуется не более часа. И не нужно вмешиваться для этого в программу.
> Не для пользователя я стараюсь.
Вы можете сильно заболеть (не дай Бог), найти более достойную работу/зарплату (дай Бог), или просто уйти в отпуск. И что будут делать пользователи которым срочно нужно будет изменить форму отчёта?
Если Вы думаете, что им этого не понадобится, то я скажу: "Не зарекайтесь".
← →
Skyle © (2009-07-14 10:35) [81]
> Kris_ © (14.07.09 09:55) [77]
Диспозиция такая: наша программа - суть скрипт-хост. Её задача (в разрезе вывода отчётов) заключается всего в двух вещах:
1. Запустить нужный скрипт (формирующий конкретный отчёт)
2. Обеспечить скрипт необходимыми данными.
И всё. Никаких упоминаний о OOo в программе не нужно, потому как эти скрипты сами по себе могут практически что угодно.
Собственно отчёт формируется скриптом, в моих примерах это будет сделано через OLE-автоматизацию MS Office, написано на VBScript.
Допустим, нужен отчёт, выводящий в Excel прайс-лист.
Для этого мы можем сочинить примерно вот такой вот скрипт.OPTION EXPLICIT
Dim Excel, Data(), I
SET Excel = CreateObject("Excel.Application")
Excel.DisplayAlerts = False
Excel.Visible = True
Excel.WorkBooks.Add
Data = Reporter.QueryOpen("PriceListStoredProc")
Excel.Cells(1, 1) = "Наименование"
Excel.Cells(1, 2) = "Цена"
Excel.Cells(1, 3) = "Остаток"
for I = LBound(Data) to UBound(Data)
Excel.Cells(I + 1, 1) = Data(I, 0) " Наименование
Excel.Cells(I + 1, 2) = Data(I, 1) " цена
Excel.Cells(I + 1, 3) = Data(I, 2) " Остаток
Next
Сохраняем этот скрипт в файл (допустим, PriceList.vbs) и ложим где-нибудь в доступном для программы месте (например в сети). Далее, наша программа каким-то образом определяет, что пользователь хочет вывести прайс-лист и для этого используется скрипт из файла PriceList.vbs. Программа создаёт экземпляр ScriptControl, берёт весь текст из файла PriceList.vbs и передает его в ScriptControl.AddCode. Затем вызывает ScriptControl.AddObject, куда передаёт написанный нами com-объект (Reporter) и вызывает ScriptControl.Run. Как-то так.
Что при этом происходит. Объект Reporter несёт нужные нам медоты доступа к данным. В моём примере метод Reporter.QueryOpen выполняет в БД хранимую процедуру PriceListStoredProc и её результат возвращает двумерным массивом в скрипт. Далее, мы просто знаем, в каких столбцах массива лежат нужные нам значения и просто бежим по нему, подставляя в нужных местах.
По поводу ячеек и прочих формул - я не понял необходимости. В данном случае всю предварительную обработку, склеивание строк и прочего можно сделать в скрипте.
← →
Kris_ © (2009-07-14 11:39) [82]Skyle, если по вашему, я поняла в чем суть, это хороший вариант, но не поняла - в чем тогда преимущество скрипта? Единственное преимущество в этом способе я вижу, если бы в VBScript была нужная мне функция eval() например. Она там есть?
← →
Kris_ © (2009-07-14 11:42) [83]turbouser, я принимаю freeReport как вариант, но я уже писала - если пользователь надует губки и скажет, фу, мне это не надо (на экран), мне хочется выборку в Excel (ОО) я хочу делать с ней что хочу, а freeReport, по-моему не может экспортировать в ОО/Excel. К тому же я спрашивала, если вы знакомы с этим инструментов - можно ли получить файл frf - легально бесплатно его построить для использования в рантайм? я не знаю ответа на этот вопрос..
← →
Skyle © (2009-07-14 11:45) [84]
> Kris_ © (14.07.09 11:39) [82]
> но не поняла - в чем тогда преимущество скрипта
Преимущество скрипта в том, что можно делать любые отчёты не меняя программы. Изменения вносятся только в скрипт и сразу же всем доступны (в случае сетевого хранения). Программу менять придётся только в случаях, когда потребуется расширять скрипт-хост, но это очевидно не чаще, чем менять или добавлять отчёты.
> функция eval() например. Она там есть?
Функция Eval там есть, даже в двух видах. Только, хоть убейте, не понял, что вы ей собрались делать...
← →
Anatoly Podgoretsky © (2009-07-14 11:49) [85]> Kris_ (14.07.2009 11:39:22) [82]
Вроде есть, но не уверен, но не обязательно в VBScript, может быть в WSH .
← →
Anatoly Podgoretsky © (2009-07-14 11:50) [86]> Kris_ (14.07.2009 11:42:23) [83]
Может и может в Эксель, но в ОО вряд ли, поэтому тебя и пытают, почему ОО
← →
Kris_ © (2009-07-14 12:12) [87]
> Может и может в Эксель, но в ОО вряд ли, поэтому тебя и
> пытают, почему ОО
Анатолий, я же объяснила почему. Меня по-моему тут уже запытали не только этим.
> Только, хоть убейте, не понял, что вы ей собрались делать.
> ..
Увы, еще раз объяснять не имеет смысла. Если есть эта функция, то это отлично, это хороший выход.
Программу поменять нет проблемы, вообще-то. Обычно я делаю обновление сразу, выкладываю, и при запуске все скачивается через сеть (или интернет) моментально.
Кстати, еще вопрос.
Объясните еще раз, пожалуйста, что именно содержится в вашем примере в Reporter, а то я про свое думаю, видимо еще недопоняла. ЭТо объект со свойством Data (массив) в котором содержатся входные данные для скрипта (собственно, отчета). Так? Подключаем мы его из программы командой AddObject, для того, чтоб он стал виден скрипту. Верно?
И еще - как отлаживать скрипт и где смотреть, к примеру, справку по командам? в экселе встроенная справка по языку - оно или нет?
А где справка по WSH?
← →
Kris_ © (2009-07-14 12:14) [88]Skyle, а еще вопрос - как вернуть значение из скрипта в программу? А если надо массив вернуть?
← →
Anatoly Podgoretsky © (2009-07-14 12:24) [89]> Kris_ (14.07.2009 12:12:27) [87]
Так я понял объяснение, но разве это что то меняет, поддержка ОО пока еще очень, очень ограничена. Теоритически можно работать с ОО как с COM/OLE но нужна библиотека типов и непонятно как ее импортировать. Я не настолько знаком с WSH.
WSH слишком мощный и гигантский инструмент, у него нет даже ограничения по языкам и может работать с любыми COM/OLE объектами, но это надо уметь, а уметь здесь мало народу, все таки мы все ориентированы на Дельфи.
И вопрос по справке - справка у Микрософта, кое какие огрызки есть у меня на сайте, примеры и некоторая методика работы, смотри папку http://www.podgoretsky.com/ftp/Docs/WSH/ но там мало, всего три статьи, основной упор надо делать на Микрософт.
← →
Kris_ © (2009-07-14 12:30) [90]
> поддержка ОО пока еще очень, очень ограничена.
интересно - что вы имели ввиду - кем или чем ограничена?
> работать с ОО как с COM/OLE но нужна библиотека типов и
> непонятно как ее импортировать.
куда?
← →
Skyle © (2009-07-14 12:32) [91]Отвечаю по порядку.
> Kris_ © (14.07.09 12:12) [87]
> Увы, еще раз объяснять не имеет смысла
Это печально. А то может VBscript"овые Eval и Execute делают не совсем то, что ваш FoxPro"шный Evaluate. Ну да ладно, посмотрите справку, решите.
> что именно содержится в вашем примере в Reporter
Я вам писал с позиции, что статью из [0] вы всё-таки прочитали. Начиная со слов "Модель расширения TScriptControl". Reporter, это ActiveX, добавленный в вашу программу. Он экспортирует некий интерфейс, который содержит необходимый вам фукнционал, например доступа к данным и прочего.
В моём примере его интерфейс содержит метод QueryOpen, который возвращает результат выполения запроса к базе данных (да, исхожу из того, что вы всё-таки перенесли свои большие файлы OOo в БД, хотя это необязательно). Чтобы скрипту стали видны наши методы, мы должны добавить наш интерфейс в окружение этого самого скрипта с помощью ScriptControl.AddObject. Первый параметр - имя, под которым он будет доступен коду скрипта.
> ЭТо объект со свойством Data
Видимо вы незнакомы с VBScript, потому что в моём примере Data - это переменная, объявленная в скрипте, она используется для получения результатов вызова QueryOpen.
> как отлаживать скрипт
Да как обычно.. Написали, запустили, исправили, опять запустили. Вроде есть где-то отладчики, но я никогда не интересовался подробно.
> где смотреть, к примеру, справку по командам
В MSDN как водится...
> в экселе встроенная справка по языку - оно или нет?
Там справка по VBA, это немного другое. В принципе тот же VBScript, только ему много раз сделали AddObject и по мотивам этого написали справку. По самому языку справку ищите в MSDN.
> Kris_ © (14.07.09 12:14) [88]
> Skyle, а еще вопрос - как вернуть значение из скрипта в
> программу? А если надо массив вернуть?
Ничего вам не мешает добавить в свой Reporter соответствующий метод или свойство. Я в одной из своих программ выставлял в скрипт что-то типа датасета. И заполнялся этот датасет именно скриптом, а потом в программе я его уже использовал.
← →
Kris_ © (2009-07-14 12:44) [92]Skyle, большое спасибо за терпение
> А то может VBscript"овые Eval и Execute
если Eval и Execute , то они делают совсем не то. EVALUATE() в фокспро - эта функция имеет параметром строку кода, который выполняет, это выражение с переменными. Фокс - интерпретатор, может выполнить в рантайм строчку кода без проблем. Надеюсь, что и VBScript это каким-то образом умеет.
Про остальное теперь мне более ясно, с VBScript я не знакома, лишь читала эту и еще вот эту статью
http://www.delphikingdom.ru/asp/viewitem.asp?UrlItem=/helloworld/activescript.htm
ну еще Delphi и COM того же автора
все :)
← →
Skyle © (2009-07-14 12:53) [93]
> Kris_ © (14.07.09 12:44) [92]
> Skyle, большое спасибо за терпение
>
> > А то может VBscript"овые Eval и Execute
>
> если Eval и Execute , то они делают совсем не то. EVALUATE()
> в фокспро - эта функция имеет параметром строку кода, который
> выполняет, это выражение с переменными. Фокс - интерпретатор,
> может выполнить в рантайм строчку кода без проблем. Надеюсь,
> что и VBScript это каким-то образом умеет.
VBScript тоже интерпретируемый язык, поэтому конечно он это умеет.
Посмотрите справку
Eval
http://msdn.microsoft.com/en-us/library/0z5x4094(VS.85).aspx
Execute
http://msdn.microsoft.com/en-us/library/03t418d2(VS.85).aspx
← →
Dennis I. Komarov © (2009-07-14 13:04) [94]Совсем девушку замучили... или она...
> Kris_ ©
Вам просто хотят сказать, что привязываться к некой конкретной программе (в частности ОО) не есть хорошо. Если программа работает с неким набором данных, то не верно передавать их ей в формате некой конкретной программы. Логичнее было бы сконвертировать этим средством (к которому все очень прикипели) данные в некий универсатьный формат. Например сохранить в формате dbf (и Excel и Calc сие умеют), написать макрос который выгрузит данные в нужном формате (если dbf не угодил) и т.д. и т.п.
← →
Anatoly Podgoretsky © (2009-07-14 13:23) [95]
> интересно - что вы имели ввиду - кем или чем ограничена?
Ограничена любителями, более серьезной поддержки на уровне системы и Дельфи нет, в отличии от МС Офиса
← →
Kris_ © (2009-07-14 14:49) [96]
> Ограничена любителями, более серьезной поддержки на уровне
> системы и Дельфи нет, в отличии от МС Офиса
сорри, но не вижу в этом никакой проблемы. Все замечательно автоматизируется, моими пользователями используется и т.д. Я же объяснила - что у нас все перешли уже на ОО, т.е. не в одной отдельно взятой фирме, а в городе. И в плане универсальности все оки. Можно выдать в ОО, а затем - хочешь в эксель, хочешь в rtf. Не вижу ни проблем ни ограничений. Но это уже офф. Надоело, если честно это обсуждать. Тема была в другом.
Skyle,
>Execute Statement
Executes one or more specified statements.
Вполне себе сойдет. Спасибо за прекрасные ссылки.
← →
Inovet © (2009-07-14 16:21) [97]> [8] Kris_ © (13.07.09 20:46)
> turbouser,
> Все прочие компоненты отпадают потому, что их нельзя добавить
> в турбо-дельфи. т.е. добавить можно лишь в рантайм. Я с
> трудом это себе представляю с генератором отчетов.
Да ну. Как раз в случае с ФР самый правильный подход.
← →
TDelphi © (2009-07-15 12:14) [98]Ребят я прочитал весь этот "трактат" и выражаясь сленгом "ниасилил" :)
Присоединяюсь к БарЛог ©
Страницы: 1 2 3 вся ветка
Текущий архив: 2009.09.13;
Скачать: CL | DM;
Память: 0.81 MB
Время: 0.018 c