![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dbExpress и MSSQL [D7, MSSQL]
Asdor © (2004-01-23 13:43:00)Здравствуйте, мастера.
При работе с TSQLConnection и TSQLDataset (в Delphi 7) с Борландовским драйвером для MSSQL (последняя версия, которую я нашел - dbexpmss.dll 7.0.2.113 от 10 октября 2002 г., 7:01:00) в рантайме не открывается больше одного набора данных (хотя MaxStmtsPerConn=0). Выдает код ошибки 16389, текст ошибки #10#10.
В дизайне - открывается.
Это драйвер триальный? или глюк?
Есть ли бесплатные рабочие драйвера для dbExpress и MSSQL?
Если есть, то где их взять?
Спасибо.
Asdor (2004-02-25 11:33:00) [1]To Desperado:
я его и не инстанцианирую... его мне даёт TSQLConnection... :)
To Artem0:
Да, видимо на АДО и придется переходить, если не купим платный драйвер... :) Хорошо хоть пока немного переписывать...
Artem03 (2004-02-25 11:10:00) [2]Могу предложить только одно - используй компоненты с закладки
ADO. За 2 года никаких проблем замечено не было.
Desdechado (2004-02-25 11:04:00) [3]TCustomSQLDataSet
Description
TCustomSQLDataSet encapsulates the properties, events, and methods for working with data accessed through dbExpress. Applications should not instantiate TCustomSQLDataSet objects.Instead, instantiate one of the descendant classes.
Asdor (2004-02-25 10:50:00) [4]Еще... Получающиеся запросы - нормальные и спокойновыполняются в QueryAnalyser.
Если использовать другой SQL-driver (dbxsda.dll) - тоже все выполняется нормально, но он триальный (возвращает не больше 6 полей из запроса)...
Asdor (2004-02-25 10:45:00) [5]Пример кода:
Кто-то снаружи вызывает метод объекта класса TClassMetadata.LoadClasses...
procedure TClassMetadata.LoadClasses(Connection:TSQLConnection; ClassId:Integer=-1);
var Query:TCustomSQLDataSet;
AClass:PClassRecord;
SQLStr:String;
Idx:Integer;
begin
If Assigned(Connection) then
begin
Query:=nil;
SqlStr:='Select * from CLASSES';
If ClassId<>-1 then
SqlStr:=SqlStr+' where CLASS_ID='+IntToStr(ClassId);
Connection.Execute(SqlStr, nil, @Query);
if Assigned(Query) then
try
... Какие-то полезные действия по заполнению AClass^...
Далее вызывается процедура подгрузки атрибутов класса...
LoadClassAtributes(Connection, AClass);
finally
Query.Free;
end;
end;
end;
procedure TClassMetadata.LoadClassAtributes(Connection:TSQLConnection; AClass:PCLassRecord);
var Query:TCustomSQLDataSet;
Atr:PAtributeRecord;
SqlStr:String;
Idx:Integer;
begin
If Assigned(Connection) and Assigned(AClass) then
begin
SqlStr:=Format('SELECT * FROM CLASS_ATRIBUTES '+
'WHERE CLASS_ID=%d '+
'ORDER BY CLASS_ATRIBUTE_NUMBER',[AClass^.ClassID]);
Query:=nil;
-- Exceptinon здесь... Connection.Execute(SqlStr, nil, @Query);
If Assigned(Query) then
try
... Полезные действия
finally
Query.Free;
end;
end;
end;
tesseract (2004-02-25 09:29:00) [6]Какие наборы данных? TSQLConnection - это соединение с базой данных, на него навешивается TSQLTable/TSQLDataSet - каждый из них пердоставляет доступ к ОДНОЙ таблице.
Desdechado (2004-02-24 18:53:00) [7]а как ты из одного SQLDataset пытаешься одновременно 2 набора получить?
Asdor (2004-02-24 18:39:00) [8]Искал. Та самая последняя dll'ка - отуда.
Нашел еще dbxsda, но он платный...
Бесплатная версия выдает не более 6 полей из запроса.
Вот и вопрос - может кто пользуется бесплатной рабочей
версией и поделится... :)
Desdechado (2004-01-23 13:52:00) [9]поищи на bdn.borland.com