powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что за глюк???
7 сообщений из 7, страница 1 из 1
Что за глюк???
    #32303562
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица s1
у нее уникальный индекс kds1
На добавлении записи в kds1 стоит '*' + recno('s1')

С этим файлом работают разные пользователи...

И вот один из них присылает мне испорченный архив...
В архивном файле я вижу 2 одинаковых записи...
record 20
kds1 = '*20'

record 31
kds1 = '*20'
Обе записи удаленные...

Архив создается очень просто...
Принцип:...
copy s1 to .\Arxiv\s1_c
создается бат файл который архивирует...

При восстановлении соответсвенно возникает ошибка о неуникальности индексов... (kds1)
И соответсвенно нет записей после 30...

Принцип восстановления:...
Бат файл разархивирует
потом
sele s1
append from .\Arxiv\s1_c

Как такое может произойти???
...
Рейтинг: 0 / 0
Что за глюк???
    #32304150
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уник.ключ = '*'+str(recno()) - очень опасная вещь, не дай бог кто-то сделает Pack, все индексу - сразу смерть.
А как в запись recno=31 записалось '*20' (Pack надеюсь никто не делал?) ,
то это надо код анализировать, который формирует значение ключа, и откуда он вызывается из приложения, из хранимой процедуры или это default value of field?
...
Рейтинг: 0 / 0
Что за глюк???
    #32304259
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrew_Pr:
уник.ключ = '*'+str(recno()) - очень опасная вещь, не дай бог кто-то сделает Pack, все индексу - сразу смерть

Насчет уник.ключ я поторопился...

Там стоит функция...
В таблице для каждой табл. есть свое поле со значением ключа...

например: для s1

Procedure new_id
Parameters my_val_prish
SEEK(my_val_prish,'tabl_kd','pole_kd')
my_val = tabl_kd.my_kd
tabl_kd.my_kd = tabl_kd.my_kd + 1
Return my_val

уник.ключ s1 = '*'+alltrim(str(new_id('s1')))


откуда он вызывается из приложения, из хранимой процедуры или это default value of field?
Вызывается из default value of field
...
Рейтинг: 0 / 0
Что за глюк???
    #32305965
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то надо

IF rlock('tabl_kd') && Set reprocess to -1
my_val = tabl_kd.my_kd
tabl_kd.my_kd = tabl_kd.my_kd + 1
end if

Хотя странно, что разрыв между дублирующимися ключами не 1-2, а целых 10 записей.
...
Рейтинг: 0 / 0
Что за глюк???
    #32305996
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и
tabl_kd.my_kd = tabl_kd.my_kd + 1
естественно не прокатит.
Я думаю, под этим имелось ввиду
replace tabl_kd.my_kd with tabl_kd.my_kd + 1
...
Рейтинг: 0 / 0
Что за глюк???
    #32305999
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrew_Pr:
Хотя странно, что разрыв между дублирующимися ключами не 1-2, а целых 10 записей.

По-сути... такое произойди не должно???
Что делать с этим???
Исправлять я не могу... Так как привязано куча информации...
Получится что где-то исчезнет... а где-то добавится лишняя информация...
Если убивать все одинаковые... То боюсь пользователи не будут рады такому решению...

Вот и сижу... как у разбитого КОРЫТА... Даже и не знаю че с этим делать...
...
Рейтинг: 0 / 0
Что за глюк???
    #32306377
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> По-сути... такое произойди не должно???
я разве не понятно написал?
видимо, два юзера одновременно считали одно и то же значение счетчика чтобы это не повторялось, операторы чтения и обновления счетчика нужно
заключить внутри if rlock() ... endif unlock
> Что делать с этим???
Придется вручную исправить ключ в данной записи и потом все ссылки на него.
> Получится что где-то исчезнет... а где-то добавится лишняя информация... так сейчас , ведь то же лажа в БД получилась! один и тот же внешний ключ не понятно на какой из двух элем-тов справочника ссылается.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что за глюк???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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