прога на билдере, работает с oracle через ADO, Oracle provider for OLE DB - драйвер, на моей машине пашет, на другой - нет , говорит - не найден указанный поставщик, возможно он неправильно установлен... oracle клиент установлен, bde (он там используется) - тоже, в чем косяк - не пойму...
сделай приблизительно так...20.10.04 05:25 Автор: void <Grebnev Valery> Статус: Elderman
> прога на билдере, работает с oracle через ADO, Oracle > provider for OLE DB - драйвер, на моей машине пашет, на > другой - нет , говорит - не найден указанный поставщик, > возможно он неправильно установлен... oracle клиент > установлен, bde (он там используется) - тоже, в чем косяк - > не пойму... сделай приблизительно так...
Оберни (wrap up) все объекты доступа к данным, которые наиболее усточиво работают в твоей инфораструктуре приблизительно так:
/////////////////////////////////////////////////////////////////////////////
Тогда ты можешь по "имени" создавать требуемые тебе объекты приблизительно так:
//---------------------------------------------------------------------------
// Пример1 использования интерфейса IQueryInterface объектов доступа к данным.
// Объекты, реализующие IQueryInterface, построены с использлванием классов
// и компонент Borland BDE, ADO, Microsoft MFC.
//
// LPCTSTR inst_type - тип объекта доступа к данным ("bde", "ado"...)
// LPCTSTR connection - строка соединения, например, алиас BDE
//
void testquery( LPCTSTR inst_type, LPCTSTR connection )
{
IQueryInterface* IQuery;
_tprintf(_TEXT("\nInstance type:\t%s\nConnection:\t%s\ntry ...\n\n"), inst_type, connection);
// Пробуем создать объект доступа к данным типа LPCTSTR inst_type,
// например, inst_type = "BDE", и получить его интерфейс
// IQueryInterface* IQuery
//
if( FAILED( CreateQueryInstance(&IQuery, inst_type )) )
{
_tprintf(_TEXT("... Can't create query instance %s !\n"), inst_type);
return;
}
// Подключаемся к источнику данных LPCTSTR connection.
IQuery->Connection( connection );
// Пробуем выполнить SQL запрос.
if( FAILED(IQuery->Open( _TEXT("select * from tbl1") )))
{
IQuery->Delete();
return;
}
// В переменные ival,sval будем читать данные
int ival;
LPTSTR sval;
// Далее предполагается:
// существует источник ODBC "ExampleDb";
// база данных, заданная DSN = ExampleDb, содержит таблицу tbl1;
// в таблице tbl1 имеются целое поле "id" и текстовое поле "txt".
//
////////////////////////////////////////////////////////////////////////
// Пример 1. Функция testquery. Использование интерфейса IQueryInteface.
//
_tprintf(_TEXT("IQUERY INTERFACE EXAMPLE\n"));
// Пробуем ODBC сокеты Borland BDE.
testquery(_TEXT("bde"), _TEXT("ExampleDb"));
// Пробуем ADO.
testquery(_TEXT("ado"), _TEXT("Provider=MSDASQL.1;Persist Security Info=False;Data Source=ExampleDb"));
// Пробуем интерфейс классов MFC доступа к драйверам ODBC.
testquery(_TEXT("odbc.mfc"), _TEXT("ExampleDb"));
// Пробуем интерфейс обёрток MFC доступа к ADO.
testquery(_TEXT("ado.mfc"), _TEXT("Provider=MSDASQL.1;Persist Security Info=False;Data Source=ExampleDb"));
_tprintf(_TEXT("\nDone. Press any key..."));
getch();
}
//---------------------------------------------------------------------------
// end interfaces.cpp
Выхлоп такой - если в критические для тебя дни на клиенте не работает OLE DB (по непонятным причинам),
а разбираться некогда,и быть уволеным не хочется, то просто в текстовом (можешь модно и в XML)
конфигурационном файлике на клиенте говоришь - использовать ODBC вместо BDE (native), или ADO...
Короче в таком духе.
Очень помогает... Хотя на первый звгляд может показаться громозким.
действительно немного громоздким кажется...20.10.04 10:31 Автор: Duke Статус: Незарегистрированный пользователь
действительно немного громоздким кажется...
все разрешилось переустановкой oracle client с версии runtime на administrator, не знаю почему так... но помогло и пока заморачиваться не буду.
спасибо.