|
|
|
Не выполняются процедуры через ADO
|
|||
|---|---|---|---|
|
#18+
Привет всем, корче проблема. Я пишу прогу для работы с базой, для этого использую ADO, все было нормально, пока не начал писать большие процедуры в MSSQL2к, проблема вот в чем, если процедура только на выборку даных - все класно, но если в ней есть операции апдейта, вставка или создания новой(у меня временной) таблицы, все програма выдает ошибку (когда я использую MS ADODC выдает такое Operation is not allowed when the object is closed), я в ADO не супер,работаю с ним не так то и давно, до этого на ODBC все это работало прекрасно. Мне почему-то кажется, что нужно искать в настройках сервака, если я не прав - исправте. Если кто-то встречал такую проблему, плиз помогите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 12:36 |
|
||
|
Не выполняются процедуры через ADO
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 12:52 |
|
||
|
Не выполняются процедуры через ADO
|
|||
|---|---|---|---|
|
#18+
Вот примеры: 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(); } Все равно не хочет работь нормально, когда процедура или создает новую таблицу или делает вставку, апдейт. Если в процедуре простая выборка - все работаэт прекрасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2003, 13:08 |
|
||
|
Не выполняются процедуры через ADO
|
|||
|---|---|---|---|
|
#18+
Народ, неужели никто не сталкивался с такой проблемой? Я думаю многие работают с ADO. Не может же такого быть, что бы не было решения. Не даром же microsoft сделала эту технологию и рекомендовала ее вместо старой ODBC. Помогите плиз, надо срочно, нужно доделать одну прогу и загвоздка лиш в этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2003, 09:25 |
|
||
|
Не выполняются процедуры через ADO
|
|||
|---|---|---|---|
|
#18+
Ну думаю мы тебя спасём :) Дело скорее всего в правах доступа. 1. Кем конектишься в базу данных - должен быть system administrator. (security->свойства логина, вторая закладка) и db_owner (там же третья) 2. Вроде всё. Если не поможет, иди на форум MSSQL и спроси там у Glory. Когда будешь задавать вопрос, не забудь указать от какого аккаунта запущен сервер и кем коннектишься и какие права у первого и второго, а то он будет ругаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2003, 11:07 |
|
||
|
Не выполняются процедуры через ADO
|
|||
|---|---|---|---|
|
#18+
Я так понял у вас не выполняются 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 в начале всех ваших процедур ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2003, 11:40 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2035665]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 424ms |

| 0 / 0 |
