Имя: Пароль:
1C
 
Попытка записать через ADO в чужую базу
0 VadPl
 
04.08.08
16:03
Пытаюсь записать в чужую не 1С базу.
----------------------------------------------------------
Соединение=СоздатьОбъект("ADODB.Connection");
СтрокаКоннекта="driver={SQL Server};server=SERVER;uid=sa;pwd=******;Database=База";
Соединение.ConnectionTimeOut=20;
Соединение.CursorLocation=3;
------------- Вариант 1: ---------------------------------
Запрос = СоздатьОбъект("ADODB.Recordset");
Запрос.Open("SELECT * FROM TAB1",Соединение,3,3);
НовыйИД = НовыйИД + 1;
Запрос.AddNew();
Запрос.Fields("ID").Value = НовыйИД;
Запрос.Update();
Запрос.Close();
---------- Ошибка -------------------------------------------
Microsoft Cursor Engine: Произошли ошибки во время выполнения многошаговой операции. Проверте значения всех состояний.

------------- Вариант 2: ---------------------------------
ЗапросАДО=СоздатьОбъект("ADODB.Command");
ЗапросАДО.ActiveConnection=Соединение;
ТекстЗапроса="INSERT INTO TAB1 (ID) VALUES ("+СокрЛП(Строка(НовыйИД))+")";
ЗапросАДО.CommandText=ТекстЗапроса;
Результат=ЗапросАДО.Execute();
---------- Ошибка -------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert explicit value for identity column in table 'TAB1' when IDENTITY_INSERT is set to OFF.

------------- Вариант 2: ---------------------------------
ТекстЗапроса="SET IDENTITY_INSERT TAB1 ON";
ЗапросАДО.CommandText=ТекстЗапроса;
Результат=ЗапросАДО.Execute();
ТекстЗапроса="INSERT INTO TAB1 (ID) VALUES ("+СокрЛП(Строка(НовыйИД))+")";
ЗапросАДО.CommandText=ТекстЗапроса;
Результат=ЗапросАДО.Execute();
---------- Ошибка -------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][ODBC SQL Server Driver][SQL Server]Violation of PRIMARY KEY constraint 'PK_tab1'. Cannot insert duplicate key in object 'dbo.TAB1'.
--------------------------------------------------------------------

с ADO и SQL знаком не хорошо.
Вопрос:
где поискать или почитать в инете, что делать с этим,
или кто-то делал такое?
1 ТелепатБот
 
гуру
04.08.08
16:03
2 Nordok
 
04.08.08
16:09
TAB1 чё за структура таблицы?
3 ДенисЧ
 
04.08.08
16:09
"Cannot insert explicit value for identity column in table 'TAB1" - это понятно. Нельзя вствлять идентити-поля, явно не разрешив их
Cannot insert duplicate key in object  - тоже. Вставляешь неуникальное значение в первичный ключ
4 КонецЦикла
 
04.08.08
16:20
Чего надо-то?
Там одна колонка с identity?
Тогда
insert into TAB1 default values
5 VadPl
 
04.08.08
16:20
TAB1.ID - int
TAB1.S1 - smalint
...
TAB1.S10 - smalint
НовыйИД который вставляю, точно не повторяется
6 VadPl
 
04.08.08
16:30
На insert into TAB1 default values
->
Explicit value must be specified for identity column in table 'FRY' either when IDENTITY_INSERT is set to ON or when a replication user is inserting into a NOT FOR REPLICATION identity column.
7 VadPl
 
04.08.08
16:41
Спасибо ДенисЧ.
Cannot insert duplicate key in object  - тоже. Вставляешь неуникальное значение в первичный ключ.
Я настоящий идиот.
8 Nordok
 
04.08.08
16:42
Нефига не понял, ты руками хочешь заполнять identity колонку?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший