Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно? (число прочтений - 19284 )
desty
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Апреля 2007
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #15 - 10. Мая 2007 :: 11:00
Печать  
Тогда все также возникает давешний вопрос: "Когда у ТП будет поставщик данных OLEDB"

PS Куда ни кинь везде клин... Печаль
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #16 - 10. Мая 2007 :: 11:08
Печать  
Ответ - когда среди разработчиков 1С++ появится разработчик, пользующийся прямыми запросами и ТП и сидящий на ДБФ Улыбка

Вот я, например, сижу на ДБФ, но прямыми запросами пользуюсь только для поиска в справочниках
ТП также очень слабо использую
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #17 - 10. Мая 2007 :: 11:39
Печать  
desty писал(а) 10. Мая 2007 :: 11:00:
Тогда все также возникает давешний вопрос: "Когда у ТП будет поставщик данных OLEDB"

Да, ты прав, это все было сделано только для поставщика ODBC. Печаль

Насчет баз DBF - имхо интерес к разработке компонент для них будет падать.
Конечно, говорить за всех нельзя, но в той идеологии, которой сейчас приходится заниматься, практически не интересно понятие стоимости решений, а интересно понятие их эффективности.

В настоящее время вопрос скорее не в том, где взять деньги, а в том, как их потратить.
Отсюда и пессимистичный прогноз относительно рынка решений эконом-класса (не только в ИТ, кстати).

А, кстати, у меня есть старая разработка - простой кассовый терминал, написанный на 77.DBF.
Так не выгодно ни разу его использование в промышленных масштабах.
Стоимость лицензий, умноженная на количество инсталляций, давно сравнима со стоимостью разработки специализированного решения.
А несколько лет назад я с легкостью доказывал эффективность этого решения.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #18 - 10. Мая 2007 :: 11:44
Печать  
artbear писал(а) 10. Мая 2007 :: 11:08:
Ответ - когда среди разработчиков 1С++ появится разработчик, пользующийся прямыми запросами и ТП и сидящий на ДБФ Улыбка

А почему бы не сделать простенький SDK, позволяющий создавать источники данных как произвольные COM-объекты, реализующие нужные интерфейсы?

А то, к примеру, нарисовать форму списка в VB.NET с ODBCRecordset в качестве источника данных я могу, а написать на VB свой поставщик данных для ТП - нет.   Печаль
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #19 - 10. Мая 2007 :: 12:18
Печать  
berezdetsky писал(а) 10. Мая 2007 :: 11:44:
А почему бы не сделать простенький SDK, позволяющий создавать источники данных как произвольные COM-объекты, реализующие нужные интерфейсы?

Идея очень интересная, но как ты это видишь?
Например, как создавать/хранить/передавать массив строк через КОМ ?
ИМХО скорость будет никакая Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - мож
Ответ #20 - 10. Мая 2007 :: 12:27
Печать  
artbear писал(а) 10. Мая 2007 :: 12:18:
Например, как создавать/хранить/передавать массив строк через КОМ ?
ИМХО скорость будет никакая Печаль

COM-компоненты работают очень шустро, если они внутрипроцессные (Inproc).
  

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


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #21 - 10. Мая 2007 :: 12:31
Печать  
Ну давайте придумаем интерфейсы Улыбка
Тем более, что у ДмитрО уже все необходимые интерфейсы есть.
Нужно только решить, каким образом перенести их в КОМ.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #22 - 10. Мая 2007 :: 12:45
Печать  
artbear писал(а) 10. Мая 2007 :: 12:18:
Идея очень интересная, но как ты это видишь?

На самом деле, я пока не использую ТП (в том числе и по причине отсутствия подобного SDK).  Класс Поэтому я вижу лишь, как я мог бы это использовать.

artbear писал(а) 10. Мая 2007 :: 12:18:
Например, как создавать/хранить/передавать массив строк через КОМ ?
ИМХО скорость будет никакая Печаль

К примеру, DataGridView запрашивает у источника данных, реализующего IBindingList, только те строки, которые выводит на экран.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #23 - 10. Мая 2007 :: 13:18
Печать  
ТП работает по такой же схеме.
Разработать интерфейсы можно, думаешь, придут разработчики с НЕТ и Делфи, и сделают что-то Улыбка ?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #24 - 10. Мая 2007 :: 13:44
Печать  
artbear писал(а) 10. Мая 2007 :: 13:18:
Разработать интерфейсы можно, думаешь, придут разработчики с НЕТ и Делфи, и сделают что-то Улыбка ?

По крайней мере, им не придётся ждать, "когда среди разработчиков 1С++ появится разработчик, пользующийся прямыми запросами и ТП и сидящий на ДБФ". Даже если не появится ничего, публично доступного.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
desty
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Апреля 2007
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - мож
Ответ #25 - 16. Сентября 2007 :: 20:52
Печать  
berezdetsky писал(а) 10. Мая 2007 :: 13:44:
По крайней мере, им не придётся ждать, "когда среди разработчиков 1С++ появится разработчик, пользующийся прямыми запросами и ТП и сидящий на ДБФ".


