Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Halcyon поиск записи 
V
    Опции темы
14SatanA88
Дата 21.9.2012, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Доброго времени суток, уважаемые программеры.

Работаю с таблицами данных dBase IV. Есть одна таблица весом в 20 мегабайт, в которой 160000 записей.
В таблице содержатся цены на модели шмоток. Необходимо отобрать актуальные цены на определенный перечень моделей (перечень этот часто меняется, но это не столь важно). Моделей около 500, немного.

Опишу некоторые поля таблицы, которые участвуют в отборе цен:
 НАИМЕНОВАНИЕ ПОЛЯ (ТИП ПОЛЯ, ШИРИНА)
 TER (CHARACTER, 1)      - код территории.
 POL (NUMERIC, 4)         - код получателя.
 MOD (CHARACTER, 10)  - собственно модель шмотки.
 KODV (NUMERIC, 1)       - код валюты.
 DAT (DATE, 8)                - дата цены.

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

Сперва просто использовал компонент TQuery и запросом отбирал нужную информацию, но на это тратится очень много времени.

В итоге стал использовать Halcyon, а точнее THalcyonDataSet.
Динамически цепляю индекс.
Код

MemoryIndexAdd('NSICEN', 'MOD + TER + STR(KODV,1) + STR(POL,4) + DESCEND(DTOS(DAT))', '', Duplicates, Ascending);

Дальше проблема, из-за которой я вообще создал этот топик: хочу найти цену по четырем заданным критериям (все, кроме даты)
Код

FindKey(['Р5012447', '0', 0, 0]);

В итоге выбирается не то, что нужно

Если убрать DESCEND(DTOS(DAT)) из строки индекса, то результат поиска оправдывает ожидания, но необходимость поиска свежей цены по дате убивает смысл этого самого поиска.

Помогите разобраться.

Это сообщение отредактировал(а) 14SatanA88 - 21.9.2012, 14:29
PM MAIL ICQ   Вверх
Данкинг
Дата 21.9.2012, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(14SatanA88 @  21.9.2012,  14:43 Найти цитируемый пост)
в 20 мегабайт, в которой 160000 записей.

160000 записей - и .dbf размером всего 20 метров?  smile 
Цитата(14SatanA88 @  21.9.2012,  14:43 Найти цитируемый пост)
Помогите разобраться. 

1. Переписать прогу на ФоксПро.
2. Использовать другую СУБД - тот же Access.



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
14SatanA88
Дата 21.9.2012, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Уважаемый Данкинг,
Цитата

1. Переписать прогу на ФоксПро.
2. Использовать другую СУБД - тот же Access.


Переписать прогу либо использовать другую СУБД не выйдет, предприятие.
PM MAIL ICQ   Вверх
Данкинг
Дата 21.9.2012, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А если использовать Tdbf и, соответственно, locate?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
14SatanA88
Дата 21.9.2012, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Данкинг, надо бы попробовать.
Если можно, запилите ссылок сразу.
PM MAIL ICQ   Вверх
Данкинг
Дата 21.9.2012, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(14SatanA88 @  21.9.2012,  16:09 Найти цитируемый пост)
Если можно, запилите ссылок сразу. 

Ну, в поиске Tdbf, какие тут ещё ссылки. smile Таблицу любого размера открывает моментально, т.е. как если бы таблица открывалась непосредственно FoxPro.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
14SatanA88
Дата 21.9.2012, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Поставил tDBF, создал индекс.

MOD + TER + STR(KODV,1) + STR(POL,4) + DESCEND(DTOS(DAT)) - вот такой не съел, потому что не знает о DESCEND.

MOD + TER + STR(KODV,1) + STR(POL,4) + DTOS(DAT) - вот этот съел, но сортировка нужна по ДАТЕ в обратную сторону.

DTOS(DAT) + MOD + TER + STR(KODV,1) + STR(POL,4), [ixDescending] - попробовал вот так, но, видимо, из-за даты долго работает Locate, хотя находит то что нужно найти.

Может, я делаю что-то не так?

Это сообщение отредактировал(а) 14SatanA88 - 21.9.2012, 16:31
PM MAIL ICQ   Вверх
Данкинг
Дата 21.9.2012, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(14SatanA88 @  21.9.2012,  17:28 Найти цитируемый пост)
вот этот съел, но сортировка нужна по ДАТЕ в обратную сторону.

А если после  DTOS(DAT) tag descend добавить?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
14SatanA88
Дата 21.9.2012, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Цитата

А если после  DTOS(DAT) tag descend добавить?


пробовал, ругается что не знает таких слов движок этот...
PM MAIL ICQ   Вверх
14SatanA88
Дата 28.9.2012, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Проблема решилась написанием скрипта на clipper и запуск его собсна из программы на Delphi в нужный момент.
PM MAIL ICQ   Вверх
Данкинг
Дата 28.9.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(14SatanA88 @  28.9.2012,  15:21 Найти цитируемый пост)
написанием скрипта на clipper

В смысле, скрипта - программы .exe, что ли?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
14SatanA88
Дата 28.9.2012, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 13.5.2010

Репутация: 1
Всего: 5



Цитата

В смысле, скрипта - программы .exe, что ли?


да, просто фоновая прожка на клиппере. у них там просто колоссальный выигрыш в скорости по сравнению с Halcyon или Apollo. (я о работе с индексами NTX)
PM MAIL ICQ   Вверх
Данкинг
Дата 28.9.2012, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Ну понятно, я таких случаях на фоксе пишу .fxp и запускаю его из проги на Дельфи.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0825 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.