FeatureExpressionEvaluator
===========================

.. currentmodule:: axioma.core.sql

.. class:: FeatureExpressionEvaluator

	Выполнение sql выражений для таблицы или запроса

		.. py:method:: FeatureExpressionEvaluator(dialect, schema)

			Конструктор

			:param dialect: Диалект выполнения sql запроса
			:type dialect: :class:`~axioma.core.sql.Dialect`
			:param schema: Схема, по которой будет выполнено sql предложение
			:type schema: :class:`~axioma.core.dp.TableSchema`

		.. py:method:: FeatureExpressionEvaluator(runtime, schema)

			Конструктор

			:param runtime: Среда выполнения sql предложений (sql-диалект Аксиомы)
			:type runtime: :class:`~axioma.core.sql.SqlRuntime`
			:param schema: Схема, по которой будет выполнено sql предложение
			:type schema: :class:`~axioma.core.dp.TableSchema`

		.. py:method:: setExpression(expression)

			Задание поля таблицы или выражения для выполнения

			:param expression: Выражение
			:type expression: :class:`str`
			:return: True, если выражение корректно. В противном случае False. Сообщение об ошибке можно посмотреть методом errorString
			:rtype: :class:`bool`

		.. py:method:: usedColumns()

			Список используемых колонок из схемы

			:return: Список
			:rtype: :class:`list` [ :class:`str` ]

		.. py:method:: expressionString()

			Заданное выражение

			:return: Выражение или :any:`None` если не задавалось или было задано неверно
			:rtype: :class:`str`

		.. py:method:: errorString()

			Строка с сообщением об ошибке если при задании выражения посредством setExpression была попытка установки некорректного выражения

			:return: Строка с ошибкой
			:rtype: :class:`str`

		.. py:method:: hasError()

			Имеются ли ошибки при задании выражения

			:return: True, если да. В противном случае False
			:rtype: :class:`bool`

		.. py:method:: evaluate(feature)

			Непосредственно выполнение выражения для записи таблицы

			:param feature: Запись таблицы
			:type feature: :class:`~axioma.core.dp.Feature`
			:return: Результат выполнения
			:rtype: :class:`~PyQt5.QtCore.QVariant`

Пример использования:

		.. code-block:: python
  
			# Создание переменной для обеспечения возможности вычисления выражений
			runtime = SqlRuntime()

			# Создание выражения по полю
			evaluator = FeatureExpressionEvaluator(runtime, layer.tableSchema())
			if not evaluator.setExpression("Население"):
					print(evaluator.errorString())
			else:
					res = evaluator.evaluate(feature)
