:: Visual Foxpro, Foxpro for DOS
Приватная DataSession
Taran
Автор

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Ну крайне редко использую.
Или я туп или что-то не устраивает.

База данных то где?
Любая БД доступна глобально? Я так понял.
В приватной ДС только таблицы?

А вот хранимки в разных ДБ/ДС как разрулить?



Исправлено 1 раз(а). Последнее : Taran, 26.04.19 03:55
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Mitchman

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
в принципе ничем приватная не отличается от глобальной - просто в приватной это как отдельно открытая программа
где можно номер приватной передавать - с одним номером это одна сессия

ЗЫ основное удобство, что ты например для окна используешь приватную - тогда все курсоры будут существоавть пока существует сесия, все открытые таблицы, только в этой сесии открыты и закроются с закрытием сессии, если тебе надо открыть еще окно в этой сессии передай ее номер и открывай с тем же номером


------------------
-
«свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской»
-
Олесь Бузина




Исправлено 1 раз(а). Последнее : Mitchman, 26.04.19 03:58
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Taran
Автор

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Да, Андрей, я это понимаю.
Но зачем оно мне? Как я ранее писал, на открытие таблиц "значительные" накладные расходы не позволительны.
Пока система отработает доступ, антивирусы всякие. Банальный справочник номенклатуры с ценами составляет более десяти таблиц.

Собственно вопрос возник из-за:
Пытаюсь открыть таблицу. А она "битая".
Таблица не открывается. CursorGetProp('DataBase') отработать не могу.
А БД открывается. Как ее отследить и закрыть? Кроме как перед USE заюзать ADatabases() и потом сравнивать.
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Mitchman

Сообщений: 9978
Откуда: Николаев
Дата регистрации: 24.05.2002
а try?


------------------
-
«свидомые украинцы озабочены не столько созданием украинской культуры, сколько уничтожением русской»
-
Олесь Бузина
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Taran
Автор

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
TRY конечно есть.
Собственно несколько доделывается "ремонтер" таблиц и БД.
Таблицы, как и сама БД смотрятся и чинятся как родными средствами Фокса, так и на низком уровне.
У клиента софтина крутится 20+ лет.
Админа у них нет. Сама БД не совпадает с оригиналом, файлы CDX частично пропали, ахтунг полный.
У меня есть "ремонтер" в комплекте, но возникли ошибки, которых я никогда не встречал и они не решались ранее.
Сказать клиенту про "булочки на завтрак без изюма, а админа возьми" я не могу.
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
начал с программирования и теперь про администрирование...
ты уж там определись каких советов тебе накидать нада


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Taran
Автор

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Foxtrot
начал с программирования и теперь про администрирование...

Наоборот несколько, уважаемый Канат.
Кстати, чета редко заходишь. Без Б.

Я паял и рулил по железу.
А потом данные "пропали" и вынужден был "вникнуть в IDX, CDX".
На ВЦ ЦБ поднимал вопрос о СисАдмине.....
Труля...ля.. ля..
Давно.
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
все равно не понятно
вот какая связь между приватной сессией и отсутствием денег на аккумулятор?


------------------
Мойте ноги, моя ноги вы моете и руки




Исправлено 1 раз(а). Последнее : Foxtrot, 26.04.19 11:12
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Taran
Автор

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Foxtrot
все равно не понятно
вот какая связь между приветной сессией и отсутствием денег на аккумулятор?

Вот же балбес ;)
Мало что как у них, я им не судья.
Мне нуно сделать. И я хочу сделать "красиво".
В принципе все решено. Вопрос скорее теоретический, ибо... Да знаю я..знаю..
А вдруг и не все?
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
не забудь после всех экспериментов бекап настроить


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Taran
Автор

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
Foxtrot
не забудь после всех экспериментов бекап настроить

Спасибо, дружище. Особенно за "после". ;)
Ratings: 0 negative/0 positive
Re: Приватная DataSession
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
Есть инструмент. Пользоваться ли им или делать то, что делает этот инструмент, но своими силами - вопрос личных предпочтений.

Если есть вопрос и по нему нет явного описания в справке, то лично я делаю тестовые примеры и на основании этих примеров делаю выводы

