Имя: Пароль:
1C
1С v8
Ошибка sql
0 log
 
04.02.13
09:42
ADO: [-2 147 217 873].{Microsoft OLE DB Provider for SQL Server}: Violation of UNIQUE KEY constraint 'IX_MenuItemsVer'. Cannot insert duplicate key in object 'MenuItemsVer'.
    "ВыполнитьЗапрос" (SMS)
(S:150600) ADO: [-2 147 217 873].{Microsoft OLE DB Provider for SQL Server}: The statement has been terminated.
    "ВыполнитьЗапрос" (SMS)
как такое лечить?
1 МихаилМ
 
04.02.13
09:44
или проверять , есть ли уже запись, или написать обработчик ошибок.
2 ДенисЧ
 
04.02.13
09:44
"Cannot insert duplicate key in object 'MenuItemsVer'. "

Судя по, это не 1с-база. Так что... Искать дубли, чистить...
3 isarzh
 
04.02.13
09:45
(1) уже существует ключ либо убрать уникальность из таблицы
4 sapphire
 
04.02.13
09:46
(0) Млин, а подумать уже нечем?!
Запись с такими ключевыми полями уже существует.
5 log
 
04.02.13
09:47
(3) а как это сделать на sql2000 ?
6 sda553
 
04.02.13
09:47
(0) У меня нет под рукой 1Ски, просто расскажите что это за таблица MenuItemsVer и по каким полям этот ключ?
7 sapphire
 
04.02.13
09:48
(5) Использовать UPDATE if @@ROWCOUNT=0 INSERT
8 isarzh
 
04.02.13
09:48
(5) а вообще задача какая?
9 log
 
04.02.13
09:52
(8) избавиться от этой ошибки
10 log
 
04.02.13
09:53
(6) таблица справочника, как посмотреть по каким полям ключ?
11 eklmn
 
гуру
04.02.13
09:55
ТиИ запусти и не лазий руками, если даже ошибку не в состоянии понять был
12 sapphire
 
04.02.13
09:55
(10) Посмотреть глазами, или запросом
13 sapphire
 
04.02.13
09:55
(11) Давай, до свиданья (с)
14 eklmn
 
гуру
04.02.13
09:57
(13) ну ну
15 sapphire
 
04.02.13
09:59
(14) Баранки гну, (0) почитай внимательно.
16 sapphire
 
04.02.13
10:08
(0) Покажи как INSERT выглядит.
в (7) идея в следующем:
Функция SQL @@ROWCOUNT возвращает число строк, затронутых при выполнении последней инструкции, тогда


UPDATE MenuItemsVer SET {чего INSERT-им} // Пытаемся обновить запись
IF @@ROWCOUNT=0 // Ни одной записи нет, значит можно вставить новую запись
INSERT MenuItemsVer VALUES()...
17 sda553
 
04.02.13
10:10
(10) Речь про восьмерку? Тогда таюлицы справочников там выглядят как _ReferenceXXXX
где ХХХХ номер справочника
18 eklmn
 
гуру
04.02.13
10:13
(15) да сорри, там походу вообще не 1С ))
19 МихаилМ
 
04.02.13
10:14
(16)
Ваш алгоритм расчитан на вставку одной записи.
20 log
 
04.02.13
10:30
а выгрузить-загрузить поможет?
21 sapphire
 
04.02.13
10:32
(19) Покажите, как Вы поточный INSERT из ADO DB сделаете :)
Конечно, это возможно, но, скорее всего, ТС делает INSERT по одной записи.
22 МихаилМ
 
04.02.13
11:14
(21)
ado db (wiki:ADOdb)
или
ado ?

для ms sql 2000 ole db реализован ~ на половину.
сответственно не уверен, что поддерживается вставка
и обновление.    

ado не люблю и не использую.
для mssql 2005 выше   под рукой ole db кода нет.

"поточный INSERT" - сомнительный термин, хотя понятный.
23 sapphire
 
04.02.13
11:18
(22) Речь идет об вставке из RECORDSET, т.е. вставить много записей можно либо текстом, либо через RECORDSET.

Разницу мне между ADO & ADODB  расскажи, плиз, коле не влом :)
24 МихаилМ
 
04.02.13
11:21
(23)
плохо ссылка
про adodb вставилась
wiki:ADOdb

не припомню, чтобы мы на "ты" переходили.
Независимо от того, куда вы едете — это в гору и против ветра!