Проблема с работой через терминальник

АндрейК
Дата: 04.12.2009 18:56:17
AccessXP, mdb.
1. На сервере, в папке, находится файл с таблицами
2. На моей машине эта папка подключена как сетевой диск(S), здесь же находится интерфейсная часть программы со связанными с S:\... таблицами.
3. На терминальнике я вижу свои локальные диске, в том числе и диск S
4. Создаю на терминальнике базу со связанными с S:\... таблицами.
3 На своем компе открываю на просмотр форму, которая основана на Таблице1.
4 Перехожу на диск S, пробую открыть на просмотр упомянутую таблицу - открывается нормально.
5 Ту же самую таблицу(связанную) пытаюсь открыть на терминальнике - получаю: "дисковая или сетевая ошибка".
Alex 112
Дата: 05.12.2009 00:34:50
1. Понятно
2. Не понятно где лежит интерфейсная часть: на сетевом диске S или в локальной дире вашей машины?
3. Не понятно: а). сервер из п.1 и "терминальник" это одно и то же? б). Вы видите замэпенный диск S в терминальной сессии открытой со своего компа (т.е. диск расшарен внутрь сетки) или вы видите его потому, что в свойствах терминальной сессии со соего компа поставили галку "транслировать локальные диски в терминальную сессию" (точно не помню как там в свойствах ...)
4. В свете непоняток 2. и 3. тоже мутно как то ... Речь о копии интерфейса из п. 2?
5. (по вашей нумерации - снова п.3) вроде понятно, если уточните п. 2.
6. (по вашей нумерации - снова п.4) т.е. открываете непосредственно из mdb с данными?
7. (по вашей нумерации - снова п.5) то же самое: вы этоделаете из терминальной сессии или непосредственно сидя за "терминальником"?
Alex 112
Дата: 05.12.2009 00:39:09
7. (по вашей нумерации - снова п.5)

А диск S у вас при этом есть в проводнике виден?
АндрейК
Дата: 07.12.2009 12:34:37
На понятно/не понятно:

Участвуют три компьютера: локальный(Лок), сервер(Срв) и терминальник(Трм)
На Срв, в папке, - файл с таблицами, на Лок - клиентский файл.
Эта папка с таблицами подключена к Лок, как сетевой диск S.
Открываю на Лок форму основанную на Таблице1.
Не закрывая эту форму:
а) открываю связанную Таблицу1 в клиентском файле. Таблица открывается...
б) перехожу на диск S и открываю в файле с таблицами саму Таблицу1. Таблица открывается...

Далее: открываю Трм, в его проводнике вижу свои локальные диски, в том числе и S.
Создаю на терминальнике файл mdb со связанными с S таблицами.
Опять открываю на Лок форму основанную на Таблице1. Не закрывая эту форму, перехожу на терминальник и в созданном там файле пытаюсь открыть связанную Таблицу1...
Получаю сообщение о "дисковой или сетевой" ошибке.
Alex 112
Дата: 07.12.2009 16:50:52
Вы так и не ответили на мой вопрос 3 б). и 7 Тем не менее:

У вас на Лок путь к Таблица1 в клиентском mdb такой:

DATABASE=S:\db1.mdb;TABLE=Таблица1

А в терминальной сессии на Трм в аналогичном клиентском mdb такой:

DATABASE=\\tsclient\S\db1.mdb;TABLE=Таблица1

Неизвестно как отрабатывает Jet по такому пути из под терминальной сессии, если файл db1.mdb уже открыт другим пользователем (с Лок), пусть и не монопольно (по наличию s:\db1.ldb это видно). Судя по всему, нормально не отрабатывает, да и не должен.

Не понятно зачем (в вашем случае) "прокидывать" свой локально замэпенный диск S "внутрь" терминальной сессии, если можно просто напрямую сделать шару на самом Срв (\\Срв\Путь_папке) и коннектиться отовсюду к ней (и с Лок, и с Трм). Тогда в любом случае (и из терминальной сессии тоже) путь к Таблица1 у вас будет одинаковый и стандартный для Jet:

DATABASE=\\Срв\Путь_папке\db1.mdb;TABLE=Таблица1

Проведите такой эксперимент: перекиньте на Трм клиентский mdb с Лок и попробуйте открыть в нем Таблица1 (не важно в терминальной сессии или сидя напрямую за Трм) - получите сообщение:

