Форум: "Начинающим";
Текущий архив: 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