Получить всю таблицу целиком

Страницы: 1
RSS
Получить всю таблицу целиком, Получить всю таблицу целиком без цикла
 
Всем привет. Ест вариант получить всю таблицу целиком, не перебирая ее в цикле? В частности all_trades. Т.е. не получать кол-во записей, потом крутить в цикле и забирать по одной записи, а чтоб стразу ВСЕ записи одним методом. Есть такое или все по-старому - руками?
 
Мне кажется, что быстрее, чем через SearchItems (найти все записи) и потом крутить в цикле с getItem, не получится.
 
 SearchItems
---------------------------------
Но зачем вообще крутить таблицу, когда все делается без танцев с бубном.
 
Для начала, она уже есть в памяти, если был заказ данных. Да, она не в переменной скрипта, но здесь вопрос: а зачем ее копировать в стек скрипта, удваивая объем занимаемой памяти. Она ведь может быть в много миллионов записей.

И потом, вся таблица целиком - это что? Что с ней делать? Все равно же, скорее всего, будет перебор записей для их обработки.
 
Кстати, возникло любопытство: как в SearchItems по именам переменных, заданных в строке, получают сами эти переменные?

В последнем (необязательном) параметре SearchItems получает строку вида 'flags, price, sec_code', а пользовательская функция, которую вызывает SearchItems для фильтрации записей из таблицы, получает уже сами эти переменные:
local function fn(flags, price, sec_code). Как я понял, Lua не Perl, который был гениальной задумкой Larry Wall: в Перле a - имя переменной, $ - оператор разыменования, который по имени переменной выдаёт её значение. Поэтому, если $a = 'b', то $$a это то же, что и $b:
Код
$a = 'b';
$b = 'bbb';
print "$$a\n"; # выводит строку bbb
Если в Lua действовать полным перебором типа "если в строке имя переменной 'flags', то берём переменную flags и т.п." Получится очень большой перебор, особенно, если иметь в виду, что в этой строке для SearchItems можно указывать поля вложенных таблиц, напр., 'datetime.hour'.

Кто тут глубокий копатель Lua, который может это объяснить?
 
Хм, движок форума съел у меня один доллар... В коде в предыдущем сообщении перед переменной a должно стоять целых два доллара.
 
Цитата
Serge123 написал:
Если в Lua действовать полным перебором типа "если в строке имя переменной 'flags', то берём переменную flags и т.п." Получится очень большой перебор, особенно, если иметь в виду, что в этой строке для SearchItems можно указывать поля вложенных таблиц, напр., 'datetime.hour'.
В Lua нет именованных параметров. В строке задаете параметры. В функции может их назвать хоть p1, p2 ... Будет простой позиционный вызов.
 
Подскажите, почему следующий скрипт не хочет выводить текущий портфель ЦБ?
t_id = AllocTable()
AddColumn (t_id, 0, 'Nazvanie', true, QTABLE_STRING_TYPE,40)
AddColumn (t_id, 1, 'Lotov', true, QTABLE_STRING_TYPE,40)
CreateWindow(t_id)
SetWindowCaption(t_id, "Портфель ЦБ")
InsertRow(t_id, -1)

function fn(sec_code, limit_kind, currentbal)
     if limit_kind==2 then
 return true
     else
 return false
     end
end

local NO = getNumberOf("depo_limits")
sec = SearchItems("depo_limits", 0, NO-1, fn, "sec_code, limit_kind, currentbal")
if sec ~= nil then
   for i=1,#sec,1 do
       local t_sec_item=getItem("depo_limits", sec[i])
       InsertRow(t_id, i)
       SetCell(t_id, i, 0, sec_code)
       SetCell(t_id, i, 1, currentbal)
   end
end
 
Не знаю, почему не выводит, но я бы написал fn так (для чего в неё передавать sec_code и currentbal?):
Код
function fn(limit_kind)
 return limit_kind==2
end
 
Цитата
Сергей написал:
Подскажите, почему следующий скрипт не хочет выводить текущий портфель ЦБ?
Покажите, что у Вас в портфеле со сроком расчета T2. Возможно, что там пусто.
 
Цитата
Serge123 написал:
Не знаю, почему не выводит, но я бы написал fn так (для чего в неё передавать sec_code и currentbal?):
Код
   function   fn (limit_kind)
  return  limit_kind =  =  2 
 end   
Поправил, спасибо!
 
Цитата
nikolz написал:
Цитата
Сергей написал:
Подскажите, почему следующий скрипт не хочет выводить текущий портфель ЦБ?
Покажите, что у Вас в портфеле со сроком расчета T2. Возможно, что там пусто.
Количество пустых строк, появляющееся в таблице после работы скрипта, совпадает с количеством позиций в 2х таблицах "Состояние счета" при Т2 (ну, на 1 больше, учитывая лишнюю строку InsertRow(t_id, -1)).
В связи с этим полагаю, что таблицу "Позиции по инструментам" скрипт видит.
Страницы: 1
Читают тему
Наверх