База данных в Private Data Session

  • Если база данных была открыта в Default Data Session, то повторно не открывается и при закрытии Private Data Session сама база данных остается открытой
  • Если база данных не была открыта в Default Data Session, то она будет автоматически открыта при открытии первой же таблицы в Private Data Session и автоматически будет закрыта при закрытии Private Data Session
  • Вне зависимости от того, была ли база данных открыта до работы с Private Data Session или же она была автоматически открыта при открытии таблицы, но база данных не будет установлена как текущая база данных Private Data Session. В качестве текущей базы данных вообще ничего не будет указано

    Соответственно, для корректной работы с базой данных в Private Data Session лично я делаю так

    1. Открыть базу данных при запуске приложения в Default Data Session. Остается открытой все время работы приложения
    2. При инициализации Private Data Session даю команду на установку базы данных в качестве текущей (SET DATABASE TO). Подчеркну - не открыть, а установить текущей


    С моей точки зрения использование Private Data Session вполне оправдано. Но если не хочешь - не используй. Никто же не заставляет
    Ratings: 0 negative/0 positive
  • Re: Приватная DataSession
    Taran
    Автор

    Сообщений: 13625
    Откуда: Красноярск
    Дата регистрации: 16.01.2008
    Да, Владимир, конечно ряд тестов были проделаны.
    Но ничего хорошего не дали.
    Т.е. база данных всегда открывается в глобальной сессии и доступна всегда.

    Банально.
    Команда aUsed() возвращает массив таблиц открытых в текущей сессии.
    А aDatabases() массив открытых всех БД. Т.е. вопрос сессии данных в отношении к БД даже не рассматривается.
    Что довольно разочаровывает. Изоляция нарушается. Не аккуратненько вышло у разрабов.

    Никакими средства не удается автоматически закрыть БД, открытую в приватной ДС.
    Открытую что явно через OPEN DATABASE, что автоматом при USE.
    При закрытии сессии таблицы закрываются. А БД остается открытой всегда.
    Т.е. "ручками" надо отслеживать.

    Т.е. выделенное ниже не верно.
    Владимир Максимов
    Если база данных не была открыта в Default Data Session, то она будет автоматически открыта при открытии первой же таблицы в Private Data Session и автоматически будет закрыта при закрытии Private Data Session
    Ratings: 0 negative/0 positive
    Re: Приватная DataSession
    of63

    Сообщений: 25256
    Откуда: Н.Новгород
    Дата регистрации: 13.02.2008
    Вы о чем тут? ) Олег - и сам все знает. DS - редкая фигня...
    Ratings: 0 negative/0 positive
    Re: Приватная DataSession
    Владимир Максимов

    Сообщений: 14100
    Откуда: Москва
    Дата регистрации: 02.09.2000
    А зачем ее закрывать-то?

    По сути, база данных - это некий аналог процедурного файла. Причем глобального. Ну и смысл открывать/закрывать процедурный файл, который нужен везде. В любом месте приложения. Любое обращение к таблице, включенной в базу данных - это неизбежное обращение к контейнеру базы данных

    Сама постановка вопроса не понятна. Чего в результате хотим добиться?

    Повторюсь. Я открываю контейнер базы данных при открытии приложения и он остается открытым на протяжении всего времени работы с приложением. Вне зависимости от того, будут ли формы открываться в Private Data Session или в Default. Чем не устраивает такой способ работы?

    -------------

    Контейнер базы данных - не есть сами данные. Это данные о данных. Метаданные. Вполне логично, что они не включаются в концепцию сеанса данных. Тут, конечно, можно поспорить, но, с моей точки зрения, поведение вполне себе логичное. Не вижу никаких причин изолировать в рамках сеанса данных еще и метаданные

    -------------

    Насчет того, что база данных не закрывается лично у меня этому может мешать только открытый проект (pjx) в который эта база данных включена. Т.е. до начала экспериментов надо сначала через кнопку Close в самом проекте закрыть базу данных и перейти на какую-нибудь другую закладку проекта, где эта база данных не видна

    Т.е. у меня база данных как раз закрывается. Остается она открытой только в том случае, если есть что-то, что мешает ее закрытию. Что-то, что ее использует. Хотя, конечно, поскольку концепция контейнера базы данных вне концепции сеанса данных, то на автоматическое закрытие лучше не рассчитывать.



    Исправлено 3 раз(а). Последнее : Владимир Максимов, 07.05.19 01:04
    Ratings: 0 negative/0 positive
    Re: Приватная DataSession
    Taran
    Автор

    Сообщений: 13625
    Откуда: Красноярск
    Дата регистрации: 16.01.2008
    Владимир Максимов
    По сути, база данных - это некий аналог процедурного файла. Причем глобального. Ну и смысл открывать/закрывать процедурный файл, который нужен везде. В любом месте приложения. Любое обращение к таблице, включенной в базу данных - это неизбежное обращение к контейнеру базы данных

    В данном конкретном моем случае.
    Некоторые таблицы в каталоге испортились. Причем не все они могут быть в БД. Могут быть и свободные. И БД в каталоге может быть не одна. Это вероятно плохо, но не я архитектор, или я, но пару десятков лет назад.

    Для анализа первым этапом пытаюсь открыть таблицу как таблицу.
    1.Если таблица открылась. Прочитал CursorGetProp('DataBase') - узнал имя БД.
    Таблицу закрыл.
    БД закрыл. А это возможно только через.
    Set Database To ...
    Close Databases
    поскольку Close Databases работает с активной БД.
    2.Таблицу открыть не получилось из-за нарушения целостности. При этом БД открывается.
    CursorGetProp('DataBase') отработать не могу, поскольку таблица не открылась.
    Соотв. активной БД сделать не могу и закрыть ее не могу.

    Естественно можно пойти иным путем, более правильным.
    Сканировать файлы.DBC.
    Т.е. открывать БД, делать активной, запрашивать ADBObjects(array, 'TABLE')
    и уже по массиву пытать открыть таблицы из БД. Запоминать список таблиц входящих в БД.
    Потом все-таки сканировать каталог в поисках DBF, проверять через ранее запомненный список таблиц из БД, была ли таблица проверена ранее. Если нет, то считаем что она свободная...
    Ну и т.д..
    Ну либо, как я выше и писал, при попытке открытия таблицы запоминать количество открытых БД через ADatabases() и в случае сбоя можно анализировать по новой ADatabases() и соотв. ... ну понятно...


    Второй случай необходимости переключать БД.
    Есть некоторое основное приложение со своей БД. Тут все понятно. БД открыли и далее по предпочтениям, хоть с использованием приватных ДС, хоть без.
    Но. Есть некоторое "сервисное" редкоиспользуемое приложение(модуль).
    Ну, например, отправка СМС.
    Он работает исключительно со своей БД, но может запускаться в основном сеансе.
    Может использоваться в разных приложениях, использующих разные БД.
    Поэтому модуль-СМС работает со своей БД независимо от основного приложения.


    P.S.
    Оно понятно, что в настоящее время вопрос скорее теоретический, возможно даже для курилки.
    Собственно нет проблем.



    Исправлено 1 раз(а). Последнее : Taran, 07.05.19 05:26
    Ratings: 0 negative/0 positive
    Re: Приватная DataSession
    Igor Korolyov

    Сообщений: 34580
    Дата регистрации: 28.05.2002
    1) Обработка ошибок (а не попытка заранее выяснить вызовет ли ошибку открытие той или иной таблицы, какая это будет ошибка, как её предотвратить и чего там починить). Естественно сама "починка" что таблиц что dbc - это в идеале отдельная программа, ну на крайний случай отдельный модуль, который при своём запуске позакрывает всё что только можно - формы, отчёты, диалоговые окна, соответственно и таблицы и dbc тоже - после чего будет тем или иным образом исправлять испорченные файлы.
    2) Ну есть этот модуль со своей БД, и в чём проблема то?
    Обращения к таблицам могут производится в виде имя_БД!имя_таблицы - и тогда не важно где физически расположен dbf, и даже нет надобности специально "активировать" эту БД через Set database. Можно пойти от обратного - каждая форма (точнее датасессия) относящаяся к этому модулю при старте сделает set database to и далее будет работать чисто с именами таблиц - никаких путей, никаких файлов - контейнер БД для того и нужен чтобы спрятать эти "детали физического уровня". Не может быть такого чтобы подобный модуль (да и основное приложение тоже) работало "неизвестно с какой" БД, или вообще не БД. Иначе это не прикладное приложение, а утилита типа dbfview, которая ничего не знает про смысл и структуру тех данных, которые отображает.


    ------------------
    WBR, Igor
    Ratings: 0 negative/0 positive
    Re: Приватная DataSession
    Taran
    Автор

    Сообщений: 13625
    Откуда: Красноярск
    Дата регистрации: 16.01.2008
    Можно много о чем говорить.
    Но ежели пост начинается с "Обработка ошибок" после того, что было сказано выше. То смысла воду тереть в ступе нет.
    Ratings: 0 negative/0 positive
    Re: Приватная DataSession
    Igor Korolyov

    Сообщений: 34580
    Дата регистрации: 28.05.2002
    Всё просто
    Taran
    Некоторые таблицы в каталоге испортились.
    Это забота обработчика ошибок. Всё

    Никакие DE, открытые или закрытые dbc и всё прочее не имеет совершенно никакого отношения к решению данной проблемы.


    ------------------
    WBR, Igor
    Ratings: 0 negative/0 positive
    Re: Приватная DataSession
    Taran
    Автор

    Сообщений: 13625
    Откуда: Красноярск
    Дата регистрации: 16.01.2008
    Igor Korolyov
    Всё просто
    Taran
    Некоторые таблицы в каталоге испортились.
    Это забота обработчика ошибок. Всё

    Никакие DE, открытые или закрытые dbc и всё прочее не имеет совершенно никакого отношения к решению данной проблемы.

    Балбес, он и есть басбес.
    Хоть умный, хоть Юрка бы.
    Картофан елы-палы.

    Все нормально. Я их знаю, этих чудиков. То голова не совпадает с телом.... да собственно это самое финишное....
    Ratings: 0 negative/0 positive


    Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

    On-line: 29 (Гостей: 29)

    © 2000-2024 Fox Club 
    Яндекс.Метрика