Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не выполняются процедуры через ADO / 6 сообщений из 6, страница 1 из 1
13.12.2003, 12:36
    #32351813
johnnybo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняются процедуры через ADO
Привет всем, корче проблема.
Я пишу прогу для работы с базой, для этого использую ADO,
все было нормально, пока не начал писать большие процедуры в MSSQL2к,
проблема вот в чем, если процедура только на выборку даных - все класно, но если в ней есть операции апдейта, вставка или создания новой(у меня временной) таблицы, все програма выдает ошибку (когда я использую MS ADODC выдает такое Operation is not allowed when the object is closed), я в ADO не супер,работаю с ним не так то и давно, до этого на ODBC все это работало прекрасно.
Мне почему-то кажется, что нужно искать в настройках сервака, если я не прав - исправте.

Если кто-то встречал такую проблему, плиз помогите.
...
Рейтинг: 0 / 0
13.12.2003, 12:52
    #32351823
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняются процедуры через ADO
Покажи код ,
как ты это делаешь .
____
...
Рейтинг: 0 / 0
13.12.2003, 13:08
    #32351833
johnnybo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняются процедуры через ADO
Вот примеры:

C_Recordset cr;
m_ado.SetConnectionString(::m_strConnect);
m_ado.SetCommandType(1);
m_ado.SetRecordSource("exec proc_name");
m_ado.SetCursorType(1);
m_ado.Refresh();
cr=m_ado.GetRecordset();
m_dbgrid.SetDataSource(cr);
m_dbgrid.UpdateData();

Выдает ошибку Operation is not allowed when the object is closed.

или по другому:

_CommandPtr cmd; //command object
_RecordsetPtr rs; //recordset object
_ConnectionPtr conn; //connection object


try{
cmd.CreateInstance( __uuidof(Command));
rs.CreateInstance(__uuidof(Recordset));
conn.CreateInstance(__uuidof(Connection));
UpdateData(TRUE);
conn->CursorLocation = adUseClient;
conn->Open(_bstr_t( m_strConnect.GetBuffer(0) ), L"", L"", -1);
cmd->ActiveConnection = conn;
CString m_strQuery="exec proc_name";
cmd->CommandText = (_bstr_t) m_strQuery.GetBuffer(0);
cmd->CommandType = adCmdText;
rs = cmd->Execute(&vra,vt1, adCmdText);
m_dbgrid.SetDataSource((LPUNKNOWN)rs);
m_dbgrid.UpdateData();

}
catch (_com_error &e)
{
GenerateError(e.Error(), e.Description());
}
catch (...)
{

}

или даже так :

CADORecordset m_pRs;
m_pRs = CADORecordset(&::m_pDb);

if(m_pRs.Open("exec proc_name"))
{
m_dbgrid.SetDataSource(NULL);
C_Recordset cr;
m_pRs.GetFieldValue(2,m_str);
MessageBox((const char*)m_str);
m_dbgrid.SetDataSource((LPUNKNOWN)m_pRs.GetRecordset());
m_dbgrid.UpdateData();
}

else
{
AfxMessageBox(m_pDb.GetLastErrorString());
DWORD dwError = m_pDb.GetLastError();
}

Все равно не хочет работь нормально, когда процедура или создает новую таблицу или делает вставку, апдейт. Если в процедуре простая выборка - все работаэт прекрасно.
...
Рейтинг: 0 / 0
15.12.2003, 09:25
    #32352275
johnnybo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняются процедуры через ADO
Народ, неужели никто не сталкивался с такой проблемой?


Я думаю многие работают с ADO. Не может же такого быть, что бы не было решения. Не даром же microsoft сделала эту технологию и рекомендовала ее вместо старой ODBC.

Помогите плиз, надо срочно, нужно доделать одну прогу и загвоздка лиш в этом.
...
Рейтинг: 0 / 0
15.12.2003, 11:07
    #32352391
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняются процедуры через ADO
Ну думаю мы тебя спасём :)

Дело скорее всего в правах доступа.

1. Кем конектишься в базу данных - должен быть system administrator. (security->свойства логина, вторая закладка) и db_owner (там же третья)
2. Вроде всё. Если не поможет, иди на форум MSSQL и спроси там у Glory.
Когда будешь задавать вопрос, не забудь указать от какого аккаунта запущен сервер и кем коннектишься и какие права у первого и второго, а то он будет ругаться
...
Рейтинг: 0 / 0
15.12.2003, 11:40
    #32352450
funikovyuri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выполняются процедуры через ADO
Я так понял у вас не выполняются Stored Pocs не возвращающие recordset'ов?

Если да - то выполняете ее с так http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvbdev00/html/vb00j1.asp
или так http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvbdev00/html/vb00j1.asp

P.S> так же не забудьте про Set NOCOUNT ON в начале всех ваших процедур
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Не выполняются процедуры через ADO / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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