Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Поставщик данных и IDataSource (число прочтений - 1775 )
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Поставщик данных и IDataSource
29. Июля 2008 :: 06:34
Печать  
Помечтаем?
Кажется, когда DmitrO придумывал интерфейс для поставщиков данных, он многое позаимствовал из OLEDB.
Было бы неплохо иметь некоторый класс, реализующий интерфейс IDataSource для произвольного поставщика данных 1С. А также набор обязательных для OLEDB интерфейсов: IAccessor,IColumnsInfo,IConvertType,IRowset и IRowsetInfo.

Это даст возможность использовать поставщиков для ТП в разных ActiveX-гридах, компонентах типа OWC.Spreadsheet и OWC.PivotTable и других компонентах, работающих с OLEDB или ADO.

В VC++ есть шаблонные классы для написания OLEDB-провайдеров. Но они рассчитаны на написание "полноценных" провайдеров (для данной задачи, например нафиг не нужна реализация Command,Session и т .п.). И к тому-же эти шаблоны для ATL.

Вопросов два:
- кому-нибудь кроме меня это интересно?
- есть ли желающие мне помочь?
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Поставщик данных и IDataSource
Ответ #1 - 29. Июля 2008 :: 07:32
Печать  
Если честно, то когда я придумывал интерфейс поставщика данных для ТП я нисколько не думал о OLEDB, я исходил из реальных задач для отображения (даже редактирование не рассматривалось) данных в виде таблиц. Ну конечно, в силу того что у меня был некоторый опыт, я себе примерно представлял "как это вообще делается" (иначе я бы за это просто не взялся). Однако надо отметить, что принцип работы ActiveX гридов на IDataSource ведь вообще не такой как у ТП, он основан на использовании серверных курсоров.

Поэтому, думаю, что в этой теме упоминание ТП и интерфейсов его провайдера лишнее.

По сути, задача состоит в том, чтобы отображать некоторые объекты (таблицу БД или ТЗ) в ActiveX гриде, для этого предлагается использовать набор интерфейсов IDataSource и иже с ним, все.
Что касается таблиц БД, там все есть: OLEDB.
Что касается остальных объектов ТЗ, ИТЗ и т.п., ну значит надо реализовать IDataSource для них.
  
Наверх
ICQ  
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Поставщик данных и IDataSource
Ответ #2 - 29. Июля 2008 :: 07:47
Печать  
Еще важное отличие в принципах построения, кто плавал в этом деле тот поймет: IDataSource и иже с ним (как и другие системы ODBC, ADONET), они как-бы row-oriented (строчно-ориентированные, текущее состояние отобажения задается 1 строкой), а поставщики ТП они window-oriented (оконно-оринтированные, текущее состояние отображения задается текущим составом отображенных строк (окном)).
Я тут не пытаюсь сказать что одну систему нельзя привести к другой, можно, но это будет как-то не правильно.. т.к. эти вроде бы незначительные изменения принципов, в подходе к реализации дают очень разное построение системы отображения.
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных и IDataSource
Ответ #3 - 29. Июля 2008 :: 08:23
Печать  
DmitrO писал(а) 29. Июля 2008 :: 07:32:
Однако надо отметить, что принцип работы ActiveX гридов на IDataSource ведь вообще не такой как у ТП, он основан на использовании серверных курсоров.
Гридов огромное количество. Некоторые используют Cursor Service for OLEDB.

DmitrO писал(а) 29. Июля 2008 :: 07:32:
Что касается таблиц БД, там все есть: OLEDB.
Что касается остальных объектов ТЗ, ИТЗ и т.п., ну значит надо реализовать IDataSource для них.

Лично мне это интересно в связке с 1sqlite и ТЗ.
OLEDB для 1sqlite нету, а поставщик данных 1sqlite для ТП - есть.
Поставщик для ТЗ тоже есть.
Я и подумал, что можно попробовать написать реализацию IDataSource один раз, вместо того, чтобы писать для каждого объекта, которому это понадобится.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Поставщик данных и IDataSource
Ответ #4 - 29. Июля 2008 :: 08:26
Печать  
DmitrO писал(а) 29. Июля 2008 :: 07:47:
Еще важное отличие в принципах построения, кто плавал в этом деле тот поймет: IDataSource и иже с ним (как и другие системы ODBC, ADONET), они как-бы row-oriented (строчно-ориентированные, текущее состояние отобажения задается 1 строкой), а поставщики ТП они window-oriented (оконно-оринтированные, текущее состояние отображения задается текущим составом отображенных строк (окном)).
Я тут не пытаюсь сказать что одну систему нельзя привести к другой, можно, но это будет как-то не правильно.. т.к. эти вроде бы незначительные изменения принципов, в подходе к реализации дают очень разное построение системы отображения.

Насчет правильно/неправильно спорить не буду.
Я просто увидел некоторое сходство между интерфейсами.

Чтобы поглубже вникнуть в тему, пробую написать для ТЗ.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать