| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| GaMaK 
 
 
 Joined: 21 Oct 2002
 Posts: 15
 
 
 
 
 | 
			
				|  Posted: 25 Oct 2002 13:28    Post subject: Есть интерсная идея с быстрой генерацией отчетов |   |  
				| 
 |  
				| Правда отчёты прийдётся делать самостоятельно   
 У MS SQL и у Oracle 9i существует такое понятие как external table (для MS SQL читать здесь http://www.accent6.com.ua/kbase6/SQL/sql_dbf.htm ).  То есть если прицепить к СУБД файлы БЭСТ, то можно с ними работать на серверной стороне при помощи обычных SQL запросов. В качестве плюшек получаем прекращение гоняния по сети сырых данных, уменьшение сетевого трафика и соответсвенно ускорение генерации отчетов (очень значительное ускорение). Из минусов - отчеты прийдётся рисовать самостоятельно.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| CreaZ 
 
 
 Joined: 04 Oct 2002
 Posts: 9
 
 
 
 
 | 
			
				|  Posted: 28 Oct 2002 11:57    Post subject: |   |  
				| 
 |  
				| В общем без правильного индексирования под MSSQL и Oracle толку не даст, а смогут ли они проиндексировать внешенюю таблицу?! И  сразу накладываеться проблема, если есть удаленные точки, которые работают в своей системе - неудобно объединять данные
 
 Имхо самый простой и правильный вариант - писать все отчеты на fox'e все работает очень быстро и рисовать отчеты просто.
 У нас это используеться уже несколько лет, при этом долго считаються только глобальные отчеты.... типа оборота за 2 года в закупочных ценах и ценах реализации в долларах при номенклатуре порядка ~40000 и учете цен только рублевых, то есть закупка и курс просталяються в процессе формирования отчета.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| GaMaK 
 
 
 Joined: 21 Oct 2002
 Posts: 15
 
 
 
 
 | 
			
				|  Posted: 28 Oct 2002 14:31    Post subject: |   |  
				| 
 |  
				| Собственно идея в том, что-бы выборки делались на сервере, что-бы не вытягивать сырые данные на клиента. Уж больно тяжко БЭСТ у нас с этим справляется. 
 Если в Фокс-е можно сделать разделение на клиент и сервер, то хорошо, это решение, если нельзя, то в чём принципиальная разница с формированием отчётов в самом БЭСТ-е ?
 
 А будут использоваться индексы или нет, честно говоря не знаю, смотря насколько по уму промежуточный слой в MS SQL и Oracle прописан... Ручками ещё не трогал. Собствено ведь и про Ораклу тут я говорю только в плане того, что там уже всё сделано, надо только описать данные и пользоваться. Ясно что красившее самим простенький сервер написать. На той-же Delphi TServerDataSet TClientDataSet - всё уже в принципе готово...
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Magistr 
 
  
 Joined: 19 Aug 2002
 Posts: 1264
 Location: Петрунин Д.Н.
 Occupation: Инженер-программист
 Interests: Н.Новгород
 
 | 
			
				|  Posted: 28 Oct 2002 18:56    Post subject: |   |  
				| 
 |  
				| Дайте мне алгоритмы обработки БД БЕСТ для получения отчетов - буду пистать на Delphi 3-х звенку. |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| GaMaK 
 
 
 Joined: 21 Oct 2002
 Posts: 15
 
 
 
 
 | 
			
				|  Posted: 29 Oct 2002 07:44    Post subject: |   |  
				| 
 |  
				|  	  | Magistr wrote: |  	  | Дайте мне алгоритмы обработки БД БЕСТ для получения отчетов - буду пистать на Delphi 3-х звенку. | 
 
 Батенька, да вы халявщик
  У нас хлопцы методом научного тыка вроде как всё что сильно потребно уже разворошили... |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| CreaZ 
 
 
 Joined: 04 Oct 2002
 Posts: 9
 
 
 
 
 | 
			
				|  Posted: 29 Oct 2002 11:57    Post subject: |   |  
				| 
 |  
				| Ну насчет обработки на сервере - вопрос спорный, у нас сервак для БЭСТа - Novell, зато есть не слишком сейчас занятый сервак под w2000, который с Novell'ом связан по 1Gb ethernet, так что фоксовые отчеты запускать на нем через терминал сервис - милое дело, все просто летает. Разница как уже наверно не раз говорилось просто не сравнимая, в разы и десятки раз так как клипер не умеет использовать запросы.
 И в разы в с фоксовыми отчетами, написанными самими интелектовцами.
 А насчет алгоритмов отчетов - все зависит от того какой отчет нужен, у нас очень мало стандартных - вопрос обычно такой, приходит кто нибудь и говорит - мне надо вот это, вот в таком виде, вот в таком разрезе ну и начинаешь енто быстро делать.... обычно на создания с нуля такого отчета уходит не более часа, и то если надо рисовать формы.
 Delphi - не умеет быстро работать с DBF, так что смысла на нем что то писать для работы с БЭСТом никакого, из всего проверенного для DBF тока фокс рулит, причем VFP хуже, как и все к чему прикоснулся Microsoft.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Magistr 
 
  
 Joined: 19 Aug 2002
 Posts: 1264
 Location: Петрунин Д.Н.
 Occupation: Инженер-программист
 Interests: Н.Новгород
 
 | 
			
				|  Posted: 29 Oct 2002 14:00    Post subject: |   |  
				| 
 |  
				|  	  | Quote: |  	  | Батенька, да вы халявщик  У нас хлопцы методом научного тыка вроде как всё что сильно потребно уже разворошили... | 
 
 Какой халявщик! Да я как пользователесь должен знать, КАК программа обрабатывает данные, чтоб я мог сам проверить правильность этой обработки. Мне не нужны исходники, мне нужны алгоритмы.
 
 
  	  | Quote: |  	  | Delphi - не умеет быстро работать с DBF | 
 
 Это стандартный BDE, может быть, не так шустро работает с DBF, а есть немало библиотек (компонент) для работы с DBF базами.
 
 А если БД хранить под Win2K и работать на этой же машине в TS, то будет еще быстрее, чем с Novell-ом.[/list]
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| itman 
 
  
 Joined: 05 Apr 2002
 Posts: 1247
 Location: Ильин Е.Ю.
 Occupation: Cio
 Interests: Кинель
 
 | 
			
				|  Posted: 29 Oct 2002 16:55    Post subject: |   |  
				| 
 |  
				|  	  | Magistr wrote: |  	  | 
 Какой халявщик! Да я как пользователесь должен знать, КАК программа обрабатывает данные, чтоб я мог сам проверить правильность этой обработки. Мне не нужны исходники, мне нужны алгоритмы.
 
 | 
 А что там знать-то, тем более для отчетов? есть описание, ты можешь даже по тому, что есть собрать общую картину хранения данных.
 
 Мы используем VFP 7.0, и дальше все зависит от задачи.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Magistr 
 
  
 Joined: 19 Aug 2002
 Posts: 1264
 Location: Петрунин Д.Н.
 Occupation: Инженер-программист
 Interests: Н.Новгород
 
 | 
			
				|  Posted: 29 Oct 2002 17:21    Post subject: |   |  
				| 
 |  
				|  	  | Quote: |  	  | А что там знать-то, тем более для отчетов? есть описание, ты можешь даже по тому, что есть собрать общую картину хранения данных. 
 | 
 
 Какое описание?
 Я в бухгалтерии ничего не понимаю, занимаюсь поддержкой работоспособности сети, сервера - для меня не тривиально самому разобраться во всех тонкостях, которые нужны для разарботки алгоритмов построения отчето
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| yermak 
 
  
 Joined: 01 Aug 2002
 Posts: 45
 Location: Ермак Е.Ю.
 Occupation: ООО "Автоматизированные системы управления"
 Interests: Владивосток
 
 | 
			
				|  Posted: 29 Oct 2002 17:41    Post subject: |   |  
				| 
 |  
				| 2 Magistr Вся мощь фокса в rashmor'е и хорошей буфферизацией для работы с дисками (правда VFP работает чуть медленнее т.к. ему надо на лету еще перекодировать кодовые страницы).
 А насчет Delphi - можно достичь примерно такой скорости используя ADO DB FoxPro Provider. Он там использует тоже ядро что и сам фокс.
 Ни и могу сказать еще вот что - фокс не очень сильно грузит  сетку, т.е. если условие Rashmor-оптимизируемое  или частично оптимизируемое, то данные не удовлетворяющие этому условию и части условия по сети не гоняются, гоняются только индексы, а это на много меньший объем.
 Ну об инструментах создания отчетов: раньше я делал их на FPD26 потом перешел на VFP c 5 по 7-ой. Сейчас пользуюс обчным MS Excel'ем - удобнее пользоваться клиентам, а так же можно прямо у них что-то донастраивать и изменять в программе, хотя писать сложнее чем на фоксе. Мой пример есть в банке решений.
 При больших объемах данных 1Gb и более (на таблицу, а не на базу) все таки лучше юсать fox (FPD или VFP без разницы), но тут не в коем случае нельзя использовать  SQL Select, так как таблицы большие рашмор может не включиться. Там след. технология, например нужны все документы отгрузки за данную дату с заданого склада заданому контрагенту:
 ставим главным нужный тег в таблице MDOC
 set order tag MDOC_D
 ищем первую запись
 seek upper(m.SCLAD_CODE+"2"+"4"+DTOS(m.My_Data))
 Далее в цикле перебираем записи
 
 scan rest while upper(m.SCLAD_CODE+"2"+"4"+DTOS(m.My_Data))==upper(mdoc.sclad+mdoc.vid+mdoc.type+dtos(mdoc.date)) for mdoc.agentcode=m.MyAgentCode
 
 Внутри цикла буду только нужные записи их копируем в курсор ч/з
 append blank, scatter и gather
 
 
 endscan
 
 _________________
 С уважением, Ермак Евгений
 г.Владивосток
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| CreaZ 
 
 
 Joined: 04 Oct 2002
 Posts: 9
 
 
 
 
 | 
			
				|  Posted: 29 Oct 2002 18:27    Post subject: |   |  
				| 
 |  
				| Не согласен, фокс замечательно справляеться и с файлами больше 1 Гб. Например если нужно получить текущие остатки? Перебирать все записи по индексу <=> пересчет остатков в картотеке в БЭСТе - ~1.5-2 часа при номенклатуре ~40000, если сделать на фоксе - 15-20 мин максимум используя исключительно fox sql по 100мб сети. А если попробовать воспользовать файлом mkart для получения остатков, когда с документами работают одновременно человек 10, енто равносильно тому что остатки по random() посчитать, максиму на что он годиться - для получение остатков на начало периода, так как они не меняються постоянно. |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| yermak 
 
  
 Joined: 01 Aug 2002
 Posts: 45
 Location: Ермак Е.Ю.
 Occupation: ООО "Автоматизированные системы управления"
 Interests: Владивосток
 
 | 
			
				|  Posted: 30 Oct 2002 03:11    Post subject: |   |  
				| 
 |  
				| 2 Creaz Все правильно, только мой подход быстрее работает когда не надо перебирать всю таблицу, а нужно выдернуть лишь небольшую часть.
 У меня был случай когда SQL-запрос выполнялся 40 минут, и после того как я его переписал по изложенному выше принципу, отчет стал появлятся на экране меньше чем ч/з 1 сек. после нажатия на Enter.
 _________________
 С уважением, Ермак Евгений
 г.Владивосток
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| itman 
 
  
 Joined: 05 Apr 2002
 Posts: 1247
 Location: Ильин Е.Ю.
 Occupation: Cio
 Interests: Кинель
 
 | 
			
				|  Posted: 30 Oct 2002 07:47    Post subject: |   |  
				| 
 |  
				|  	  | Magistr wrote: |  	  |  	  | Quote: |  	  | А что там знать-то, тем более для отчетов? есть описание, ты можешь даже по тому, что есть собрать общую картину хранения данных. 
 | 
 
 Какое описание?
 Я в бухгалтерии ничего не понимаю, занимаюсь поддержкой работоспособности сети, сервера - для меня не тривиально самому разобраться во всех тонкостях, которые нужны для разарботки алгоритмов построения отчетов.
 | 
 
 Ну , батенька, ты можешь быть изумительным ювелиром, но без знания определенных правил и специифики, ты не сможешь изготовить качественные зубы
  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Magistr 
 
  
 Joined: 19 Aug 2002
 Posts: 1264
 Location: Петрунин Д.Н.
 Occupation: Инженер-программист
 Interests: Н.Новгород
 
 | 
			
				|  Posted: 30 Oct 2002 11:33    Post subject: |   |  
				| 
 |  
				|  	  | itman wrote: |  	  | Ну , батенька, ты можешь быть изумительным ювелиром, но без знания определенных правил и специифики, ты не сможешь изготовить качественные зубы
  | 
 
 Если есть математическая формализация алгоритма формирования отчета, то знания бухгалтерии не нужны.
 
 
  	  | yermak wrote: |  	  | Вся мощь фокса в rashmor'е и хорошей буфферизацией для работы с дисками (правда VFP работает чуть медленнее т.к. ему надо на лету еще перекодировать кодовые страницы).
 | 
 
 А что, кеш сервера W2K не устраивает? Я скоро вообще RAM диск собираюсь под БД сделать на сервере W2K. И "долгие" отчеты формировать на серваке либо в TS стандартными средствами БЕСТ,  либо свою прогу написа
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		|  |