сообщение - file is in use, но таблица закрыта | |
---|---|
ProbaSP Автор Сообщений: 94 Откуда: Урал Дата регистрации: 28.01.2016 |
Всем привет!
Очередной заскок... Не пойму, что не так. FoxPro9.0 SP2 код на кнопке:
Если нажать второй раз, вылазит сообщение - "file is in use" (на строчке USE (cName)) в Data Session таблицы нет, только курсор. Наверно это связано с SELECTом и временными файлами какими-нибудь(это я так интуичу ) подскажите, пожалуйста. готов к тыканью носом... Спасибо. |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 26.04.17 14:02 |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
ProbaSP Автор Сообщений: 94 Откуда: Урал Дата регистрации: 28.01.2016 |
Спасибо! про NOFILTER сразу прочитал. Исправлено 1 раз(а). Последнее : ProbaSP, 26.04.17 14:12 |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
Видимо файл все-таки висит после каких-то действий. Скорее всего нужно просто убрать абсолютно ненужную здесь строку:
Закрывать кстати так тоже не совсем верно: ведь если cName=table+'.dbf', то имя алиаса идет уже без '.dbf'. Поэтому, если не используется какое-то иное расширение для другой таблицы с тем же именем (что в принципе можно делать), и если не используется команда с определением конкретного файла на диске типа FILE() и т.п. - то лучше и вообще не добавлять здесь расширение в переменную имени. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
ProbaSP Автор Сообщений: 94 Откуда: Урал Дата регистрации: 28.01.2016 |
спасибо за разъяснение... ненужное уже убрал. а закрытие сделал без расширения. USE IN (table) Исправлено 2 раз(а). Последнее : ProbaSP, 26.04.17 14:27 |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
[attachment 27490 fox.gif]
А лисичка-то с обеих лап подает... |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Этого мало. Если прочитать Help по команде USE более внимательно, то вы заметите, что в опции IN используется либо номер рабочей области, либо алиас, а вовсе не имя таблицы. А раз алиас вы сами не задаете, то он присваивается по умолчанию, так что совсем не факт, что он совпадет с именем таблицы, а следовательно, этот код может и не сработать. Кто знает, какое имя у таблицы может встретиться, и лучше не дожидаться, пока программа очередной раз неожиданно свалится, а сразу писать правильный код. |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Для "автооткрывемых" таблиц алиас не задать, увы...
------------------ WBR, Igor |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
Влад Колосов Сообщений: 22664 Откуда: Ростов-на-Дону Дата регистрации: 05.05.2005 |
------------------ Совершенство - это не тогда, когда нельзя ничего прибавить, а тогда, когда нечего убавить. |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Не заметил в этой теме таких таблиц. Но если нужно закрыть таблицу с неизвестным алиасом по известному имени файла, то помогут AUSED() и DBF(). Исправлено 2 раз(а). Последнее : akvvohinc, 26.04.17 20:47 |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Чтобы избежать неоднозначности лучше было бы применить
Да, для текущей датасессии вполне сработает. Другое дело что закрывать курсор открытый не этим же кодом - мягко говоря странный подход (может быть его другой блок кода открывал явно и он всё ещё нужен). Ещё более убого будет закрывать курсоры в чужих датасессиях ------------------ WBR, Igor |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
И все же никакого "автооткрытия" с "авторождением" алиаса в этом примере нет. Файл (cName) уже открыт и алиас для него имеется - неявный или явно заданный в USE. Поэтому никакого нового "неизвестного" алиаса эта команда "автооткрытия" не родит. О какой неоднозначности ты пишешь? С тем же эффектом можно было бы написать то же, не используя алиас в SELECT:
Так что ТС было достаточно просто указывать явный алиас при открытии таблицы (USE), чтобы в конце закрывать таблицу по этому алиасу. И тогда независимо от того, как называется таблица (соответствует ли ее название допустимым названиям для алиаса), она закроется. |
Re: сообщение - file is in use, но таблица закрыта | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Смотря в каком... Там чуть ниже криспа написал слегка вредное, и ТС сделал Т.е. первый USE он явно убрал. Соответственно в чистом виде автооткрытие таблицы SELECT-ом и автоприсвоение её алиаса. Впрочем и так USE был без алиаса... Ну т.к. USE уже убрали, а и не убирая его он то изначально был без опции ALIAS! То тут в чистом виде "неявный" алиас и получается - и так и этак. При том даже если имя таблицы вполне себе удовлетворяет правилам применяемым для алиасов то нет абсолютно никакой гарантии, что фокс открыв эту таблицу присвоит ей алиас одноимённый имени dbf файла. Более того вот простейший пример где фокс ГАРАНТИРОВАННО присвоит автооткрытой таблице ДРУГОЙ алиас. И потому последующий USE IN (table) закроет абсолютно не то что нужно! Но кому это интересно? Г*нокод шагает по планете
О том и речь. При этом я, например, не вижу смысла городить огород с name expression в SELECT - уже открыта таблица, алиас известен - зачем лишние телодвижения? Вот если не парится с явным закрытием dbf (а для приватных датасессий это вполне разумное упрощение) - ну тогда всё проще - пусть фокс сам алиасы присваивает, и в запросе этот самый (cName) и будет... Хотя необходимость такой "динамики" в запросах это в 99% случаев признак г*но-структуры БД. Куча разноимённых таблиц с одинаковой по структуре информацией, порой распиханных по куче разных папок - при том совершенно не из-за превышения лимита на размер dbf (где это уже будет вынужденная мера) - а просто по тупой FoxBase/Clipper привычке плодить папки с таблицами в неимоверном количестве... ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 28.04.17 14:15 |
© 2000-2024 Fox Club  |