Страница 1 из 1

Первое изменение в In-Memory файл Error 48

Добавлено: 16 Июль 2009, 7:11
Anatoly
Windows Xp, C6.3 9058 АВС.
Создаю In-Memory файл. Начинаю менять (редактировать) в нем записи. При первой попытке записать измененную запись стабильно выдается сообщение "Unable To Log Transaction (48) attempting to frame the transaction on имяфайла", далее, если еще раз нажать Ok все идет нормально и все последующие записи меняются без проблем.
Проблема исчезает, если поменять драйвер файла, но естественно время создания такого файла увеличивается в порядки.
В чем дело? Кто-нибудь поборол эту проблему.

Re: Первое изменение в In-Memory файл Error 48

Добавлено: 16 Июль 2009, 8:38
Igor
Попробуй вставить в WindowManager.Init вот это Relate:MyMemory.UseLogout = 0 (Driver Memory transaction NO)

Re: Первое изменение в In-Memory файл Error 48

Добавлено: 16 Июль 2009, 9:26
Игорь Столяров
Если изменение файла идет из Browse - то похоже на потерю позицирования при сохранении записи.
Сделай PRIMARE KEY для списка в Browse.

Re: Первое изменение в In-Memory файл Error 48

Добавлено: 16 Июль 2009, 9:54
Anatoly
Спасибо. Помогло Relate:MyMemory.UseLogout = 0 (Driver Memory transaction NO).
Вариант 2 не выполним, поскольку флаг Primery Key для In-Memory файла задизейблен.

Re: Первое изменение в In-Memory файл Error 48

Добавлено: 16 Июль 2009, 14:35
Игорь Столяров
Anatoly писал(а):Вариант 2 не выполним, поскольку флаг Primery Key для In-Memory файла задизейблен.
Для любого файлового драйвера (в т.ч. и In-Memory) сначало нужно сделать ключ уникальным - атрибут UNIQUE, а потом уже включать PRIMERY. Обычно еще добавляется признак AUTO NUMBER и ключ стоится по отделному полю, например RecordID Long - автоматически. Вот и все. Другими словами - для BROWSE крайне желательно, что бы в списке был уникальный ключ, по которому можно позицировать указатель на текущую запись при ее изменении.