ZdenniZ (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Работа с экранной таблицей - нужна помощь
 
Всем привет. Я в квике и в луа новичок, но твердо решил разобраться и написать несколько скриптов. Начать решил со скрипта, который из всех торгующихся бумаг выбирает наиболее ликвидные. На данный момент пока получилось только вытащить в экранную таблицу все бумаги и их текущий оборот (VALTODAY), скрипт ниже. Теперь мне необходимо отсортировать полученную таблицу программно по полю "Оборот" от наибольшего значения к наименьшему и выбрать оттуда первые 32 бумаги (т.е. наиболее ликвидные). Как реализовать эту сортировку - ума не приложу. Читал, что нужно сделать отдельную таблицу в виде массива и его уже сортировать через table.sort, но как опросить эту экранную таблицу тоже непонятно и в хелпе ничего такого не нашел... Помогите пожалуйста )).
Код
IsRun = true
class_code="QJSIM"
 
function main()

      t_id = AllocTable()  
     
   AddColumn(t_id, 1, "Бумага",       true, QTABLE_STRING_TYPE, 20)
   AddColumn(t_id, 2, "Оборот", true, QTABLE_DOUBLE_TYPE,   14)
   t = CreateWindow(t_id)
 
        
  local seclist = {}
  local valtod = {}
  local secstring = ""
  local iRowInOutTable = 1
  local list = {}
  local val = 0
  local sorttable = {}
  
 --list = getClassesList()
 --message(list)
  seclist = getClassSecurities(class_code)
   
  for SecCode in string.gmatch(seclist, "([^,]+)") do
  i=1
  InsertRow(t_id, i)
 valtod = getParamEx(class_code, SecCode, "VALTODAY").param_value
  seccode = SecCode
  val = tonumber(valtod)
  --message(tostring(val))
   SetCell(t_id, iRowInOutTable, 1, seccode)
   SetCell(t_id, iRowInOutTable, 2, tostring(math_round(val, 0) ) )
   i=i+1
 
  end
end

function math_round (num, idp)
   local mult = 10^(idp or 0)
   return math.floor(num * mult + 0.5) / mult  
end

end
Страницы: 1
Наверх