Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

Поиск в двойном TList.   Найти похожие ветки 

 
MikeLevinN   (2007-09-06 20:46) [0]

Допустим, что есть некоторое количество поставщиков (допустим 100), и у каждого из них есть список поставляемых товаров и их количество и цена. (Оговорюсь, что: данные не из базы, просто из текстового файла)
Т.е. это получается два массива. Нужно из этой информации сделать выборку, по наличию товара (по числовому индексу) и количеству.

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

У меня несколько вопросов: какой подход в такой ситуации? Можно ли использовать такой код? Насколько он быстро будет заниматься поиском? Что можете предложить, может где есть исходник посмотреть, как решают такие задачи?

type
 PExData = ^TExData;
 TExData = record
   Id1, Id2: LongWord; // Id1 - товар; Id2 - количество
   Value: Double;  // Цена
 end;

 PData = ^TData;
 TData = record
   Id: LongWord; // Номер поставщика
   Name: string; // Название
   MyIdent: Word;
   MyExData: TList; // Заполнен элементами типа TExData
 end;

var
 MyDatas: TList;
 // MyDatas - заполнен элементами типа TData

function GetResult(_Id1, _Id2: LongWord): string;
var
 i, j: LongWord;
begin
 for i := 0 to MyDatas.Count - 1 do
   with PData(MyDatas.Items[i])^ do
   begin
     for j := 0 to MyExData.Count - 1 do
     begin
       if (PExData(MyExData.Items[j])^.Id1 = _Id1) and ((PExData(MyExData.Items[j])^.Id2 = _Id2)) then
       begin
         Result := Format("debug_result: %s; data id: %d; Цена: ....", [Name, Id]);
       end;
     end;
   end;  
end;


 
koha ©   (2007-09-06 21:15) [1]


>  (Оговорюсь, что: данные не из базы, просто из текстового
> файла)


если это не БД, ты мог бы другое что-нибудь придумать?


 
MikeLevinN   (2007-09-06 21:22) [2]


> если это не БД, ты мог бы другое что-нибудь придумать?


Например, что придумать? Я не понял.


 
Sergey Masloff   (2007-09-06 21:26) [3]

Насколько быстро... небыстро ;-)
Но если поставщиков 100 а товаров у них скажем по 50 то не страшно...


 
Вася Правильный   (2007-09-06 21:31) [4]


> ты мог бы другое что-нибудь придумать?

например, запхать данные в ClientDataDet


 
MikeLevinN   (2007-09-06 21:42) [5]

Я видел ClientDataDet, но не знаю, стоит ли использовать это... По количеству у меня получается где-то так:

Максимальное кол-во поставишиков -- будет 80.
Максимальное кол-во товаров -- будет 800.

Можно ли при этих количествах использовать мой алгоритм?

И не знаю, стоит ли использовать для этого ClientDataDet или придумать ешё что-то? Порекомендуйте пожалуйста.


 
MsGuns ©   (2007-09-06 21:42) [6]

Дохлый номер ;(


 
MikeLevinN   (2007-09-06 21:45) [7]

Ну а что тогда делать?


 
MsGuns ©   (2007-09-06 21:51) [8]

Как-то "нормализовать" информацию о "разных" поставщиках


 
MikeLevinN   (2007-09-06 22:21) [9]

Опять я не понимаю, что значит нормализовать?


 
MsGuns ©   (2007-09-07 00:15) [10]

В таблице данных одного поставщика (например, в присланном по мылу экселешном прайсе) значится "Анальгин", а другого - "Таблетки анальгин", хотя на самом деле это один и тот же препарат. Как мне их "поженить", чтобы занести в одну запись "Анальгин" результирующей таблицы с двумя ценами (иначе как можно их сравнить ?) ?


 
MsGuns ©   (2007-09-07 00:30) [11]

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

Под "нормализацией" в данном случае имеется в виду наличие справочника товаров, под который "подгоняются" ВСЕ прайсы от всех поставщиков.

Сложность еще в том, что один поставщик детализирует товар (например, вода "Биола" "Апельсин", "Лимонад" и т.д., а второй пишет "вода "Биола" газированная сладкая" - и относи ее то ли к апельсину, то ли к лимонаду)

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

И самое, пожалуй, сложное,это "гадьски" скидки, которые дают не на отдельные позиции, а на все закупку в целом в зависимости от суммы, условий оплаты или имеющегося договора. Например, у поставщика 1 цены на мороженое от 8р до 13р, у другого  - от 7,5 до 12, но первый дает общую скидку на мороженое 10%. У кого цены ниже ?

В общем я в свое время решил эту тему чисто в Excel с помощью макросов. Там даже графики рисовал ;)

Эх, давненько это было ;(



Страницы: 1 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.026 c
1-1183370769
Krants
2007-07-02 14:06
2007.10.07
ToolsApi в своих приложениях


15-1189494932
TUser
2007-09-11 11:15
2007.10.07
Ищу дрова


8-1166895180
nordic3
2006-12-23 20:33
2007.10.07
Скорость воспроизведения в Mediaplayer


15-1189498737
Desdechado
2007-09-11 12:18
2007.10.07
Чем искать текст в большой пачке PDF-ок?


2-1189236650
NikolayGavrilovM
2007-09-08 11:30
2007.10.07
Записи в массиве