powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / UNICODE и inoutParam CRecordset'a
1 сообщений из 1, страница 1 из 1
UNICODE и inoutParam CRecordset'a
    #32287944
FYRK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Совсем не понимаю !!!

В ANSI все работает, а в UNICODE значение из ХП не возращается в параметр!
:-((

Рекордсет такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void CProcSet::DoFieldExchange(CFieldExchange* pFX)
{
	//{{AFX_FIELD_MAP(CAssetProcSet)
	pFX->SetFieldType(CFieldExchange::outputColumn);
	RFX_Text(pFX, _T( "S_OUT" ), m_strOut);
	pFX->SetFieldType(CFieldExchange::inoutParam);
	RFX_Text(pFX, _T( "S_IN_OUT" ), m_strInOutParam);
	pFX->SetFieldType(CFieldExchange::param);
	RFX_Text(pFX, _T( "S_IN" ), m_strInParam);
	//}}AFX_FIELD_MAP
}


ХП такая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
CREATE PROCEDURE PREPARE_PERSONS_ADD_SP 
	@S_IN_OUT varchar( 3000 ) OUTPUT,
	@S_OPTION varchar( 255 ) = NULL
AS
 -- Declare var for control error arising
 
DECLARE @error int, @cur_error int
 -- Zeroize it
 
SET @error =  0 
SET @cur_error =  0 

 -- Start Transaction
 
BEGIN TRANSACTION
 /*
some code
*/ 
SELECT @S_IN_OUT = 'ID_PERSON = ' + CONVERT(varchar( 36 ), NEWID())
RUNOUT:
IF @error =  0 
BEGIN
	 -- Success. Commit the transaction.
 
	COMMIT TRANSACTION
	PRINT '{PREPARE_PERSONS_ADD_SP} - OK'
	SELECT '' AS S_OUT 
END
ELSE
BEGIN
	 -- An error occurred. Roll back the transaction.
 
	ROLLBACK TRANSACTION
	PRINT '{PREPARE_PERSONS_ADD_SP} - FAILURE'
	PRINT '   @S_IN_OUT = ' + @S_IN_OUT
	SELECT '###ERROR###' AS S_OUT
END
RETURN @error
GO


вызываю так:
Код: plaintext
1.
2.
3.
4.
5.
6.
CProcSet* pProc = new CProcSet(m_pDatabase);
pProc->m_strProcName = _T( "PREPARE_PERSONS_ADD_SP" );
pProc->m_strInOutParam = _T( "{79BA974B-0DE6-4C4C-8B9E-3FC0232EB5CD}" );
pProc->Open();
AfxMessageBox(pProc->m_strInOutParam); // вот тут жопа
pProc->Close();
delete pProc;


просто m_strInOutParam остается таким как и был до опена
Но ?ПОЧЕМУ? в ansi работает а в unicode - НЕТ !?!?!?!?!?!?!?!?!?

Уже писал другую ХП.
Начинал новый проект - чиста попробывать все это отдельно.
Менял типы параметров(varchar, nvarchar).
Коментировал все тело процедуры, оставляя только присвоение параметра.
Результат один: в ANSI все OK, в UNICODE - хер

Где искать?
Мож че посоветуете? А?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / UNICODE и inoutParam CRecordset'a
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]