![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Connect to Informix [D7, Informix]
Хома © (2004-09-29 17:35:00)Уважаемые програмисты. Помогите, если знаете. Насамом деле вопроса 2 и они друг друга заменяют.
1. Использую для конекта к информиксу dbExpress (возможно не лучшый вариант, может что еще посоветуете?). Но создаю его динамически в потоке. Компоненты такие: TSQLConnection <- TSQLDataSet <- TDataSetProvider <- TClientDataSet <- TDataSource.
SQL-запрос добавляю в TSQLDataSet, а открываю TClientDataSet. Но это так, к слову для проверки. Проблема в следующем. Создаю компоненты с владельцем nil. Инициализирую по примеру компонент из палитры. Но при попытки открыть Client выдается ошибка "Client: Missing data provider or data packet". Что могло ее вызвать?
2. Есть ли какие более хорошие компоненты для доступа к Информиксу? Я слышал о IDAC (Informix Data Access Components), но она триальная. Нет ли у кого крякнутой?
Хома (2004-09-30 09:56:00) [21]
Connection:=TSQLConnection.Create(nil);
qSelect:=TSQLDataSet.Create(nil);
qUpdate:=TSQLDataSet.Create(nil);
Provider:=TDataSetProvider.Create(nil);
Client:=TClientDataSet.Create(nil);
Source:=TDataSource.Create(nil);
with Connection do begin
ConnectionName:='InformixConnection';
DriverName:='Informix';
GetDriverFunc:='getSQLDriverINFORMIX';
LibraryName:='dbexpinf.dll';
LoginPrompt:=false;
VendorLib:='isqlb09a.dll';
Params.Add('DriverName=Informix');
Params.Add('HostName=server');
Params.Add('DataBase=db');
Params.Add('User_Name=user');
Params.Add('Password=pwd');
Params.Add('Informix TransIsolation=ReadCommited');
end;
qSelect.NoMetadata:=true;
qSelect.ObjectView:=true;
qSelect.SQLConnection:=Connection;
qUpdate.NoMetadata:=true;
qUpdate.SQLConnection:=Connection;
with Provider do begin
Constraints:=true;
DataSet:=qSelect;
Exported:=true;
Name:='Provider';
Options:=[];
ResolveToDataSet:=true;
UpdateMode:=upWhereAll;
end;
with Client do begin
AggregatesActive:=false;
DisableStringTrim:=false;
FetchOnDemand:=true;
ObjectView:=true;
PacketRecords:=-1;
ProviderName:='Provider';
StoreDefs:=true;
end;
Source.DataSet:=Client;
qSelect.Close;
qSelect.CommandText:=exec_sql;
Client.Open;
Это код создания. Клиент вроде заполнил весь. Может что еще не указал? Бага вылезает на строке Client.Open;
sniknik (2004-09-29 17:46:00) [22]> выдается ошибка "Client: Missing data provider or data packet". Что могло ее вызвать?
не все заполнил в клиентском датасете
имя правайдера не указал.