powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / локально представлени и неуникальные записи
3 сообщений из 3, страница 1 из 1
локально представлени и неуникальные записи
    #34845811
АлексейО
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть таблица, в которой могут быть абсолютно равные записи (по всем полям), (ненормально конечно, но "сложившаяся технология")
редактирование таблици осуществляется через локальное представление,
ключевыми полями назначены все поля
дак вот при редактирование неуникальных записей происходит ошибка уникальности и изменяются все таковые записи - это впрочем понятно почему.
догадываюсь что правильней при обнаружение неуникальности непроводить изменений,
но узнаю об этом уже при выполнение tableupdate
ошибка возвращается, но изменения проводятся
догадываюсь, что можно обернуть tableupdate в транзакции и откатить по ошибке.
а нет ли более изящных решений?
...
Рейтинг: 0 / 0
локально представлени и неуникальные записи
    #34845910
Рома Б.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего изящнее введения суррогатного ключа (дополнительное поле-первичный ключ) в голову не приходит. Сам много раз пользовался: в уже давно рабочие базы вводил суррогатный ключ, что позволяло однозначно идентифицировать записи, например, для передачи по интернету не всей базы, а только изменённых строк для критичных по скорости филиалов предприятия.
...
Рейтинг: 0 / 0
локально представлени и неуникальные записи
    #34845920
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. сделать ключи - уникальные ID

2.да, транзакция и откат в случае ошибки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
* в курсоре что-то потрогали
sqlsetprop(.nConnection, 'Transactions',  2 )
if !tableupdate(.t.,.t.,.Alias)
	* ошибка, не смогли сохранить изменения на сервер
	sqlrollback(.nConnection)
	msg()
	local laErrors( 1 ), lcErrMessage
	=aerror(laErrors)
	text to lcErrMessage noshow pretext  7 
		КАД. Ошибка сохранения изменений в таблице <<.Tables>>.
		<<iif(alen(laErrors)>= 2 ,laErrors[ 2 ],'Ошибка не идентифицирована.')>>
	endtext
	messagebox(lcErrMessage, 16 ,'Класс КА')
	return .f.
else &&!tableupdate(.t.,.t.,.Alias)
	* все хорошо, сохранились
	sqlcommit(.nConnection)
endif
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / локально представлени и неуникальные записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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