Я пытаюсь подсчитать, сколько раз каждый ProductCode используется в моей базе данных. Проблема в том, что я не знаю, каковы все коды (может быть добавлено больше).
Я предполагаю, что могу использовать TList с парами значений (productCode и count), чтобы сделать что-то вроде этого (я пытаюсь рассматривать это как List‹> из С# и т. д.)
procedure myProc
type
TProductCodeCount = record
productCode : string;
count : integer;
end;
var
productCodes : TList<TProductCodeCount>;
newProductCodeCount : TProductCodeCount;
currProductCodeCount : TProductCodeCount;
currentProductCode : string;
productCodeIndex : integer;
begin
productCodes := TList<TProductCodeCount>.Create;
// Get my data set
// Loop through my data set
begin
currentProductCode := // value from the database ;
productCodeIndex := productCodes.indexOf(currentProductCode);
if productCodeIndex = -1 then
begin
newProductCodeCount.productCode := currentProductCode;
newProductCodeCount.count := 1;
productCodes.Add(newProductCodeCount)
end
else
begin
currProductCodeCount := productCodes.Extract(productCodeIndex);
currProductCodeCount.count := currProductCodeCount.count + 1'
productCodes.Delete(productCodeIndex);
productCodes.Add (currProductCodeCount);
end
end;
// Loop through my TList
begin
// do something with each productCode and count.
end
end;
Здесь есть две большие ошибки.
- Я не уверен, как закодировать сравнение для работы indexOf (если это вообще возможно для TList типа записи
- Обновление элемента списка неуклюже.
Как я могу сделать сравнение? Или есть гораздо лучший способ сделать это?
SELECT ProductCode, COUNT(ProductCode) FROM Products GROUP BY ProductCode
? - person Rob Kennedy   schedule 16.03.2015