powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передача в ХП параметра NULL
11 сообщений из 11, страница 1 из 1
Передача в ХП параметра NULL
    #32315534
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Как передать в х/процедуру параметра, который может иметь значение
NULL?
Допустим нужно найти клиента по фамилии, имени, отчеству
Имя и отчество может отсутствовать
Делать 3 ХП не хочется
В ХП использую конструкции IF...ELSE
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315557
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315585
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Спасибо, почитал, только у меня чуть другая проблема
Есть форма, где пользователь формирует критерии поиска
1. Фирма AKA p1
2. Фамилия рук. p2
3. Имя рук p3
4. отчество рук p4
Всго четыре параметра
Далее
Forms!MyForma.RecordSource="EXEC MySP " & p1 & "," & p2 & "," & p3 "," & p4

Хранимка сама разберется, что делать с NULL параметрами
Ошибка вылетает в модуле, если хотя бы один из параметров не заполнен
"Недопустимая инструкция SQL. Проверьте фильтр для сервера..."
Когда все заполнено, все ОК

Когда ручками запускаешь ХП, любые комбинации работают

Жаль будет, если этого нельзя сделать
ХП на 2 листах, день ваял
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315594
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты погляди что у тебя в итоге выходит.
Сделай Debug.Print Forms!MyForma.RecordSource и увидишь что-нить типа
EXEC MySP 1, 2 , , 4

Sql - это не VB, параметры пропускать нельзя
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315611
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что вызывать надо примерно так:
Forms!MyForma.RecordSource="EXEC MySP " & Nz(p1,"Null") & "," и т.д.

Кстати, сильно подозреваю, что фамилия, имя и отчество - строки. Тогда кавычек сильно не хватает.
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315623
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
Видимо так оно и есть
"Видимо" потому, что
DEBUg стоит после вызова ХП, а программа валится на вызове
В случае, если все параметры есть
Debug все нормально выдает

Т.е. как итог
В ХП не возможно передать параметр со значением NULL, даже если в самой ХП
обработка NULL параметров предусмотрена?????
Т.е. всю логику надо переносить в VB, написать несколько ХП под различные
комбинации параметров???
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315629
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не Nz(p1,"Null") делать, а
Nz(p1,"DEFAULT")
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315630
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
|Так что вызывать надо примерно так:
|Forms!MyForma.RecordSource="EXEC MySP " & Nz(p1,"Null") & "," и т.д.
Сейчас попробую
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315634
ayv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ayv
Гость
DEFAULT
Извиняюсь, это что?
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315655
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>DEFAULT Извиняюсь, это что?

mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_ea-ez_05ro.htm

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
G. Use EXECUTE with DEFAULT
This example creates a stored procedure with default values for the first and third parameters. When the procedure is run, these defaults are inserted for the first and third parameters if no value is passed in the call or if the default is specified. Note the various ways the DEFAULT keyword can be used. 

USE pubs
IF EXISTS (SELECT name FROM sysobjects 
      WHERE name = 'proc_calculate_taxes' AND type = 'P')
   DROP PROCEDURE proc_calculate_taxes
GO
 -- Create the stored procedure.
 
CREATE PROCEDURE proc_calculate_taxes (@p1 smallint =  42 , @p2 char( 1 ), 
      @p3 varchar( 8 ) = 'CAR')
    AS 
   SELECT * 
   FROM mytable

The proc_calculate_taxes stored procedure can be executed in many combinations: 

EXECUTE proc_calculate_taxes @p2 = 'A'
EXECUTE proc_calculate_taxes  69 , 'B'
EXECUTE proc_calculate_taxes  69 , 'C', 'House'
EXECUTE proc_calculate_taxes @p1 = DEFAULT, @p2 = 'D'
EXECUTE proc_calculate_taxes DEFAULT, @p3 = 'Local', @p2 = 'E'
EXECUTE proc_calculate_taxes  69 , 'F', @p3 = DEFAULT
EXECUTE proc_calculate_taxes  95 , 'G', DEFAULT
EXECUTE proc_calculate_taxes DEFAULT, 'H', DEFAULT
EXECUTE proc_calculate_taxes DEFAULT, 'I', @p3 = DEFAULT
...
Рейтинг: 0 / 0
Передача в ХП параметра NULL
    #32315929
Хам трамвайный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня null
передается через
входные апраметры
а в самой ХП
делаю так
(поиск по null или по
любоиу символу)

where ... (ISNULL(dbo.[Возврат товара].[Серийный номер], N'') LIKE N'%' + ISNULL(@SerNomer, N'') + N'%')...
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передача в ХП параметра NULL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]