Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Блокировка пустых полей в ХП  [new]
Проходивший мимо
Guest
Как в ХП заблокировать пустые поля при вводе данных через форму? Т.е если поле не выбрано, то выводятся все значения, если выбрано то выводится выбранное, а пустые запрещены.Вроде это можно сделать черех case when isnull. Нужно как то так.Помогите, плиз
9 сен 04, 11:40    [946258]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
нифига не понял
9 сен 04, 11:45    [946296]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Тот же
Guest
Вообщем в условиях нужно определить следующие: если значение не выбрано, то выводятся все значения данного поля, пустое поле недопустимо. Как это сделать через case when isnull. ХП связано с формой, на которой показывается результат выборки. Вот. Щас немного понятно? Если да то помогите плиз.
9 сен 04, 11:50    [946328]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
Set Telepat Mode On

FAQ

Set Telepat Mode OFF
9 сен 04, 11:58    [946384]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Тот же
Guest
Нет, это немного не то. НУжно в ХП в where сделать через
case when isnull. И чтобы если значение не выбрано, то выводятся все
9 сен 04, 12:07    [946431]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
что значит если значение не выбрано???
что значит выводится все???

телепят моде он

Select ...
From ...
Where [Поле]=[параметр] Or [параметр] Is Null

телепят моде офф

если не оно - то научитесь задавать ПОНЯТНЫЕ вопросы
9 сен 04, 12:13    [946462]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Hummer
Member

Откуда:
Сообщений: 2583
Вот так делается.
Условие Where в запросе:
WHERE Table.IdField = @IdField or @IdField = 0

Декларация ХП:
CREATE PROCEDURE [dbo].[My_SP](@Param1 int, @IdField int = 0) AS
SET NOCOUNT ON
SELECT ...

Таким образом, если параметр @IdField не задан, условие не может быть обработано только по первому параметру.
9 сен 04, 12:14    [946464]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Hummer
Member

Откуда:
Сообщений: 2583
2 Лох Позорный

А я опоздал:)
9 сен 04, 12:14    [946467]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
Приведите здесь Ваши исходные данные, 2 ванианта значений условий и то, что хотите получить в обоих случаях.
9 сен 04, 12:15    [946470]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Тот же
Guest
adp, сервак на sql. Создана форма и ХП для нее которая делает выборку.
Вот эти параметры ND, NMD, NR есть на форме и в ХП. Нужно если их не выбрали (т.е они NULL) на форме то выводятся в результате все значения данных полей, а если ввели, то выводятся введенное значение. Как еще объяснить, я по другому не умею. Нужно сделать через CASE WHEN, типа этого
dbo.cD.P> = case when len(isnull(@P,''))=0 then '0000' else @P end AND
dbo.cD.P< = case when len(isnull(@P,''))=0 then '9999' else @P end .
cD - главная таблица, откуда берутся данные
9 сен 04, 12:28    [946550]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Hummer
Member

Откуда:
Сообщений: 2583
Напи сали уже как сделать. Есть другие способы - сформировать строку Where и выпольнить селект из View или динамический СКЛ, но это не есть гуд...
9 сен 04, 12:30    [946558]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Geo
Member

Откуда:
Сообщений: 6883
А вот это не пойдет?

ALTER PROCEDURE dbo.СохраненнаяПроцедура1
(@parameter1 nvarchar(30) = '000')
AS
SELECT @parameter1 AS tst, NameCFU
FROM dbo.MyTable
WHERE (MyField <> @parameter1)
9 сен 04, 12:33    [946572]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
Set Telepat Mode On

Вроде дошло.

Create Procedure MyProc @ND int, @NMD int, @NR int
as
BEGIN
  Select IsNull (@ND, ND), IsNull (@NMD, NMD), IsNull (@NR, NR)
  From MyTable
  Where ...
END

Set Telepat Mode OFF

Если это не то, то зделай всё как тут сказано.
9 сен 04, 12:42    [946626]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Лох Позорный
Member

Откуда:
Сообщений: 9898
если выяснится, что никто не угадал - перенесу топик в форум по MS SQL
пусть Глори мучается :)
9 сен 04, 12:46    [946645]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Снова он
Guest
Спасибо за старания, но все равно немного не то. Дело в том, что процедура уже есть, все эти параметры описаны. Единственное, что нужно сделать так это в разделе where задать описанные ранее условия для каждого значения ND, NMD, NR. Т.е один параметр я уже описал (dbo.cD.P> = case when len(isnull(@P,''))=0 then '0000' else @P end AND
dbo.cD.P< = case when len(isnull(@P,''))=0 then '9999' else @P end ). Нужно остальные сделать также.
9 сен 04, 12:53    [946683]     Ответить | Цитировать Сообщить модератору
 Re: Блокировка пустых полей в ХП  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
Лох Позорный
если выяснится, что никто не угадал - перенесу топик в форум по MS SQL
пусть Глори мучается :)

По моему, настал момент обращения за помощью к Глори.
9 сен 04, 12:58    [946714]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить