| 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 | 
		 | 
	
	
		  | 
	
	
		 |