Вот я тут думал, думал....
И вот что придумал:

1. может попросить Uzhast'а подумать над реализацией.
2. очень часто упираюсь в проблему отсутствия этого поставщика - и получается всех вкусностей ТП лишен.
3. в принципе я даже готов денег вложить некоторое количество в какой нибудь "donation фонд OLEDB поставщика данных ТабличногоПоля"

Плачущий
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - можно?
Ответ #26 - 17. Сентября 2007 :: 05:50
Печать  
+1
  
Наверх
 
IP записан
 
noprogrammer
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 465
Зарегистрирован: 16. Июня 2006
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - мож
Ответ #27 - 17. Сентября 2007 :: 06:04
Печать  
desty писал(а) 16. Сентября 2007 :: 20:52:
berezdetsky писал(а) 10. Мая 2007 :: 13:44:
По крайней мере, им не придётся ждать, "когда среди разработчиков 1С++ появится разработчик, пользующийся прямыми запросами и ТП и сидящий на ДБФ".


Вот я тут думал, думал....
И вот что придумал:

1. может попросить Uzhast'а подумать над реализацией.
2. очень часто упираюсь в проблему отсутствия этого поставщика - и получается всех вкусностей ТП лишен.
3. в принципе я даже готов денег вложить некоторое количество в какой нибудь "donation фонд OLEDB поставщика данных ТабличногоПоля"

Плачущий


+10 Подмигивание
  
Наверх
wwwICQ  
IP записан
 
Uzhast
1c++ power user
Отсутствует



Сообщений: 1341
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - мож
Ответ #28 - 17. Сентября 2007 :: 10:14
Печать  
desty писал(а) 16. Сентября 2007 :: 20:52:
1. может попросить Uzhast'а подумать над реализацией.

Ну, давайте подумаем...

Во-первых, OLE DB не умеет эффективно делать частичные выборки (SELECT TOP) - есть здесь ветка, где мы со spock'ом пинали OLE DB по этому поводу. Поэтому поставщик должен использовать методы XBase по работе с таблицами: USE, GO, SEEK.

Отсюда вытекает следующая организация провайдера:
- Сначала провайдеру устанавливается некоторая ОПОРНАЯ ТАБЛИЦА, для таблицы устанавливается индекс и/или фильтр. Далее навигация по таблице происходит методами XBase. Основное предназначение опорной таблицы: выдача ИДшников видимых на данный момент записей. Идентификатор поля с ИДшниками, таким образом, также должен указываться при инициализации провайдера.

- Далее. Провайдер XBase-методами собирает ИДшники и использует их для выполнения прямого запроса типа SELECT ... FROM Таблица WHERE Таблица.ID IN (СписокИДшников). Результат этого запроса скармливается табличному полю как основной набор данных. Таким образом, при инициализации провайдеру необходимо передать еще и текст этого запроса.

- Быстрый поиск реализуется командой SEEK - что быстро, т.к. использует индексы.

Естественно, для указания имени опорной таблицы должно быть возможно использовать псевдонимы типа $Справочник.Номенклатура и т.п.

Прошу критиковать Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: <КолонкаТаблицы>.ВСтрокуСРазделителями() - мож
Ответ #29 - 17. Сентября 2007 :: 12:23
Печать  
Uzhast писал(а) 17. Сентября 2007 :: 10:14:
desty писал(а) 16. Сентября 2007 :: 20:52:
1. может попросить Uzhast'а подумать над реализацией.

Ну, давайте подумаем...

Во-первых, OLE DB не умеет эффективно делать частичные выборки (SELECT TOP) - есть здесь ветка, где мы со spock'ом пинали OLE DB по этому поводу.


Это делается не совсем так.
Задача - выборка 2 саммых ранних документов из журнала

Сканирование таблицы :
Код
Выбрать все
ОлеДБКоманда.Выполнить("EXECSCRIPT('Select 1')"); // задаем другую область открытия таблицы
   ОлеДБКоманда.Выполнить("EXECSCRIPT('USE 1sjourn INDEX 1sjourn')");  // открываем таблицу 1sjourn
   ОлеДБКоманда.Выполнить("EXECSCRIPT('SET order To ACDATETIM')");// Сортируем по индексу
   ОлеДБКоманда.Выполнить("EXECSCRIPT('GO TOP')");   // Переходим к первой записи

   ТЗ=ОлеДБКоманда.ВыполнитьИнструкцию("EXECSCRIPT('return IDDoc')"); // Получаем поле  IDDoc
   ТЗ.ВыбратьСтроку();
   ТЗ=ОлеДБКоманда.ВыполнитьИнструкцию("EXECSCRIPT('return Date')");
   ТЗ.ВыбратьСтроку();

   ОлеДБКоманда.Выполнить("EXECSCRIPT('SKIP ')");   // Переходим к следующей записи
   ТЗ=ОлеДБКоманда.ВыполнитьИнструкцию("EXECSCRIPT('return IDDoc')");  // Получаем поле  IDDoc (второе)
   ТЗ.ВыбратьСтроку(); 



Обычный запрос 2.5 сек
Через сканирование 0.03
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать