Как добавить существующий элемент в таблицу через поле поиска

В этом примере мы реализовали быстрое добавление строки в таблицу.

Для этого мы:

  • создали таблицу
  • добавили в неё необходимые поля (id, name, code, value, category)
  • в настройках таблицы (Быстрое создание по имени) установили переключатель на "Да"
  • реализовали процедуру GetItem 
  • создали хранимую процедуру непосредственно из базы данных.
CREATE PROCEDURE [dbo].[crud_watch_createSearch_getItems]
	@filters CRUDFilterParameter READONLY,
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	declare   @ids TABLE (id int)

	-- filters...
	declare @filterItemID nvarchar(128)
	select @filterItemID = try_cast(Value as int) from @filters where [Key] = 'itemID'

	insert into @ids
	select id
	from tst_products
	where (isnull(@filterItemID, 0) = 0 or id = @filterItemID)

	-- SELECT 1
	select
		id id,
		isnull(name, '') name,
        isnull(art, 'Не указано') art,
		isnull([desc], 'Не указано') [desc],
        isnull(try_convert(datetime, created, 104), '')created,
        isnull(isVisible, 0) isVisible,
        isnull((select name from tst_categories where id = (select categoryID from tst_categoryProducts where productID = p.id)), 'Не указано') category
	from tst_products p
	where id in (select id from @ids)
	order by
		case when @sort = ''  then id end asc,
        case when @sort = 'name' and @direction = 'up' then name end asc,
        case when @sort = 'name' and @direction = 'down' then name end desc,
        case when @sort = 'price' and @direction = 'up' then price end asc,
        case when @sort = 'price' and @direction = 'down' then price end desc,
        case when @sort = 'desc' and @direction = 'up' then [desc] end asc,
        case when @sort = 'desc' and @direction = 'down' then [desc] end desc,
        case when @sort = 'created' and @direction = 'up' then created end asc,
        case when @sort = 'created' and @direction = 'down' then created end desc
	OFFSET @PageSize * (@Page - 1) ROWS
	FETCH NEXT @PageSize ROWS ONLY;

	-- SELECT 2
	select count(*) from @ids

	-- SELECT 3
	Select  '  ' Title, 1 HideTitleCount, iif(@filterItemID is null, 1, 0) FastCreate, 1 FastCreateSearch
END
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'crud_watch_createSearch_fastCreate_search') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[crud_watch_createSearch_fastCreate_search]
GO
CREATE  PROCEDURE [dbo].[crud_watch_createSearch_fastCreate_search]
   @q nvarchar(256),
   @itemID nvarchar(128),
   @username nvarchar(256)
AS
BEGIN
	CREATE TABLE dbo.#result (id int, [text] nvarchar(256), [desc] nvarchar(1024), [type] nvarchar(256), [date] date)

	insert into #result
	select id, name, '', '', getdate()
	  from tst_products p

	where name like '%'+@q+'%'
	select * from #result
	drop table #result
END
go

Название процедуры в виде crud_{tableCode}_{name}

Примечание : Имя (name) должно быть обязательно с префиксом _search, в нашем случае fastCreate_search

Насколько полезна эта возможность?

Другие модули

Последние обновления

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Сайт использует Cookie. Правила конфиденциальности OK