Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: delphi+dbf  (Прочитано 14909 раз)
0 Пользователей и 1 Гость смотрят эту тему.
andreyKa
Гость
« : 08-08-2007 10:22 » 

Люди!!!Помогите.
есть несколько dbf-ок.Из них считываем данные, сортируем, выбираем, над некоторыми выполняем простейшие арифметические действия(+,*,/).
Все мы делаем через query.Но проблема в том что, все выводим в отчет(таблицу), причем в одну, а критериев отбора много.Думал написать для каждого свой запрос, но прикинул, получается около 900, нарно будет сильно все ругаться.
Если использовать параметры, то отчеты ругаются(использую report builder).
Пример.
Сначала вибираем данные по 5 видам, потом каждый вид делим еще на 5, а потом каждый на 2.И вот которые получились еще на 18 частей.т.е. ужас тихий.
Я кэшно начал делать простым, но долгим путям, дошел да 100-го, начал ругаться что памяти мало.Открыл BDE-Administrator, все увеличил, все равно, на 120 становится глухо как в танке.не знаю, что еще придумать
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #1 : 08-08-2007 10:33 » 

что за таблицы, какие в них данные, сколько записей максимум ?
Записан

andreyKa
Гость
« Ответ #2 : 08-08-2007 10:40 » 

таблицы-dbf(текст+цифра), foxpro-шные, dos-овские, записей где-то до 50000
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


WWW
« Ответ #3 : 08-08-2007 10:51 » 

andreyKa, структура таблицы то какая ?

у меня есть таблица с 20 полями и сотнями тысяч записей - всё что надо выбирается, озу на всё хватает (1 Гб на борту)

подождём, конечно, экспертов Улыбаюсь , но ощущение такое, что ты не так что то делаешь
Записан

DemonicAlligator
Гость
« Ответ #4 : 13-08-2007 06:28 » 

andreyKahttp://tdbf.sourceforge.net/  - попробуй его...
Записан
andreyKa
Гость
« Ответ #5 : 13-08-2007 09:29 » 

Посотрел повнимательней.При передаче в отчет(Report builder) он открывает все query по очереди,а закрывает их только когда закроешь сам отчет.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 13-08-2007 09:32 » 

два пути.

1) юзать виртуальные таблицы, т.е. - находящиеся в памяти. можно взять готовые из rxLib, можно тупо пихать в динамический массив. т.е. при создании отчёта он не генерится через sql, а просто нужные данные сливаются в виртуальную таблицу, котора яуже отображается. минус: при порядках записей в сотни тысяч и десятками полей ОЗУ может не хватить.

2) то же самое, что 1), только для промежуточных таблиц используются физические временные таблицы на диске. минус: это медленно.

общая логика такова: вы не пытаетесь составить восьмиугольный отчёт с кучей параметров, а последовательно пробегаете по нужным записям нужных таблиц, скидывая их в промежуточную таблицу. а когда эта таблица готова - тупо выводите её на экран. с этим справится любой отчёт.

кроме того, при данном подходе, у пользователя появляется щасливая возможность сохранять свои отчёты на диске. достаточно просто отвести для временных таблиц свой, отдельный, каталог и предусмотреть возможность их открытия. а для виртуальных - ещё и сохранения, но это тривиально.
Записан

andreyKa
Гость
« Ответ #7 : 13-08-2007 09:36 » 

Спасибо.щас попробуем
Записан
andreyKa
Гость
« Ответ #8 : 13-08-2007 10:27 » 

Еще вопрос.глупый конечно.в общем начал использовать временную таблицу, физическую, но данные почему то сливаются в неё не по порядку, друг за другом, а все время сначала.т.е. сначала 1 запрос, потом вместо данных с него, пищутся данные из 2го
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #9 : 13-08-2007 10:30 » 

не совсем представляю, если честно Улыбаюсь

можно глянуть на код, заполняющий временную таблицу?
Записан

andreyKa
Гость
« Ответ #10 : 13-08-2007 12:04 » 

Слушай, просто тупо в запрос щас вставил строчку
insert into temp
теперь при вополнение этих запросов все пишется по очереди, посмотрю что дальше получится.
правда попробовал на парочке, попробую щас всю свою орду запустить
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines