powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / странное поведение PACK
5 сообщений из 5, страница 1 из 1
странное поведение PACK
    #34167085
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VFP 8.0

На Анлоаде формы висит следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
USE

USE sharhldr EXCLUSIVE
SELECT Sharhldr
PACK

USE Transaction_detail EXCLUSIVE
SELECT Transaction_detail
PACK
на первом паке вылетает ошибка - таблица должна быть открыта эксклюзивно.
Или я чего-то не понимаю, или ....

Попробовал сделать так
Код: plaintext
1.
2.
3.
4.
USE

PACK DBF sharhldr
PACK DBF Transaction_detail
Проходит, но судя по всему не читятся индексы.
Первичный ключ в sharhldr сделан очень тупо. Там не автоинкремент, а число, и ключ получается с помощью МАХ()+1. И при следующей вставке вылетает ошибка - нарушение уникальности первичного ключа.
Если сделать упаковку через среду Фокса, то есть открыть таблицу, выбрать пункт меню "Удалить помеченные поля", то убивается всё хорошо

Как разрулить ситуацию?
...
Рейтинг: 0 / 0
странное поведение PACK
    #34167161
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Обьясни для чего делать PACK?

2. Если уж очень хочется, то открыть таблицу эксклюзивно

Код: plaintext
1.
2.
use table exclu
или
set exclu on
...
Рейтинг: 0 / 0
странное поведение PACK
    #34167295
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist1. Обьясни для чего делать PACK?
Повторюсь:
Первичный ключ в sharhldr сделан очень тупо. Там не автоинкремент, а число, и ключ получается с помощью МАХ()+1. И при следующей вставке вылетает ошибка - нарушение уникальности первичного ключа.

PaulWist2. Если уж очень хочется, то открыть таблицу эксклюзивно
Код: plaintext
1.
2.
use table exclu
или
set exclu on

Как я уже и писал, при use table exclu вылетает ошибка на первом паке - таблица должна быть открыта эксклюзивно.
Почему - не знаю. Код я привёл. Подскажите, что в нём не так.
...
Рейтинг: 0 / 0
странное поведение PACK
    #34167355
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того чтобы не ругалось на нарушение уникальности
перед max()+1 нужно сделать set delete off
просто USE - закрывает таблицу в текущей области , поэтому
лучше сделать
select sharhldr
use
select Transaction_detail
use
или
use in table_name
однако если кто-то уже открыл таблицу , exclusive открытия не произойдет .
проверить это можно с помощью ISEXCLUSIVE()
...
Рейтинг: 0 / 0
странное поведение PACK
    #34167550
mwolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, решил идти по правильному пути - поставил поле автоинкрементом
Теперь код проверяю, но вроде бы всё нормально.
Всем спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / странное поведение PACK
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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