SQL server CE + ADO
От: VsevolodC Россия  
Дата: 27.04.02 13:14
Оценка:
Привет.

Возникла такая проблема:

create table T(id int identity(1,1) primary key);
insert into T(id) values(1);

на втором операторе выдается ошибка -2147217900.
Без identity все ok.
Все это через ADO на winCE:

Provider=Microsoft.SQLSERVER.OLEDB.CE.1.0;

а это сам вызов:

status = rs->Open(_variant_t(sql), _variant_t(connection), adOpenKeyset, adLockUnspecified, adCmdUnknown);

Посоветуйте что-нибудь. Хочется сохранить identity и писать туда свои значения.

Пока

12.09.03 18:27: Перенесено модератором из 'Базы данных' — AS
Re: SQL server CE + ADO
От: kig Россия  
Дата: 27.04.02 14:24
Оценка:
Здравствуйте VsevolodC, Вы писали:

VC>Привет.


VC>Возникла такая проблема:


VC>create table T(id int identity(1,1) primary key);

VC>insert into T(id) values(1);

VC>на втором операторе выдается ошибка -2147217900.

VC>Без identity все ok.
VC>Все это через ADO на winCE:

VC>Provider=Microsoft.SQLSERVER.OLEDB.CE.1.0;


VC>а это сам вызов:


VC>status = rs->Open(_variant_t(sql), _variant_t(connection), adOpenKeyset, adLockUnspecified, adCmdUnknown);


VC>Посоветуйте что-нибудь. Хочется сохранить identity и писать туда свои значения.


Посмотрите

SET IDENTITY_INSERT [ database. [ owner. ] ] { table } { ON | OFF }

Allows explicit values to be inserted into the identity column of a table.

в SQL Books online, если это конечно существует в SQL server CE (а что и в правду есть этот зверь на CE? :wow: )
Re[2]: SQL server CE + ADO
От: Аноним  
Дата: 27.04.02 14:56
Оценка:
Здравствуйте kig, Вы писали:

kig>Посмотрите


kig>
kig>SET IDENTITY_INSERT [ database. [ owner. ] ] { table } { ON | OFF }
kig>

kig>Allows explicit values to be inserted into the identity column of a table.

kig>в SQL Books online, если это конечно существует в SQL server CE (а что и в правду есть этот зверь на CE? :wow: )


SET IDENTITY_INSERT на СЕ не работает :(

Автоинкремент устроил бы, если б был простой способ заменить значения в связанных таблицах,
поскольку мне требуется перевести базу Access с PC на CE.
В обратную сторону таких проблем нет.
Re[3]: SQL server CE + ADO
От: vav Россия  
Дата: 29.04.02 01:35
Оценка:
А>SET IDENTITY_INSERT на СЕ не работает

а тригеры там есть?
тогда
1. убери Identity
2. создай некую функцию, которая будет возвращать уникальные значения
3. сделай тригер на INSERT и проверяй, если есть попытка вставить запись без значения ID, то брать значение из функции п.2.
Re: SQL server CE + ADO
От: Capone  
Дата: 29.04.02 07:39
Оценка:
Здравствуйте VsevolodC, Вы писали:

Для начала нужно узнать что это за ошибка:
1. Введи в отладчике в окне переменных такую строку: "status,hr" и прошагай пока не появится ошибка (это на уровне интерфейсов)
2. Если этого недостаточно, можно отформатировать и вывести более подробную информацию используя CDBErrorInfo::GetErrorRecords();
Re[2]: SQL server CE + ADO
От: VsevolodC Россия  
Дата: 29.04.02 09:03
Оценка:
Здравствуйте Capone, Вы писали:

C>Здравствуйте VsevolodC, Вы писали:


C>Для начала нужно узнать что это за ошибка:

C>1. Введи в отладчике в окне переменных такую строку: "status,hr" и прошагай пока не появится ошибка (это на уровне интерфейсов)
C>2. Если этого недостаточно, можно отформатировать и вывести более подробную информацию используя CDBErrorInfo::GetErrorRecords();

Пардон, не привел ошибку: -2147217900 (0x80040E14) что означает 'Incorrect syntax' без подробностей.
При SET IDENTITY_INSERT ON получаем то же самое.

А CDB означает CE database? У меня-то SQL server for CE.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.