Ееее, как мне это знакомо! Дерево в гридах - жаль, что Сальвадор Дали не дожил до наших дней

...
Значит так, давай оптимизировать. У тебя баланс одного агента занимает несколько строк или на одну влезает? Если второе, соединяй 1-й и 2-й гриды в один. Если же первое, старайся вместить его в одну строку и см. предыдущее предложение.
Далее. Как я понимаю, список поставок в общем случае составляет не одну строку, верно? Значит, выводи не полный список, а только сумму "взаимозачетов", так сказать. Захочет клиент огласить полный список - пусть оглашает, для этого отдельную кнопку "Details..." можно придумать, по которой данные будут отображаться уже в отдельной форме.
И вообще, у тебя же видеософтовский грид, он же древовидную иерархию поддерживает через ADO Shaping! Сделай его деревом, и вся недолга! У тебя же, как я понял, задачка статистического характера, значит, данные должны быть read-only. Ну и все, раскопай в MSDN раздел "ADO Data Shaping" и наслаждайся.