RU

Модуль для работы с таблицами данных

Olegus t.Gl. #12 03.01.2011 08:55 9 comments 11648 views

Набросал модуль для работы с таблицами данных. Что с его помощью можно делать:

  • Создавать таблицу с произвольным числом колонок.
  • Добавлять, находить и удалять строки в таблице.
  • Получать и устанавливать значения произвольных ячеек в таблице.
  • Сортировать строки таблицы как по одной, так и по нескольким колонкам в порядке возрастания и убывания.
  • Для доступа к отдельным строкам (чтение или запись значений ячеек) использовать не только номера строк, но и уникальные значения из какой-либо колонки (работа с индексом).
  • Выгружать строку таблицы в ассоциативный массив.
  • Перебирать таблицу в любом направлении: от первой строки до последней и наоборот.
  • Выбирать, копировать и удалять строки таблицы (как все, так и по заданному фильтру).
  • Получать число строк в таблице (как всех, так и по заданному фильтру).

Текущая версия: 1.3.1 (скачать)
Документация on-line: ссылка

Пример кода работы с таблицей:

ADDQST 'otg_lib_table.qsp'

GS 'Таб.Создать','Персонажи','Имя, Здоровье, Раса'

GS 'Таб.СоздатьИндекс','Персонажи','Имя'

GS 'Таб.ДобавитьСтроку','Персонажи','Крокодил',90,'Варвар'
GS 'Таб.ДобавитьСтроку','Персонажи','Арабелла',77,'Амазонка'
GS 'Таб.ДобавитьСтроку','Персонажи','Адельм',60,'Монах'
GS 'Таб.ДобавитьСтроку','Персонажи','Каннибал',75,'Варвар'
GS 'Таб.ДобавитьСтроку','Персонажи','Марина',77,'Амазонка'

GS 'Таб.Сортировать', 'Персонажи', 'Раса,Здоровье-'

GS 'Таб.Установить','Персонажи','Адельм','Здоровье',25

GS 'Таб.Выбрать','Персонажи','Раса','=','Варвар'
:перебор_строк_таблицы
if func('Таб.Следующая','Персонажи','Герой'):
	*NL func('Таб.Значение','Персонажи','Номер строки')+'. '+$Герой['Имя']+' ('+Герой['Здоровье']+')'
	JUMP 'перебор_строк_таблицы'
end

GS 'Таб.Удалить','Персонажи'

Модуль (документацию и пример работы) можно скачать здесь.
Вопросы и комментарии можно оставлять как здесь, так и в основной теме модуля.

Edited at 07.12.2014 17:35 (11 years ago)

Обновил модуль.

Любопытный модуль, напоминает NOSQL базу данных :)

Добавил модуль с англоязычными вариантами команд. В архиве (в первом сообщении темы ссылка на модуль также изменена на актуальную) лежат обе версии. В документацию добавлены англоязычные аналоги команд.

Версия 1.2 (скачать):

Добавил в модуль команду “Таб.Сортировать”. Теперь строки таблицы можно сортировать как по одной, так и по нескольким колонкам по возрастанию и убыванию.

GS 'Таб.Сортировать', 'Персонажи', 'Раса, Здоровье-'

Пара вопросов:
(1) Если я сделал сортировку таблицы, а потом добавил строку, то новая строка тоже будет подчиняться порядку сортировки, или таблицу надо заново сортировать?
(2) Как лучше всего реализовать выборку из таблицы, если она (выборка) с 2 и больше условиями? Создать промежуточную таблицу?

квентор:

Пара вопросов:
(1) Если я сделал сортировку таблицы, а потом добавил строку, то новая строка тоже будет подчиняться порядку сортировки, или таблицу надо заново сортировать?

Новые строки добавляются в конец таблицы, сортировать нужно будет заново.

квентор:

  1. Как лучше всего реализовать выборку из таблицы, если она (выборка) с 2 и больше условиями? Создать промежуточную таблицу?

Да, пока только последовательным копированием с заданными условиями.

Пишите сюда пожелания — буду учитывать запросы в случае продолжения работы над модулем.

Небольшие обновления в модуле (1.3.1):

  • Добавлена возможность получения уникального идентификатора строки и использование его при получении данных из таблицы.
  • Добавлена возможность работы с числовыми индексами.

Скачать можно отсюда.
Полное описание модуля всё там же.

Olegus t.Gl.,
Здравствуйте. Объясните, пожалуйста. Надо: сформировать таблицу на одной локации и отобразить на другой. КАК это можно сделать?

Aleks Versus Moderator 01.09.2018 13:47 (7 years ago)

Poganec37,
это не то. Вернее не совсем то.))

Log in or Register to post comments.