Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / .idx и DataSession / 12 сообщений из 12, страница 1 из 1
31.03.2008, 14:05
    #35224439
DinaF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
Одна таблица открывается в двух разных сессиях (DS1 и DS2). В DS1 для нее создается локальный индекс (idx) с выражением вида seek(…,cTmpAlias,…). Этот самый cTmpAlias не виден во второй сессии (DS2), поэтому попытка перевести таблицу в пессимистическую буферизацию выдает ошибку «Alias not found». Как открыть таблицу в DS2 без локального индекса, создаваемого в DS1? Как сделать этот индекс невидимым для DS2? Есть ли другой выход из этой ситуации?
...
Рейтинг: 0 / 0
31.03.2008, 14:18
    #35224487
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
Индекс создается только если таблица открыта в монопольном режиме (EXCLUSIVE), поэтому в другой DataSession таблицу открыть невозможно.
Создавать индексы для рабочих таблиц в процессе работы - это ошибка проектирования.

Но если очень надо, то после создания индекса закрывать таблицу и открывать заново в сетевом режиме (SHARED)
...
Рейтинг: 0 / 0
02.04.2008, 07:28
    #35228716
DinaF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
Dima TИндекс создается только если таблица открыта в монопольном режиме (EXCLUSIVE),
Попробуйте:
CREATE TABLE tablitsa (pole I)
USE tablitsa SHARED
INDEX ON pole TO c:\temp\ind
и увидите чудо!

Только мне это не поможет :(
...
Рейтинг: 0 / 0
02.04.2008, 09:13
    #35228836
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
DinaF Dima TИндекс создается только если таблица открыта в монопольном режиме (EXCLUSIVE),
Попробуйте:
CREATE TABLE tablitsa (pole I)
USE tablitsa SHARED
INDEX ON pole TO c:\temp\ind
и увидите чудо!

Только мне это не поможет :(
Странно конечно, но это даже хорошо что не поможет. Если бы такая конструкция работала, то стоит только во второй DS изменить таблицу как твой индекс перестанет ей соответствовать в первой.
Это неправильное решение изначально. Не могу понять зачем такое вообще может быть нужно.

Если это временная таблица - делай выборку в курсор (или создавай курсор и наполняй) и работай с курсором, а два одноименных курсора в разных DS допустимы.
Если нужен именно индекс - создай постоянный и им пользуйся.
...
Рейтинг: 0 / 0
02.04.2008, 13:09
    #35229663
DinaF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
Dima TСтранно конечно, но это даже хорошо что не поможет. Если бы такая конструкция работала, то стоит только во второй DS изменить таблицу как твой индекс перестанет ей соответствовать в первой.
Это неправильное решение изначально. Не могу понять зачем такое вообще может быть нужно.

Очевидно все так и работает, и мне тоже это не нравится.

Dima TЕсли это временная таблица - делай выборку в курсор (или создавай курсор и наполняй) и работай с курсором, а два одноименных курсора в разных DS допустимы.
Если нужен именно индекс - создай постоянный и им пользуйся.
Таблица постоянная. Во второй DS индекс этот вообще не нужен, но все равно виден и все портит. Как избавиться от него? Удалить - так он же в первой DS нужен. Замкнутый круг получается.
...
Рейтинг: 0 / 0
02.04.2008, 13:17
    #35229698
.idx и DataSession
DinaFВо второй DS индекс этот вообще не нужен, но все равно виден и все портит. Как избавиться от него? Удалить - так он же в первой DS нужен. Замкнутый круг получается.
И чем он мешает даже если не нужен? Почему надо избавиться?
...
Рейтинг: 0 / 0
02.04.2008, 14:35
    #35229989
DinaF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
мешает тем, что выдает ошибку (см. мое первое сообшение)
...
Рейтинг: 0 / 0
02.04.2008, 21:23
    #35231289
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
DinaFТаблица постоянная. Во второй DS индекс этот вообще не нужен, но все равно виден и все портит. Как избавиться от него? Удалить - так он же в первой DS нужен. Замкнутый круг получается.
Переписать первую форму чтобы он и там был не нужен. Это ошибка разработчика, ее надо исправлять. Ничего замкнутого.

Есть только один общий совет как обойти ошибки проектирования - исправить эту ошибку переписав неправильно спроектированный код. Это в итоге получается дешевле, чем потом изобретать обходные пути. В итоге все-равно доработки зайдут в тупик и все-равно прийдется переписывать, только гораздо больше.

Философствовать дальше бесполезно. Хочешь советов как обойти - показывай код и описывай задачу которую дорабатываешь. По твоему первому посту понятно только что замена временного индекса на постоянный все решит, а почему нельзя заменить непонятно.
...
Рейтинг: 0 / 0
02.04.2008, 21:30
    #35231300
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
IDX файл одной сесии не может мешать открытию таблицы в другой сесии. Иначе нельзя было ваще работать в многопользовательском режиме. Ищите ошибки в вашем индексном файле.

В DS1 для нее создается локальный индекс (idx) с выражением вида seek(…,cTmpAlias,…).
В смысле у вас в индексном выражении используется фунция Seek() причем по той же самой таблице?!!!! Аригинально.....

Давайте структуру таблицы, точное индексное выражение и что имено Вам нужн искать на самом деле
...
Рейтинг: 0 / 0
03.04.2008, 07:54
    #35231597
DinaF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
BurnВ смысле у вас в индексном выражении используется фунция Seek() причем по той же самой таблице?!!!! Аригинально.....

Дело именно в выражении seek, только cTmpAlias - другая, временная таблица (по этому ее и не видно в другой DS). Нужно все это для наложения сложных фильтров в первой DS, где просматривается таблица. Индекс формируется динамически и не всегда содержит выражение seek. Ошибка во второй DS возникает только при задании определенных параметров в форме поиска в первой DS (когда у индекса получается выражение с cTmpAlias).
cTmpAlias - выборка идентификаторов из основной таблицы содержащая только идентификаторы записей удовлетворяющие сложному условию фильтра. Т.е. фильтр содержит поля которых нет самой таблице (они есть в связанных с ней таблицах).
...
Рейтинг: 0 / 0
03.04.2008, 09:22
    #35231734
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
DinaF BurnВ смысле у вас в индексном выражении используется фунция Seek() причем по той же самой таблице?!!!! Аригинально.....

Дело именно в выражении seek, только cTmpAlias - другая, временная таблица (по этому ее и не видно в другой DS). Нужно все это для наложения сложных фильтров в первой DS, где просматривается таблица. Индекс формируется динамически и не всегда содержит выражение seek. Ошибка во второй DS возникает только при задании определенных параметров в форме поиска в первой DS (когда у индекса получается выражение с cTmpAlias).
cTmpAlias - выборка идентификаторов из основной таблицы содержащая только идентификаторы записей удовлетворяющие сложному условию фильтра. Т.е. фильтр содержит поля которых нет самой таблице (они есть в связанных с ней таблицах).
Опять общие фразы. Не хочешь детально описывать с кодом что у тебя там происходит, тогда сделай простой пример: отдельный проект, база из пары табличек, пару форм, выложи сюда с описанием что нажать чтобы ошибку увидеть. И как хочется чтобы работало.
...
Рейтинг: 0 / 0
03.04.2008, 13:04
    #35232673
Burn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.idx и DataSession
Все равно ничего не понятно.
Но похоже нужно иметь одну и туже таблицу открытую с разными индексами и фильтрам и т.п.
В этом случае разные датасесии ненужны - нкжно всего навсего открыть таблицу повторно в другой области. Для этого в команде USE есть модификатор AGAIN
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / .idx и DataSession / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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