Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Sql CE 3.5 +Ado  [new]
tsva
Member

Откуда:
Сообщений: 2
Помогите разобраться. Написал библиотеку для записи и чтения данных из MS SQL. С SQL 2005 все работает нормально , но при попытке обращения к SQL CE 3.5 возникает ошибка. Код ошибки 80040e21 Msg = IDispatch #3105

Вот куски кода. Здесь выполняется соединения с БД. Все нормально

struct StartOle {
StartOle() { CoInitialize(NULL); }
~StartOle() { CoUninitialize(); }
} _inst_StartOle;

try{
if(cn.CreateInstance(__uuidof(Connection))==S_OK){
cn->Open(_bstr_t(sConnect),_bstr_t(sUid), _bstr_t(sPwd), adConnectUnspecified);
pConnect=true;}
}
catch(_com_error &e){
DumpError(e);
return false;
}

///************************************************************************
Дальше выполняется поиск таблиц в БД тоже все нормально

ADODB::_RecordsetPtr Rs1;
Rs1.CreateInstance(__uuidof(ADODB::Recordset));

_bstr_t bstrTableType("Table");

varCriteria[0].vt = VT_EMPTY;
varCriteria[1].vt = VT_EMPTY;
varCriteria[2].vt = VT_EMPTY;
varCriteria[3] = bstrTableType;

VARIANT varData;
VARIANT varValue;
VARIANT varValueBD;
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[1];
rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 4;
psa = SafeArrayCreate(VT_VARIANT, 1, rgsabound);

for( lIndex = 0 ; lIndex < 4 ;lIndex++)
{
hr = SafeArrayPutElement(psa, &lIndex,&varCriteria[lIndex]);
}
varData.vt = VT_VARIANT | VT_ARRAY;
V_ARRAY(&varData) = psa;

Rs1 = cn->OpenSchema(ADODB::adSchemaTables,varData);


csTemp.Empty();
csTempBD.Empty();
while (VARIANT_TRUE != Rs1->GetEndOfFile())
{
varValueBD = Rs1->Fields->GetItem(_variant_t((long)0))->Value;
if(varValueBD.vt == VT_BSTR)
csTempBD = varValueBD.bstrVal;


varValue = Rs1->Fields->GetItem(_variant_t((long)2))->Value;
if(varValue.vt == VT_BSTR)
{
csTemp = varValue.bstrVal;

if(strcmp(csTemp,sTbl)!=0){
Rs1->MoveNext();
continue;}

kTbl++;

CString queryTab="";
queryTab.Format("select * from %s",csTemp);
if(maskFieldKey.GetLength()>0)
{
maskFieldKey.TrimRight(",");
kAllFieldNotNull=_getAllNotNullField(queryTab);
recFlKey=true;
}
//****************************************************************************
Здесь проверяются все поля таблицы имеющие значения поля NOT NULL
int Cmyado::_getAllNotNullField( CString sTbl )
{
int res=0;
ADODB::_RecordsetPtr Rs3;
Rs3.CreateInstance(__uuidof(ADODB::Recordset));

try
{
Rs3->Open((LPCTSTR)sTbl, // вот здесь ломается. Этот медот или не может использоваться
_variant_t((IDispatch *)cn,true), с этой базой или может как то нужно по другому обращаться?
adOpenKeyset, флаги эти я менял и на писсимистик и на динамик и на статик
adLockOptimistic почему не работает не ясно..(((
,adCmdText);

int kolField = Rs3->Fields->Count;

for(int iCol=0;iCol<kolField;iCol++)
if(FieldIsNull!= Rs3->Fields->GetItem(_variant_t((long)iCol))->GetAttributes())
res++;

Rs3->Close();
}
catch(_com_error &e)
{
// Exception handling.
DumpError(e);
return -1;
}


Если ктото поможет буду очень благодарен. Заранее спасибо.
29 ноя 11, 20:33    [11680080]     Ответить | Цитировать Сообщить модератору
 Re: Sql CE 3.5 +Ado  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
tsva
Если ктото поможет буду очень благодарен. Заранее спасибо.
Вряд ли тут кто то знает, это форум по SQL Server.

Попросите модератора перенести топик в форум по вашему языку программирования.
29 ноя 11, 20:58    [11680178]     Ответить | Цитировать Сообщить модератору
 Re: Sql CE 3.5 +Ado  [new]
tsva
Member

Откуда:
Сообщений: 2
Может можно как то самому переместить эту тему или это только модератор может сделать? Если только модераторы то к Вам просьба переместите мою тему в нужную ветку.
30 ноя 11, 01:07    [11680927]     Ответить | Цитировать Сообщить модератору
 Re: Sql CE 3.5 +Ado  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
tsva
Может можно как то самому переместить эту тему или это только модератор может сделать? Если только модераторы то к Вам просьба переместите мою тему в нужную ветку.
Нажмите кнопку "Сообщить модератору" и изложите свою просьбу.
30 ноя 11, 09:55    [11681453]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить