Здравствуйте Pseudomax, Вы писали:
P>В таблице SQL Server есть столбец ID, с автоинкрементом. P>Каким образом получить содержимое этого этого столбца для новой записи?
[skipped]
Вы часом, не издеваетесь? Совсем недавно эта тема обсуждалась... Да и поиск по форумам теперь работает нормально...
Здравствуйте Flamer, Вы писали:
F>Здравствуйте Pseudomax, Вы писали:
P>>В таблице SQL Server есть столбец ID, с автоинкрементом. P>>Каким образом получить содержимое этого этого столбца для новой записи?
F>[skipped]
F>Вы часом, не издеваетесь? Совсем недавно эта тема обсуждалась... Да и поиск по форумам теперь работает нормально...
Я не издеваюсь. Не было времени искать в форуме, так что извиняйте.
[]
F>>Вы часом, не издеваетесь? Совсем недавно эта тема обсуждалась... Да и поиск по форумам теперь работает нормально...
P>Я не издеваюсь. Не было времени искать в форуме, так что извиняйте.
По-вашему, у других время есть за вас искать? Однако... Ладно, вот вам:
Здравствуйте Flamer, Вы писали:
F>Здравствуйте Pseudomax, Вы писали:
F>[]
F>>>Вы часом, не издеваетесь? Совсем недавно эта тема обсуждалась... Да и поиск по форумам теперь работает нормально...
P>>Я не издеваюсь. Не было времени искать в форуме, так что извиняйте.
F>По-вашему, у других время есть за вас искать? Однако... Ладно, вот вам:
F>http://www.rsdn.ru/forum/Message.aspx?mid=113669
P>Этот же запрос в Query Analyzer проходит на ура.
Поробуй нечто подобное:
// isert new row to Lists table
ADO::_RecordsetPtr rsetPtr;
TESTHR( rsetPtr.CreateInstance(__uuidof(ADO::Recordset)) );
TESTHR( rsetPtr->Open(L"Lists",
_variant_t((IDispatch *)m_adoConnPtr,true),
ADO::adOpenStatic,
ADO::adLockOptimistic,
ADO::adCmdTable) ); // open recordset for table
TESTHR( rsetPtr->AddNew() ); // add new row
rsetPtr->Fields->Item[L"list_type_id"]->Value = listType;// set value for 'list_type_id' field
TESTHR( rsetPtr->Update() ); // update dtabase
_variant_t variant = rsetPtr->Fields->Item[L"list_guid"]->Value; // get GUID of new List
SK>// isert new row to Lists table
SK>ADO::_RecordsetPtr rsetPtr;
SK>TESTHR( rsetPtr.CreateInstance(__uuidof(ADO::Recordset)) );
SK>TESTHR( rsetPtr->Open(L"Lists",
SK> _variant_t((IDispatch *)m_adoConnPtr,true),
SK> ADO::adOpenStatic,
SK> ADO::adLockOptimistic,
SK> ADO::adCmdTable) ); // open recordset for table
SK>TESTHR( rsetPtr->AddNew() ); // add new row
rsetPtr->>Fields->Item[L"list_type_id"]->Value = listType;// set value for 'list_type_id' field
SK>TESTHR( rsetPtr->Update() ); // update dtabase
SK>_variant_t variant = rsetPtr->Fields->Item[L"list_guid"]->Value; // get GUID of new List
SK>
После Update() сделайте Resync(), который поднимет обратно в рекордсет все обновленные поля.
Здравствуйте Andrey_N, Вы писали:
AN>Здравствуйте StanislavK, Вы писали:
SK>>
SK>>// isert new row to Lists table
SK>>ADO::_RecordsetPtr rsetPtr;
SK>>TESTHR( rsetPtr.CreateInstance(__uuidof(ADO::Recordset)) );
SK>>TESTHR( rsetPtr->Open(L"Lists",
SK>> _variant_t((IDispatch *)m_adoConnPtr,true),
SK>> ADO::adOpenStatic,
SK>> ADO::adLockOptimistic,
SK>> ADO::adCmdTable) ); // open recordset for table
SK>>TESTHR( rsetPtr->AddNew() ); // add new row
rsetPtr->>>Fields->Item[L"list_type_id"]->Value = listType;// set value for 'list_type_id' field
SK>>TESTHR( rsetPtr->Update() ); // update dtabase
SK>>_variant_t variant = rsetPtr->Fields->Item[L"list_guid"]->Value; // get GUID of new List
SK>>
AN>После Update() сделайте Resync(), который поднимет обратно в рекордсет все обновленные поля.
Он и так все нормально "поднимает". Всмысле этот код вполне работает и значение генерируемого поля возвращается. Или ты имел в виду, что-то другое?
Здравствуйте StanislavK, Вы писали:
SK>Здравствуйте Andrey_N, Вы писали:
AN>>Здравствуйте StanislavK, Вы писали:
SK>>>
SK>>>// isert new row to Lists table
SK>>>ADO::_RecordsetPtr rsetPtr;
SK>>>TESTHR( rsetPtr.CreateInstance(__uuidof(ADO::Recordset)) );
SK>>>TESTHR( rsetPtr->Open(L"Lists",
SK>>> _variant_t((IDispatch *)m_adoConnPtr,true),
SK>>> ADO::adOpenStatic,
SK>>> ADO::adLockOptimistic,
SK>>> ADO::adCmdTable) ); // open recordset for table
SK>>>TESTHR( rsetPtr->AddNew() ); // add new row
rsetPtr->>>>Fields->Item[L"list_type_id"]->Value = listType;// set value for 'list_type_id' field
SK>>>TESTHR( rsetPtr->Update() ); // update dtabase
SK>>>_variant_t variant = rsetPtr->Fields->Item[L"list_guid"]->Value; // get GUID of new List
SK>>>
AN>>После Update() сделайте Resync(), который поднимет обратно в рекордсет все обновленные поля. SK>Он и так все нормально "поднимает". Всмысле этот код вполне работает и значение генерируемого поля возвращается. Или ты имел в виду, что-то другое?
Простите, я невнимательно прочитал условия курсора. Я использовал Static, _Client_, _LockPessimistic_ и, насколько я помню, без Resync() данные не обновлялись. Видимо вариант курсора Static, _Server_, _LockOptimistic_ этого не требует. Ни описание Update(), ни Resync() не содержат замечаний про тип курсора.