IDataSet и TClientDataSet отображение результатов выполнения в DBGrid

Автор 1ndifferent, 02.09.16, 14:12:53

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

1ndifferent

Доброго времени суток.
Пытаюсь вывалить всех пользователей текущей БД из плагина Лоцман и вывести в DBGrid:

var
retcode: integer;
errmessage: string;
IDS: IDataSet;

begin
ClientDataSet1:= TClientDataSet.Create(nil);
IDS:= FPluginCall.GetDataSet('GetUserList', VarArrayOf([retcode, errmessage]));
ClientDataSet1.Data:=IDS.Data; //на этом этапе плагин крашится
ClientDataSet1.Active:=true;
end;
///////////////////////////////////////////////////

begin
ClientDataSet1:= TClientDataSet.Create(nil);
ClientDataSet1.Data:= FPluginCall.RunMethod('GetUserList', VarArrayOf([retcode, errmessage])); //тоже не работает
ClientDataSet1.Active:=true;

end;

При этом если страндартным образом получать построчно значения через GetValue, все возвращается, но мне нужен датасет, чтобы его можно было отфильтровать и отобразить в гриде :|

Надеюсь на вашу помощь

Chaa

Попробуйте запустить плагин под отладчиком и посмотреть, в каком именно месте все сломалось.
Вообще, такой код должен работать.

1ndifferent

Вылетает всегда на вот этом моменте:
ClientDataSet1.Data:=IDS.Data;

Отладчик ничего не показывает, просто лоцман выдает ошибку и все :|
Пока что сделал костыль и конструирую TClientDataset вручную построчно, потом фильтрую и биндю к гриду, но хотелось бы разобраться что не так.

1ndifferent

Нашел причину: оказалось, что это разные версии midas.dll которые используют кличент и делфи 10.Seattle.
Лечится добавлением в uses плагина midaslib.

Chaa

Вообще, вместе с «Комплексом решений 2014» устанавливается версия 16.0 midas.dll в папку C:\Program Files (x86)\Common Files\ASCON Shared\. Этого должно быть достаточно.

Немного более подробно: http://achechulin.blogspot.ru/2015/02/trying-xe5.html.
+ Благодарностей: 1

1ndifferent

Добавлю немного информации для тех, кто возможно столкнется с похожей проблемой и найдет эту тему поиском:

Для того, чтобы в версиях Delphi выше XE2 у вас поддерживалась работа с Компонентом TClientDataSet в дизайн-тайме (если вы хотите определить свойства полей и их видимость заранее, в редакторе, а не в коде) нужно, чтобы зарегистрированная версия midas.dll в вашей системе совпадала с версией, которая поставляется с вашим IDE (у меня Delphi Seatle и версия 23) b лежит в папке bin. Иначе у вас будут вылеты с ошибками в модуле DBClient.DataSnap.
В системе midas ов может присутствовать несколько (в том числе версия 16 в папке ASCON Shared) но регистрировать нужно ту, что идет с IDE.