|
Проблема с запуском одновременно приложения
|
|||
---|---|---|---|
#18+
Всем добрый день! Не знаю даже как сформулировать правильно вопрос. Есть программа. И запускается она следующим образом (код прикрепляю), я так не писал давно и с твоей помощью по другому это делаю. А тут человек уволился и оставил программу мне. И я не знаю за что браться. Итак суть: она не запускается из одного и того же места несколько раз. Т.е. база лежит на сетевом диске и если из многих мест запускают программу, то выдается ошибка, что программа запущена. Я не знаю в этом коде, где лучше править это место чтобы минимальным количеством затрат изъять эту ошибку. Посмотрите пожалуйста, код запуска. *clear clear all close all ****** set console off set talk off set date to german set hours to 24 set seconds off set dele on set safety off set exact off set century on odisk=sys(5)+sys(2003) set default to (odisk) rpovtor=odisk+'\POVTOR1.DBF' set exclusive off on error do povtor if .not.file(rpovtor) wait window 'Îòñóòñòâóåò ôàéë povtor1.dbf !' return endif use &rpovtor exclus on error ****** RESTORE FROM nastr addi set exclusive off set reprocess to 0 SET SYSMENU TO SET SYSMENU AUTOMATIC set status bar off if .not.file('setup.txt') wait window 'Îòñóòñòâóåò ôàéë SETUP.TXT' RETURN endif fukaz=fopen('setup.txt') flen=fseek(fukaz,0,2) ra=fseek(fukaz,0) if flen<>0 ctroka=fgets(fukaz) Ypath=ALLTRIM(ctroka) else wait window 'Îòñóòñòâóåò çàïèñü â ôàéëå SETUP.TXT' RETURN endif ra=fclose(fukaz) **** do form zapusk cd (Ypath) &&?????????çà÷åì? cd (odisk) set path to set path to (Ypath) clea wind xscreen_name=_screen.caption _screen.caption='Áàçà äàííûõ ïàöèåíòîâ ñ ÎÊÑ' _screen.closable=.f. on key label F1 on key label F2 activate window calendar DEFINE PAD p1 OF _MSYSMENU PROMPT "Êàðòîòåêà" skip for wexist("Form1").or.wexist("Form2") DEFINE PAD p2 OF _MSYSMENU PROMPT "Ñïðàâî÷íèêè" DEFINE PAD p4 OF _MSYSMENU PROMPT "Ñåðâèñ" skip for wexist("Form1").or.wexist("Form2") DEFINE PAD p5 OF _MSYSMENU PROMPT "Âûõîä" skip for wexist("Form1").or.wexist("Form2") ON SELECTION PAD p1 OF _MSYSMENU DO form karta ON PAD p2 OF _MSYSMENU ACTIVATE POPUP ñïðàâî÷íèê ON PAD p4 OF _MSYSMENU ACTIVATE POPUP ñåðâèñ ON SELECTION PAD p5 OF _MSYSMENU DO vixod DEFINE POPUP ñïðàâî÷íèê MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF ñïðàâî÷íèê PROMPT "ÌÊÁ" DEFINE BAR 2 OF ñïðàâî÷íèê PROMPT "Âðà÷è" DEFINE BAR 3 OF ñïðàâî÷íèê PROMPT "Ðàéîíû" DEFINE BAR 4 OF ñïðàâî÷íèê PROMPT "Ñòðàõîâûå êîìïàíèè" DEFINE POPUP ñåðâèñ MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF ñåðâèñ PROMPT "Ðåìîíò áàçû äàííûõ" DEFINE BAR 2 OF ñåðâèñ PROMPT "Î ïðîãðàììå" ON SELECTION BAR 1 OF ñïðàâî÷íèê do form spdiag ON SELECTION BAR 2 OF ñïðàâî÷íèê do form spvrach ON SELECTION BAR 3 OF ñïðàâî÷íèê do form sprajon ON SELECTION BAR 4 OF ñïðàâî÷íèê do form spkomp ON SELECTION BAR 1 OF ñåðâèñ do remont ON SELECTION BAR 2 OF ñåðâèñ do form okb *DEFINE POPUP îò÷åò MARGIN RELATIVE SHADOW COLOR SCHEME 4 on error on error do lockerror read events &&cycle *_screen.caption=screen_name return ********************* procedure vixod clear events *_screen.caption=xscreen_name _screen.closable=.t. set sysmenu to default clear all close all clea program return ******** proc povtor x=error() if x=1705.or.x=108 && file access is denied... file is in use by anoth.user wait window 'Ïðîãðàììà óæå çàïóùåíà ! Ñìîòðè ïàíåëü çàäà÷' quit endif **** proc lockerror x=error() do case case x=1705.or.x=108 && file access is denied... file is in use by anoth.user wait window'ÁÀÇÀ ÄÀÍÍÛÕ ÇÀÍßÒÀ ÄÐÓÃÈÌ ÏÎËÜÇÎÂÀÒÅËÅÌ!' return to main case x=109 &&Record is in use by another user wait window nowait'Çàïèñü çàíÿòà äðóãèì ïîëüçîâàòåëåì...' retry * case x=114 &&Index does not match... * case x=2005 &&çàïîð÷åíû .CDX *wait window 'Îøèáêà ¹ '+str(x,6)+' Ñäåëàéòå ðåìîíò áàçû!' * return to main otherwise wait window 'Îøèáêà ¹ '+str(x,6)+' '+message() return to main endcase спасибо заранее ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 12:29 |
|
Проблема с запуском одновременно приложения
|
|||
---|---|---|---|
#18+
dima_18, прога умышленно сделана однопользовательской. Отключить сообщение о повторе можно, но будет ли при этом прога работать правильно в многопользовательском режиме? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 12:51 |
|
Проблема с запуском одновременно приложения
|
|||
---|---|---|---|
#18+
dima_18 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
При попытке повторно открыть POVTOR1.DBF происходит ошибка и вызывается povtor(), откуда выход из программы. Можно открывать ее немонопольно, т.е. просто убрать exclus, тогда несколько копий откроются одновременно, но учти что написано так не случайно, т.е. разработчик знал о возможных проблемах при одновременной работе, т.е. могут быть какие-то сбои и даже потери данных. Я бы не стал это убирать, а просто сообщал бы кто сейчас работает в проге (sys(0)) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2019, 13:01 |
|
|
start [/forum/topic.php?fid=41&msg=39851047&tid=1581635]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
392ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 300ms |
total: | 788ms |
0 / 0 |