powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Трансформация программного модуля на веб страницу..
4 сообщений из 4, страница 1 из 1
Трансформация программного модуля на веб страницу..
    #33193563
Oleg1113
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, очень нужна помощь по следующему вопросу:
имеется программа на VFP 6.0 она обращается к MS SQL, вызывая процедуру, обрабатывает курсор, запускает эксел - формирует отчет ...
Как сделать чтобы та же программа вызывалась из Веб страницы - путем указания на гипер ссылку, т.е. я полагаю скомпилированный модуль надо положить на веб сервер, в каком виде, может скомпилировать на 9.0 фоксе?
Т.о. чтобы делались аналогичные дейсвия - запускался эксемпляр Excel Application, + в данный прг файл надо добавить класс формы , чтобы после указания на гипер ссылку предварительно запускалась форма на ввод нек. параметров. Спасибо.
...
Рейтинг: 0 / 0
Трансформация программного модуля на веб страницу..
    #33193935
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно знать как работает веб-сервер. Вероятно это тебе слишком муторно будет


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Трансформация программного модуля на веб страницу..
    #33194008
Flex0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно сделать Web - сервис, тут поиском поищи, видел громадный топик от Sergey Сh на эту тему. Очень неплохая статья. Как раз то, что тебе нужно.
...
Рейтинг: 0 / 0
Трансформация программного модуля на веб страницу..
    #33195413
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Oleg1113!

Если иcпользуется ASP, ASP.NET или родственная технология (поддерживающая
COM) то из фоксовой программы делаем dll-ку (лучше всего Multithreaded) -
которая выставляет метод, скажем DoReportToFile - с параметрами - в
частности имя создаваемого файла, и собственно параметры нужные для
формирования отчёта (можно их в одной строке передавать - например как в GET
запросе их сам Web сервер получает - т.е. в виде
nYear=2005&nMonth=8&cCustomerName=%D2%E5%F1%F2 - на строне твоего серверного
метода это несложно разобрать на "составные части" и декодировать URLEncoded
текст).
Естественно что никакого интерфейса (форма запроса параметров) в dll-ке быть
не может по определению - форму такую ты сам должен написать на том языке,
на котором пишешь Web-страницы (предположим что это ASP).
Из скрипта навешенного на обработку ответа от данной страницы ты и будешь
вызывать свой COM-сервер и дёргать его метод - полученный XLS файл можно
затем непосредственно отобразить в браузере клиента, используя
OfficeWebComponents - ставятся они с 10 и 11 версиями офиса (соответственно
их уже есть 2 версии :( ) - но даже если их нет, то браузер клиента сам их
скачает и установит (если InstallOnDemand не зарезано злым админом).
Если интересно, то я использую такие вспомогательные процедурки для
декодирования параметров из строки запроса:
Думаю понятно как они работают :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
FUNCTION UrlDecode(tcInput AS String, tcName AS String) AS String
LOCAL lcEncoded AS String, lcResult AS String, ln1 AS Integer
lcEncoded = STREXTRACT(m.tcInput, m.tcName + "=", "&",  1 ,  1  +  2 )
lcResult = ""
FOR ln1 =  1  TO LEN(m.lcEncoded)
 DO CASE
 CASE SUBSTR(m.lcEncoded, ln1,  1 ) == "%"
  lcResult = m.lcResult + ;
    STRCONV(SUBSTR(m.lcEncoded, m.ln1 +  1 ,  2 ),  16 )
  ln1 = m.ln1 +  2 
 CASE SUBSTR(m.lcEncoded, ln1,  1 ) == "+"
  lcResult = m.lcResult + " "
 OTHERWISE
  lcResult = m.lcResult + SUBSTR(m.lcEncoded, m.ln1,  1 )
 ENDCASE
ENDFOR
RETURN m.lcResult
ENDFUNC

FUNCTION UrlEncode (tuValue AS Variant) AS String
LOCAL lcValue
DO CASE
CASE PCOUNT() =  0 
 RETURN ""
CASE VARTYPE(m.tuValue) = "C"
 lcValue = m.tuValue
CASE VARTYPE(m.tuValue) = "N"
 lcValue = TRANSFORM(m.tuValue)
CASE VARTYPE(m.tuValue) = "D"
 lcValue = DTOS(m.tuValue)
CASE VARTYPE(m.tuValue) = "T"
 lcValue = TTOC(m.tuValue,  1 )
CASE VARTYPE(m.tuValue) = "L"
 lcValue = IIF(ISNULL(m.tuValue), "2", IIF(m.tuValue, "1", "0"))
OTHERWISE
 lcValue = TRANSFORM(m.tuValue)
ENDCASE
LOCAL lcResult, ln1, lcChar
lcResult = ""
FOR ln1 =  1  TO LEN(m.lcValue)
 lcChar = SUBSTR(m.lcValue, m.ln1,  1 )
 IF ATC(m.lcChar, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") >  0 
  lcResult = m.lcResult + m.lcChar
  LOOP
 ENDIF
 IF m.lcChar = " "
  lcResult = m.lcResult + "+"
  LOOP
 ENDIF
 lcResult = m.lcResult + "%" + RIGHT(TRANSFORM(ASC(m.lcChar), "@0"),  2 )
ENDFOR
RETURN m.lcResult

Конечно можно систему развивать - "обернуть" dll в COM+ приложение (настроив
в частности поллинг объектов и указав запуск от указанного аккаунта - не от
ASPNET или IWAM_... или под чем там работает Web-сервер).
Если пойти ещё дальше, то dll можно "обернуть" в WebService о чём тут уже
говорилось - собственно в коде сервера эти изменения принципиально ничего не
меняют.
Главная проблема с которой ты можешь столкнуться - это права доступа - при
отладке сервера ты скорее всего не увидишь "ограничений" которые вылезут при
реальной работе из под неинтерактивного аккаунта...

P.S. Естественно что на сервере ДОЛЖЕН быть установлен Excel (чего как
правило не наблюдается на Web-серверах и даже на intranet-серверах тоже :( )
P.P.S. Альтернативный вариант (когда не нужно особого форматирования - т.е.
отчёты все простецкие, без наворотов) - dll-ка просто делает выборки (т.е.
готовит курсоры с отчётными данными) - затем всё это передаёт в XML виде на
сервер, а там отрабатывает XSLT-трансформатор - он уже и делает из простого
XML какой-то "табличный" или иной формы HTML.

P.P.P.S. Тоже боремся сейчас с такой задачей :)

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Трансформация программного модуля на веб страницу..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]