Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Вниз

Поиск в двойном 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
15-1189253128
OzoM
2007-09-08 16:05
2007.10.07
Срочно!!!


6-1170735552
Змей-Горыныч
2007-02-06 07:19
2007.10.07
Пограмное переподключение к интернет


2-1189150890
AlexGryb
2007-09-07 11:41
2007.10.07
Панэль задач


10-1137243244
Alex17
2006-01-14 15:54
2007.10.07
Как это выгледит в Дельфи


15-1189059162
boriskb
2007-09-06 10:12
2007.10.07
Чой то это... непонятно





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский