powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с запуском одновременно приложения
4 сообщений из 4, страница 1 из 1
Проблема с запуском одновременно приложения
    #39848741
dima_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

спасибо заранее
...
Рейтинг: 0 / 0
Проблема с запуском одновременно приложения
    #39848752
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18,
прога умышленно сделана однопользовательской. Отключить сообщение о повторе можно, но будет ли при этом прога работать правильно в многопользовательском режиме?
...
Рейтинг: 0 / 0
Проблема с запуском одновременно приложения
    #39848757
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dima_18
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
odisk=sys(5)+sys(2003)
set default to (odisk)
rpovtor=odisk+'\POVTOR1.DBF'
on error do povtor
use &rpovtor exclus


proc povtor
x=error()
    if x=1705.or.x=108 && file access is denied... file is in use by anoth.user  
wait window '&#207;&#240;&#238;&#227;&#240;&#224;&#236;&#236;&#224; &#243;&#230;&#229; &#231;&#224;&#239;&#243;&#249;&#229;&#237;&#224; ! &#209;&#236;&#238;&#242;&#240;&#232; &#239;&#224;&#237;&#229;&#235;&#252; &#231;&#224;&#228;&#224;&#247;' 
quit
   endif



При попытке повторно открыть POVTOR1.DBF происходит ошибка и вызывается povtor(), откуда выход из программы.

Можно открывать ее немонопольно, т.е. просто убрать exclus, тогда несколько копий откроются одновременно, но учти что написано так не случайно, т.е. разработчик знал о возможных проблемах при одновременной работе, т.е. могут быть какие-то сбои и даже потери данных.
Я бы не стал это убирать, а просто сообщал бы кто сейчас работает в проге (sys(0))
...
Рейтинг: 0 / 0
Проблема с запуском одновременно приложения
    #39851047
dima_18
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо, Dima_T за ответ!

Очень ясно и подробно все объяснено.
Как всегда помощь твоя, очень исчерпывающая
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с запуском одновременно приложения
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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