Вывод пользовательских таблиц

Страницы: 1
RSS
Вывод пользовательских таблиц
 
Как в Quik вывести пользовательскую таблицу с текстовыми ключами?
 
В рабочей папке с терминалом Quik имеется файл "QLUA.chm", в главе       "Функции для работы с таблицами Рабочего места QUIK" вы, возможно,       найдёте ответ на интересующий вас вопрос.
 
Цитата
Daniil Pozdnyakov написал:
В рабочей папке с терминалом Quik имеется файл "QLUA.chm", в главе       "Функции для работы с таблицами Рабочего места QUIK" вы, возможно,       найдёте ответ на интересующий вас вопрос.
К сожалению, ответа не нашел.

Этот код создает таблицу значение из которой можно вытащить (например командой message), но не создает окно пользовательской таблицы.
function main()
  TradePlans={
          ["TRANS_ID"]=1,
          ["NAME"]=2,
          ["OPERATION"]=3,
          ["QUANTITY"]=4,
          ["PRICE"]=5,
          }
  CreateWindow(TradePlans)
  SetWindowCaption (TradePlans, "DayTrading TradePlans")
  SetWindowPos(TradePlans, 700, 0, 1200,400)
  message(tostring(TradePlans.NAME)) -- Выводит "2"
end

Этот код создает окно с пустой таблицей (ни одной строки, столбца и значения) и выдает ошибку при попытке достать значение из таблицы.
function main()
  TradePlans={
          ["TRANS_ID"]=1,
          ["NAME"]=2,
          ["OPERATION"]=3,
          ["QUANTITY"]=4,
          ["PRICE"]=5,
          }
   TradePlans=AllocTable()
  CreateWindow(TradePlans)
  SetWindowCaption (TradePlans, "DayTrading TradePlans")
  SetWindowPos(TradePlans, 700, 0, 1200,400)
  message(tostring(TradePlans.NAME)) -- Выводит ошибку attempt to index a number value(global "TradePlans")
end


Что я не так делаю? Возможно ли вообще вывести окно таблицы с текстовыми ключами?
 
Роман,
Цитата
Что я не так делаю?
А всё не так!  :smile: Посмотрите, например, сюда:
https://forum.quik.ru/messages/forum10/message55233/topic6454/#message55233
 
Цитата
Владимир написал:
А всё не так!  :: Посмотрите, например, сюда:
https://forum.quik.ru/messages/forum10/message55233/topic6454/#message55233

Посмотрел пост и ветку целиком и, к сожалению, не нашел ответа на свой вопрос.

Если Вы имели ввиду соблюсти порядок команд указанный в посте, то он понятен, только я не могу добиться чтобы он работал с текстовыми ключами.

Этот код работает:
function main()
  TradePlans=AllocTable()
  AddColumn(TradePlans, 1, "Легенда", true, QTABLE_STRING_TYPE, 26) --Бумага
  CreateWindow(TradePlans)
  SetWindowPos(TradePlans, 0, 0, 1200,400)

  InsertRow(TradePlans, 1)
  InsertRow(TradePlans, 2)
  InsertRow(TradePlans, -1)
  SetCell(TradePlans, 1, 1, "Бумага1")
  SetCell(TradePlans, 2, 1, "Бумага2")
  SetCell(TradePlans, 3, 1, "Бумага3")
  message(tostring(GetCell(TradePlans, 1,1).image))
end

Меняю ключ строки с номера на текст и ни чего не работает (хотя ошибок не выдает)
function main()
  TradePlans=AllocTable()
  AddColumn(TradePlans, 1, "Легенда", true, QTABLE_STRING_TYPE, 26) --Бумага
  CreateWindow(TradePlans)

  SetWindowPos(TradePlans, 0, 0, 1200,400)

  InsertRow(TradePlans, "aaa")
  InsertRow(TradePlans, "bbb")
  InsertRow(TradePlans, "ccc")
  SetCell(TradePlans, "aaa", 1, "Бумага1")
  SetCell(TradePlans, "bbb", 1, "Бумага2")
  SetCell(TradePlans, "ccc", 1, "Бумага3")
  message(tostring(GetCell(TradePlans, "aaa",1).image))
end

Вопрос в том и заключается, можно ли вывести на экран таблицу у которой ключи строк Текстовые, а не числовые?
 
Нет, нельзя. Это понятно из документации

NUMBER InsertRow(NUMBER t_id, NUMBER key)                        

ключ строки - это число
 
Роман, Да, я имел в виду порядок, а также взгляд зацепился за
TradePlans={
         ["TRANS_ID"]=1,
         ["NAME"]=2,
         ["OPERATION"]=3,
         ["QUANTITY"]=4,
         ["PRICE"]=5,
         }
TradePlans=AllocTable()
Таблицы Квика и таблицы Lua - разные вещи, причём глючные до невозможности, и обращаться с ними нужно предельно аккуратно. Об остальном сказал Николай - это мне даже в голову не приходило.

А нафига Вам текстовые ключи? Чисто "спортивный интерес". Фрагмент из моей книги:

Предположим, мы имеем РБД, состоящую всего лишь из одного отношения. Заведём дополнительный столбец, значениями которого будут порядковые номера кортежей (с единицы). Именами столбцов также установим их порядковые номера (с нуля). Определим нулевой столбец как первичный ключ (или «суррогатный», или «системно-генерируемый», как «весьма настоятельно» рекомендуют авторы «Третьего Манифеста»). Теперь мы можем получать доступ к столбцам и кортежам по их номеру (как и в SQL), но в строгом соответствии с РМД. Что же изменилось? Мы всего лишь утратили возможность прямого доступа к полям и кортежам (т.к. РМ-предписания запрещают упорядочение атрибутов или кортежей), и автоматически перестали бояться дубликатов кортежей и неопределенных значений. А где же преимущества того, что наше отношение теперь идеально соответствует требованиям «Третьего Манифеста»? Их нет! Вне РМД мы можем точно так же ссылаться на кортежи этого отношения из других (или из него самого), можем вычислять физический адрес кортежа по значению суррогатного ключа (и контролировать его при желании по значению нулевого столбца), т.е. внешний ключ реально становится указателем. Таким образом, концепции, воплощённые в SQL, как минимум, не хуже РМД. Так почему же «безнадёжно следовать извращению РДМ, воплощенному в SQL», как писали Дейт с Дарвеном? С какой стати «чтобы выдержать испытание временем, следует недвусмысленно отвергнуть SQL»? Профессор, снимите очки-велосипед!©
 
Спасибо!
Страницы: 1
Читают тему (гостей: 1)
Наверх