Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Вниз

Использование скриптов в программе   Найти похожие ветки 

 
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 ?



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2009.09.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.007 c
15-1247742783
MacroDenS
2009-07-16 15:13
2009.09.13
Хитрый вирус?


2-1247549794
petr
2009-07-14 09:36
2009.09.13
Ошибка на HTML странице в TWebbtowser


15-1248039005
Юрий
2009-07-20 01:30
2009.09.13
С днем рождения ! 20 июля 2009 понедельник


11-1204539944
Maestro
2008-03-03 13:25
2009.09.13
Кнопка в стиле XP с картинкой


1-1215107303
Zheksik
2008-07-03 21:48
2009.09.13
Как провести линию на компоненте фигура(Shape)?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский