При разработке этого модуля пришлось внимательно работать с базой. Многие детали запроса здесь неочевидны, но пропустить их не составит труда.

Функция добавления позиции:
function position.add()

	base = require "database"
	
	print("\n Введите наименование операции.")
	nominal = io.stdin:read()
	print("\n Введите стоимость операции.")
	price = io.stdin:read()

	base.insert_into_values( "position", "nominal, price", "'" .. tostring(nominal) .. "'" .. tostring(price) )

	print("\n Наименование добавленно. \n")

end

Данные просто добавляются в таблицу.

Функции изменения данных:
function position.change_nominal()

	base = require "database"

	data = base.select_from_where( "number, nominal, price", "position", nil )
	while data do
		print("| № " .. data.number .. " | " .. data.nominal .. " | " .. data.price .. " руб. |" )
		data = thread:fetch(data, "a")
	end	
	
	print("\n Укажите номер для изменения наименования позиции: \n")
	number = io.stdin:read()
	print("\n Укажите новое наименование: \n")
	nominal = io.stdin:read()

	base.update_set_where( "position", "nominal = " .. tostring(nominal), "number = " .. tostring(number) )

	print("\n Наименование изменено. \n")

end


function position.change_price()

	base = require "database"

	data = base.select_from_where( "number, nominal, price", "position", nil )
	while data do
		print("| № " .. data.number .. " | " .. data.nominal .. " | " .. data.price .. " руб. |" )
		data = thread:fetch(data, "a")
	end	
	
	print("\n Укажите номер для изменения цены: \n")
	number = io.stdin:read()
	print("\n Укажите новую цену: \n")
	price = io.stdin:read()

	base.update_set_where( "position", "price = " .. tostring(price), "number = " .. tostring(number) )

	print("\n Телефон изменён. \n")

end

Здесь происходит изменение данных через разные отображения.

Функция удаления позиции:
function position.drop()

	base = require "database"

	print("\n Внимание! После удаления позиции будут удалены все документы с этой позицией. \n")
	
	data = base.select_from_where( "number, nominal, price", "position", nil )
	while data do
		print("| № " .. data.number .. " | " .. data.nominal .. " | " .. data.price .. " руб. |" )
		data = thread:fetch(data, "a")
	end	

	print("\n Укажите номер удаляемой позиции \n")
	number = io.stdin:read()

	base.delete_from_where( "position", "position.number = " .. tostring(number) )
	base.delete_from_where( "document", "document.position = " .. tostring(number) )

	thread = io.stdin:read()
	print("\n Позиция удалена. \n")

end

По запросу удаляются данные позиции и документы, с ней связаные.

Функция отображения списка позиций:
function position.show()

	base = require "database"

	print("Список позиций: \n")

	data = base.select_from_where( "number, nominal, price", "position", nil )
	while data do
		print("| № " .. data.number .. " | " .. data.nominal .. " | " .. data.price .. " руб. |" )
		data = thread:fetch(data, "a")
	end

	print("\n Запрос выполнен. \n")		

end

Выводим список позиций по индексам.

В следующей статье выложу функции модуля работы с документами.

P.S. Маленькая просьба — если хотите передать замечание по этому циклу статей, прошу предварительно прочитать статью «Разработка микро-учётной системы на lua, часть вторая. Постановка задачи», в которой я указываю условия разработки программы и функции, которые на неё возлагаются. Учитывайте это.
Поделиться с друзьями
-->

Комментарии (0)