Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.13;
Скачать: CL | DM;

Вниз

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

 
Игорь Шевченко ©   (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 дней, когда я
> буду из программы вносить в каждую отдельную ячейку данные,
>  а потом высчитывать - куда мне вставить еще одну таблицу
> и после какой строки. А так же то, что вы предлагаете -
> отдельный лист с переменными - это тоже по сути ручная работа
> программисту.

Второй, третий и т.д. листы - листы программиста.
На них чётко определены ячейки в которые надо вносить данные.
Поэтому высчитывать ни чего не надо. Программист такой программе не нужен.
А первый лист - лист для печати. Он делается на основе данных с остальных листов с использованием формул. На изменение такого листа требуется не более часа. И не нужно вмешиваться для этого в программу.

> Не для пользователя я стараюсь.

Вы можете сильно заболеть (не дай Бог), найти более достойную работу/зарплату (дай Бог), или просто уйти в отпуск. И что будут делать пользователи которым срочно нужно будет изменить форму отчёта?
Если Вы думаете, что им этого не понадобится, то я скажу: "Не зарекайтесь".



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

Текущий архив: 2009.09.13;
Скачать: CL | DM;

Наверх




Память: 0.68 MB
Время: 0.013 c
2-1247128546
Гена
2009-07-09 12:35
2009.09.13
Скопировать файл по указанному пути


6-1205820218
olegNik
2008-03-18 09:03
2009.09.13
Как посадить Server на нужную сетевую карту.


1-1214818458
Context
2008-06-30 13:34
2009.09.13
Получить контекстное меню отдельного расширения оболочки


2-1244310707
Pauk
2009-06-06 21:51
2009.09.13
Защита от копирования


15-1247313627
NailMan
2009-07-11 16:00
2009.09.13
Закрепить панель с ярлыками