|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Здравствуйте, форумчане! Просмотрела уже все темы по данной ошибке - свое решение не нашла. Помогите пожалуйста, если кто сможет. Ситуация такая. Есть некий пользователь-хозяин, который в АРМе делает приказы и путем нажатия кнопки "ПОСЛАТЬ ПОЛЬЗОВАТЕЛЯМ" создает на СВОЕЙ машине другой файл: set exclusive off SELECT prik_stan COPY TO c:\jurnal\data\prik_stan1.dbf После этого несколько пользователей в разных частях города нажимают кнопку "Показать приказ" (т.е. в это время у них срабатывает такой код: close tables all set exclusive off copy file &pyt11.prik_stan1.dbf to c:\jurnal\data\prik_stan1.dbf, где pyt11="\\10.9.6.100\jurnal\data\", т.е. комп того пользователя-хозяина. Ну там еще несколько команд, не суть...И у этих нескольких пользователей на экране возникает нужный приказ. Так вот я подошла как раз к самой проблеме: у пользователя-хозяина ИНОГДА при нажатии кнопки "ПОСЛАТЬ ПОЛЬЗОВАТЕЛЯМ" возникает ошибка: "File access is denied c:\jurnal\data\prik_stan1.dbf", как будто эту таблицу кто-то держит. А кто? И как это засечь?И как исправить, если ошибка такая возникает не всегда, а лишь изредка? Если я что-то непонятно описала, задавайте вопросы - всего не опишешь. Заранее благодарна! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 11:50 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Еще уточнение: АРМы у всех пользователей одинаковые, только опции доступны разные. Идея такова: файл создается на компе хозяина с помощью COPY TO, а пользователи этот файл забирают к себе на машины с помощью COPY FILE, и открывают уже СВОЮ такую таблицу prik_stan1. Операция копирования - секундное дело, почему же тогда процесс как бы забирается каким-то пользователем и "висит", не давая работать дальше? И почему это бывает не всегда, а лишь время от времени? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 11:55 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
> Автор: ElenaZaus > Операция копирования - секундное дело, почему же тогда процесс как бы забирается каким-то пользователем и > "висит", не давая работать дальше? И почему это бывает не всегда, а лишь время от времени? На время копирования может влять антивирус, нагрузка по сети, да и нажать на кнопку могут раньше, чем закончилось выкладывание приказа(в ситуации, когда все сидят и ждут распоряжения и для ускорения нажимают кнопку обновления. Вот и получается, что файлик в исходной папке появился, но не до конца записался, а в это время его пытаются начать копировать клиенты) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 12:24 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Сделай копирование в цикле с паузой, раз 5-10, примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2011, 12:46 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Dima T, спасибо большое. Я обязательно попробую. А вот еще вопрос: может Вы или кто-нибудь еще из форумчан подскажете как написать небольшую программку для определения КТО ДЕРЖИТ ПРОЦЕСС, КАКОЙ ПОЛЬЗОВАТЕЛЬ? Была бы очень признательна, поскольку совсем нет опыта написания обработки ошибок, а надо срочно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 07:18 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Игорь Горбонос, Вы очень точно поняли мою проблему, так оно наверное и происходит, но мне как-то нужно от такой ситуации избавиться. В связи с этим, и Вам такой же вопрос: подскажете как написать небольшую программку для определения КТО ДЕРЖИТ ПРОЦЕСС, КАКОЙ ПОЛЬЗОВАТЕЛЬ? Была бы очень признательна, поскольку совсем нет опыта написания обработки ошибок, а надо срочно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 07:21 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZausDima T, спасибо большое. Я обязательно попробую. А вот еще вопрос: может Вы или кто-нибудь еще из форумчан подскажете как написать небольшую программку для определения КТО ДЕРЖИТ ПРОЦЕСС, КАКОЙ ПОЛЬЗОВАТЕЛЬ? Была бы очень признательна, поскольку совсем нет опыта написания обработки ошибок, а надо срочно. Если речь о про процессах, то поиск по форуму по слову "CreateToolhelp32Snapshot" Если все-таки речь о файле, то нет простых способов просмотра кто держит файл. Проще с обработкой ошибок разобраться. Ничего сложного в этом нет. Если VFP9 то TRY ... CATCH используется в простейшем случае так: Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 07:45 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZaus, Можно еще так попробовать копировать: Код: plaintext 1. 2. 3.
[quot ElenaZaus] как написать небольшую программку для определения КТО ДЕРЖИТ ПРОЦЕСС, КАКОЙ ПОЛЬЗОВАТЕЛЬ? [/quit] Можно сделать табличку - "журнал копирования": USER_NAME, DATE_FROM, DATE_TO. Где USER_NAME - имя пользователя, DATE_FROM - дата начала копирования, DATE_TO - дата окончания копирования. Перед тем, как пользователь будет копировать - там будет добавлена запись. По окончании копирования будет проставлен DATE_TO. В случае ошибки можно будет поглядеть последние записи, у которых DATE_TO не закрыты. Это на уровне рассуждений, сам такое не пробовал. Но лучше сделать проще, как Dima T писал - повторить несколько попыток копирования, в надежде, что файл за это время освободится. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 08:21 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Dima T, так правильно, или получилось масло масляное? ON ERROR DO ERR_MESS WITH ERROR() baza='prik_stan1' SELECT prik_stan for i = 1 to 10 try COPY TO c:\jurnal\data\prik_stan1.DBF i= 20 && выход из цикла catch inkey(1) && пауза 1 сек. endtry endfor if i <= 20 AND i>10 MESSAGEBOX ("ошибка копирования файла") endif ON ERROR ************************ PROCEDURE err_mess PARAMETER meRror IF meRror=108 .OR. meRror=1705 = MESSAGEBOX('Не удается скопировать таблицу '+baza+'. Вы будете пользоваться предыдущей версией таблицы',48, 'ВНИМАНИЕ') ENDIF return ************************ Может, тут уже не нужен обработчик ON ERROR? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 08:47 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZausМожет, тут уже не нужен обработчик ON ERROR? Не нужен - он лишний. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 09:07 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZausDima T, так правильно, или получилось масло масляное? Оно самое получилось. Если ошибка происходит внутри try ... catch, то ON ERROR не срабатывает, т.е. тут его вообще не надо использовать. т.е. в данном коде эти строки лишние: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 09:19 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
А зачем вообще копировать? Почему не dele all,append from для "хозяина" и просто select для пользователя? И пофиг кто сидит. Ну а если не пофиг тогда по вопросу "кто"(скопировал как у себя...может надо причесать.. ну общий смысл).Делаем вспомогательную табличку (сдесь users(id(C)(уникальное сочетание по ниму ищем сдесь sys(0)),name(C)(Человеческое представление ИВанов,Петров,Сидоров),type(L)(Монопольно или нет),When(T)(Когда).......) Код: 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. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67.
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2011, 09:44 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Dima T, пасибо, написала код. Посмотрим что получится. Щас тока до следующей ошибки, а у меня уже идет опытная эксплуатация. Боюсь, что 10 секунд не помогут, чтобы скопировался файл, если уж кто-то его держит. Но попробовать надо. В любом случае спасибо за помощь! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 13:18 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZausDima T, пасибо, написала код. Посмотрим что получится. Щас тока до следующей ошибки, а у меня уже идет опытная эксплуатация. Боюсь, что 10 секунд не помогут, чтобы скопировался файл, если уж кто-то его держит. Но попробовать надо. В любом случае спасибо за помощь! Помогут если накладываются операции создания файла на его копирование по сети. Как Игорь выше писал. Если умышленно кто-то держит - не помогут. Тогда надо искать кто его надолго открывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 13:55 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZaus, Немного смущает тот факт, что у Вас "формируемый файл" и "файл для пользователей" - физически один и тот же файл. Я бы попробовал чуть изменить алгоритм работы. 1. Добавить одну команду: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
2. Сама папка C:\PUBLIC\ - расшарена ТОЛЬКО НА ЧТЕНИЕ. Подобный подход работает уже лет 15 на одном старом проекте - ни одного сбоя в копировании... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 14:38 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Banditos, в моем случае это не решает проблемы. Сеть плохая и там даже при копировании небольшого файла могут возникать затыки. Какая разница, ГДЕ идет копирование и КУДА? Файл prik_stan1.dbf точно так же может оказаться занят в момент копирования его в каталог PUBLIC. Вся проблема в том, что не написана нормальная обработка ошибок. Может быть Вы знаете, как ее написать? Может быть есть уже готовая модель, которая где-то работает? Буду признательна за любую помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 12:29 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Dima T, а что Вы знаете о такой команде как SET REPROCESS TO nAttempts [SECONDS] [SYSTEM] | TO AUTOMATIC [SYSTEM]? Эта команда заменяет Ваш TRY или нет? Что лучше работает? Есть у Вас такой опыт? И еще в этом же аспекте хотелось бы узнать Ваше мнение об ON ERROR. Вообще КАК ГРАМОТНО НАПИСАТЬ ОБРАБОТКУ ОШИБОК? Ваш TRY хорошая штука, но не всегда спасает. А мне надо, чтобы гарантировано работало. Не могли бы Вы мне помочь? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 12:36 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZausА мне надо, чтобы гарантировано работало. Чтобы гарантированно работало, нужно, чтобы файл никто не занимал. А если файл будет занят полчаса, тут ни TRY, ни ON ERROR с таймером не помогут. Отсюда следует, что нужно организовать работу так, чтобы файл не занимался кем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 13:02 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
ElenaZausВаш TRY хорошая штука, но не всегда спасает. Кстати, код можно усовершенствовать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 13:58 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Помарочка небольшая у меня. Вот поправил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 14:00 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
было бы не хренова файлы исключить из проекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 16:17 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Было бы вообще, красиво ) Чем слушать вот ту галиматью которую тебе тут писали )) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 16:23 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Чё-то навскидку родился такой вариант. А на кой черт вообще файл копировать? stroka=filetostr("&pyt11.prik_stan1.dbf") strtofile(stroka,"c:\jurnal\data\prik_stan1.dbf") use c:\jurnal\data\prik_stan1.dbf можно еще в цикле проверять, втянулась ли строка: stroka="*" sek=seconds() do while stroka="*" .and. seconds()-sek<120 (например) stroka=filetostr("&pyt11.prik_stan1.dbf") inkey(0.1) enddo if stroka<>"*" strtofile(stroka,"c:\jurnal\data\prik_stan1.dbf") use c:\jurnal\data\prik_stan1.dbf else ? "Чтение не удалось" endif Или я чего-то не догнал? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 17:23 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5.
Про обработку ошибок,временами, почитать надо... И не нужно воровать код у бестолковых. Ну затрать ты час, ну 2, сядь спокойно и просто почитай хелп по фоксу. Тем более что он переведен, почти. Правда бестолково, но понять можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 18:51 |
|
могут ли команды COPY TO и COPY FILE вызвать ошибку File access is denied
|
|||
---|---|---|---|
#18+
********** Про обработку ошибок,временами, почитать надо... Да пёс ты с ним про обработку и времена. Я же сказал - пришло в башку - написал. А что по существу по поводу STRTOFILE и обратно без копирования файла? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 19:19 |
|
|
start [/forum/topic.php?fid=41&tid=1584476]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 429ms |
0 / 0 |