Строка s:\db1.mdb задает ошибочный путь

т.к. реально такого сетевого пути на Трм нет, хотя в проводнике вы и видите диск "S на Лок".
АндрейК
Дата: 07.12.2009 17:55:49
1. Во всех моих прошлых сообщениях везде, где упоминается терминальник - имеется ввиду работа с ним в терминальной сессии...
2.
автор
реально такого сетевого пути на Трм нет
не могу с этим согласиться - если на Лок закрыть форму, то в файле mdb, который открыт в терминальной сесии, и таблицы которого связаны с "реальнонесуществующим" диском S, Таблица1 прекрасно открывается и практически мгновенно!
----------------------------------------------------------------------------------------
пробовал через ADO
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\<IP адрес Срв>\....\1.mdb;User Id=admin; Password=;"
таблица открывается, но с такими тормозами...!
Alex 112
Дата: 07.12.2009 21:29:19
автор
2. автор
реально такого сетевого пути на Трм нет

не могу с этим согласиться - если на Лок закрыть форму, то в файле mdb, который открыт в терминальной сесии, и таблицы которого связаны с "реальнонесуществующим" диском S, Таблица1 прекрасно открывается и практически мгновенно!

И правильно. Проверьте сами: откройте свойства коннекта к Таблица1 в клиентском mdb на Трм и посмотрите путь. А там решайте верить, своим глазам или нет. Далее, если уж себе не поверите, скопируйте оттуда путь и попробуйте, например, с ним создать и протестировать ODBC источник на этот mdb. Если результат теста вас не убедит, то я пас. Проконсультируйтесь с вашим админом об особенностях терминальных сессий (как дотягивается к данным Jet уже ваша область).

автор
прекрасно открывается и практически мгновенно

автор
пробовал через ADO
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\<IP адрес Срв>\....\1.mdb;User Id=admin; Password=;"
таблица открывается, но с такими тормозами...!

Этому багу (или фиче) наверное лет 10 с момента выхода Access 2000, кто о нем только не писал. В лом искать ссылки, смысл в том, что если в строке коннекта вы указаваете абсолютный сетевой путь вида \\файл_север\папка, велика вероятность получить тормоз, о котором пишете. Но только при ПЕРВОМ открытии коннекта. Если его не закрывать и использовать при последующем обращении к данным, тормоза уже не будет. Хорошо это описано у Гетца. Второй путь ухода от тормозов - использование в пути буквы замэппенного (подключенного диска). В этом случае, постоянное подключение к вашей шаре держится на уровне ОС (именно ваш случай, когда видите "практически мгновенное открытие"). Если вы раскидываете один и тот же клиентский mdb(mde) по разным компам, естественно, буква подключенной шары на них должна быть одинаковой, надеюсь, понятно почему.

И напоследок процитирую себя :)

автор
Не понятно зачем (в вашем случае) "прокидывать" свой локально замэпенный диск S "внутрь" терминальной сессии, если можно просто напрямую сделать шару на самом Срв (\\Срв\Путь_папке) и коннектиться отовсюду к ней (и с Лок, и с Трм).

Объясните смысл этого.
АндрейК
Дата: 08.12.2009 13:19:45
автор
автор
Не понятно зачем (в вашем случае) "прокидывать" свой локально замэпенный диск S "внутрь" терминальной сессии, если можно просто напрямую сделать шару на самом Срв (\\Срв\Путь_папке) и коннектиться отовсюду к ней (и с Лок, и с Трм).


Объясните смысл этого.
Оно - само. Открыл сессию, в проводнике Трм увидел свои локальные диски, среди них - диск S, который = расшаренной папке с табличной частью на Срв.
Что-то я совсем запутался...
Alex 112
Дата: 08.12.2009 14:09:57
автор
Оно - само. Открыл сессию, в проводнике Трм увидел свои локальные диски, среди них - диск S, который = расшаренной папке с табличной частью на Срв.
Что-то я совсем запутался...


Не само, а потому, как говорил выше, у вас в свойствах терминальной сессии стоит соответствующая галка. Смотреть нужно здесь:

Параметры - вкладка "Локальные ресурсы" - кнопка Подробнее - раскрыть ветку Устройства