Страница 1 из 1
Ошибка добавления данных
Добавлено: 02 авг 2011, 10:02
niteo
Добрый день, возникает ошибка при попытке добавить данные в таблицу:
Код: Выделить всё
Ошибка 5
Дублированное значение при уникальном ключе
в таблице SERVLEN
Уникальный индекс SERVLEN0
Поле FNREC Comp(8): 0x251....3001 Таблица N2512
Продолжить редактирование
Да / Нет
Жму
ДА
Дальше говорит, что снова дублирование ключа.
Вообщем смысл понятен, дублируется ключ, но как тогда добавить данные в таблицу из своего интерфейса?
Вот код:
Код: Выделить всё
if (getfirst servlen where ((persons.nrec == servlen.person and 000000000000008Ah == servlen.position)) = tsOk)
{
servlen.nrec := lastnrec + i;
servlen.position := 130000000004BA0h;
insert current servlen;
}
Цель: необходимо добавить человеку новый стаж.
Re: Ошибка добавления данных
Добавлено: 02 авг 2011, 10:19
n0where
Код: Выделить всё
if (getfirst servlen where ((persons.nrec == servlen.person and 000000000000008Ah == servlen.position)) = tsOk)
{
servlen.nrec := 0;
servlen.position := 130000000004BA0h;
insert current servlen;
}
Если надо nRec новый то 0 ставте.
Re: Ошибка добавления данных
Добавлено: 02 авг 2011, 10:49
niteo
n0where писал(а):
Если надо nRec новый то 0 ставте.
Спасибо, помогло =)
Re: Ошибка добавления данных
Добавлено: 02 авг 2011, 12:38
Masygreen
Re: Ошибка добавления данных
Добавлено: 02 авг 2011, 12:53
n0where
Masygreen
Предполагаю, что им копирование нужно.
Re: Ошибка добавления данных
Добавлено: 02 авг 2011, 15:03
Semi-bit
Masygreen писал(а):еще неплохо бы
а затем
Код: Выделить всё
servlen.buffer := servlen_old.buffer;
servlen.nrec := 0;
несмотря на кажущуюся нелепость, в циклах помогает
Re: Ошибка добавления данных
Добавлено: 02 авг 2011, 16:01
n0where
Semi-bit
А нафиг синоним делать?
Re: Ошибка добавления данных
Добавлено: 04 авг 2011, 08:56
Semi-bit
n0where
Стояла задача создать акт из ДО. Дополнительные данные, такие, как внешние атрибуты, ttndoc, внешние атрибуты к ttndoc, получалось скопировать, заменив их привязку. Без синонимов как-то сложновато выходило.
В любом случае, когда значение одного поля требуется перманентно, проще на его таблицу завести синоним, чем постоянно переходить туда-сюда (после инсерта поля в буфере принимают вставленные значения).
Re: Ошибка добавления данных
Добавлено: 04 авг 2011, 09:29
n0where
Semi-bit
Просто читал гдето что не рекомендуется пользоваться синонимами, т.к. они жёстко тормозят запрос.
С другой стороны я не понимаю зачем юзать синоним, если надо изменить привязку к полю таблицы источника nRec только, сохранил в переменную оригинальный nRec и вперёд меняем ))
В любом случае каждый решает по своему )
Re: Ошибка добавления данных
Добавлено: 04 авг 2011, 12:30
Vik
n0where писал(а):Просто читал гдето что не рекомендуется пользоваться синонимами, т.к. они жёстко тормозят запрос.
А где читали, не вспомните? Что-то не замечал ни разу каких-либо тормозов из-за синонимов.
Re: Ошибка добавления данных
Добавлено: 04 авг 2011, 14:32
Semi-bit
Vik писал(а):n0where писал(а):Просто читал гдето что не рекомендуется пользоваться синонимами, т.к. они жёстко тормозят запрос.
А где читали, не вспомните? Что-то не замечал ни разу каких-либо тормозов из-за синонимов.
Возможно, тормозили они из-за ошибок в проектировании вьюхи, либо в ранних версиях Атлантиса.
Имхо, действительно необходимо их использовать только тогда, когда необходима выборка данных по другому индексу, причём одновременная (иначе баунды бы помогли).
С другой стороны, использование переменных и баундов не всегда является красивым решением. Зачастую пользоваться синонимами удобнее. Иначе можно свихнуться, придумывая название для 100500-й (не только nRec менять пришлось) переменной, а потом (в силу отсутствия подстановки) их перепутать и свихнуться снова, отлаживая получившееся безобразие.
В любом случае, со временем актуальность информации меняется. "На глазок" я разницы в быстродействии не замечал.