собственно сомнения именно в правильности метода - "перебора записей" с клиентской стороны
код примерно правильный. других неправильностей не вижу.
Хочется что бы как можно больше работы выполнял именно сервер.
смотря какой работы. если работу excel, то сервер для этого не предназначен.
Возможна ли такая хитрость, ...можно ли в хранимой процедуре объявить длину array переменной - длиной размером в кол-во ранее полученных срок?
да нет в языке IB/FB никаких переменных-массивов ни в процедурах ни вообще.
....?? ...что позволит в ХП создать двумерный массив длинной в 5 полученных записей, и через цикл записать в него нужные данные, ...и передать переменную в клиентскую часть.
натуральные бредни. знаешь, есть такая поговорка - "неудобно ходить по большому в почтовый ящик". это примерно и есть то, что ты мудришь с этим массивом.
Я пытаюсь выяснить - существуют ли более продуктивные или стабильные решения задачи!
продуктивно - это когда запрос выполняется быстро, а не когда хитрозавернутым способом записи конвертируются в какой-то массив а потом аналогично завернуто транслируются клиенту.
Объясняю, почему твое желание бредовое:
- сервер все равно динамически или целиком строит СВОЙ массив записей, который передается клиенту
- количество записей может быть разным
Если сервер будет сначала выбирать записи, потом создавать у себя массив, потом передавать его тебе, а ты потом все равно будешь брать этот массив и аллокировать в программе (ведь сервер и клиент обычно находятся на разных компьютерах, не так-ли? даже если бы и на одном), то получается совершенно лишнее аллокирование массива фиг знает какого размера на сервере.
я тебе больше скажу, у тебя и так происходит двойное аллокирование в приложении, потому что датасеты, и в т.ч. IBTable (при обычном next), при перемещении по записям аллокируют их динамически в своем буфере. Исключение - компонент IBSQL. Которым обычно пользуются если надо обработать много записей.
Кстати, ты не сказал, зачем ты вообще строишь этот массив. Т.е. тот массив, в который помещаешь значения из датасета. Дальше что с ним будет? Почему нельзя сразу обработать записи, получая их по DataSet.Next ?
Interbase серьезный комплекс и всех прелестей работы с ним вот так вот сразу мне не объять.
пока у тебя проблемы скорее всего в алгоритмике.
Кстати, еще раз насчет IB 6.0 - я с трудом удерживаюсь чтобы не перестать отвечать и вообще закрыть этот топик именно по причине IB 6.0. Потому что пока не увидел от тебя обоснования его использования.