Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Получить справочник прямым запросом (число прочтений - 2751 )
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Получить справочник прямым запросом
07. Октября 2011 :: 10:32
Печать  
Есть вот такой запрос. При выполнении в выборку не попадает ни один элемент. Если убрать 2 последних условия, то ввыборке 30 элементов. Подскажите что я делаю не так ?

Код
Выбрать все
DECLARE @Владелец CHAR(9), @ВидРегистра CHAR(50),@ЗнакДвижения CHAR(1),@КодОперации CHAR(9), @ВидСтатус CHAR(23);
SET @Владелец = '     K   ';
SET @ВидРегистра = 'ПартииНаличие';
SET @ЗнакДвижения = '-';
SET @КодОперации = '   K7N   ';
SET @ВидСтатус = '   2TB   ';
SELECT
	Дв.ID [Ссылка $Справочник.ДвиженияРегистров]
FROM
	sc2543 as Дв
WHERE
	PARENTEXT = @Владелец AND
	ISMARK = 0 AND
	SP2538 = @ВидРегистра AND
	SP2539 = @ЗнакДвижения AND
	SP2541 = @КодОперации AND
	  SP2857 = @ВидСтатус 


Как я понял проблема в преобразовании типа, так как поле SP2857   в таблице имеет следующее значение E1  98   2TB, а поле SP2541 значение    K7N   (как и положено, но тоже неотбирает)

Как отбирать вообще по реквизитам неопределенного вида?
Как отбирать по реквизитам типа перечисление?
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #1 - 07. Октября 2011 :: 11:41
Печать  
С операцией разобрался! Сам затупил проверять нужно чательней.
Как теперь по ВИДСТАТУС ОТОБРАТЬ ? (Реквезит неопределенного вида)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Получить справочник прямым запросом
Ответ #2 - 07. Октября 2011 :: 11:47
Печать  
Код
Выбрать все
SELECT
	Дв.ID [Ссылка $Справочник.ДвиженияРегистров]
FROM
	$Справочник.ДвиженияРегистров as Дв (nolock)
WHERE
	PARENTEXT = :Владелец AND
	ISMARK = 0 AND
	$Дв.ВидРегистра = :ВидРегистра AND
	$Дв.ЗнакДвижения = :ЗнакДвижения AND
	$Дв.КодОперации = :КодОперации AND
	$Дв.ВидСтатус = :ВидСтатус

....
Запрос.УстановитьТекстовыйПараметр("Владелец",НужныйВладелец);
....
Запрос.УстановитьТекстовыйПараметр("ВидСтатус ",НужныйСтатус); 


  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #3 - 07. Октября 2011 :: 11:51
Печать  
Eprst писал(а) 07. Октября 2011 :: 11:47:
Код
Выбрать все
SELECT
	Дв.ID [Ссылка $Справочник.ДвиженияРегистров]
FROM
	$Справочник.ДвиженияРегистров as Дв (nolock)
WHERE
	PARENTEXT = :Владелец AND
	ISMARK = 0 AND
	$Дв.ВидРегистра = :ВидРегистра AND
	$Дв.ЗнакДвижения = :ЗнакДвижения AND
	$Дв.КодОперации = :КодОперации AND
	$Дв.ВидСтатус = :ВидСтатус

....
Запрос.УстановитьТекстовыйПараметр("Владелец",НужныйВладелец);
....
Запрос.УстановитьТекстовыйПараметр("ВидСтатус ",НужныйСтатус); 



Не работает! В выборку ничего не попадает!
Если убрать условие по "ВидСтатус", то выборка идет.
Что то тут не так с типами ...

ПОГОДИ ЗАТУПИЛ!
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #4 - 07. Октября 2011 :: 11:58
Печать  
mozer писал(а) 07. Октября 2011 :: 11:51:
Eprst писал(а) 07. Октября 2011 :: 11:47:
Код
Выбрать все
SELECT
	Дв.ID [Ссылка $Справочник.ДвиженияРегистров]
FROM
	$Справочник.ДвиженияРегистров as Дв (nolock)
WHERE
	PARENTEXT = :Владелец AND
	ISMARK = 0 AND
	$Дв.ВидРегистра = :ВидРегистра AND
	$Дв.ЗнакДвижения = :ЗнакДвижения AND
	$Дв.КодОперации = :КодОперации AND
	$Дв.ВидСтатус = :ВидСтатус

....
Запрос.УстановитьТекстовыйПараметр("Владелец",НужныйВладелец);
....
Запрос.УстановитьТекстовыйПараметр("ВидСтатус ",НужныйСтатус); 



Не работает! В выборку ничего не попадает!
Если убрать условие по "ВидСтатус", то выборка идет.
Что то тут не так с типами ...

ПОГОДИ ЗАТУПИЛ!


Нет все правильно, НЕ РАБОТАЕТ!
  
Наверх
 
IP записан
 
asky
YaBB Newbies
*
Отсутствует



Сообщений: 4
Зарегистрирован: 11. Июня 2008
Re: Получить справочник прямым запросом
Ответ #5 - 07. Октября 2011 :: 12:01
Печать  
Надо либо
Right($Дв.ВидСтатус,9) = :ВидСтатус
либо
$Дв.ВидСтатус = :ВидСтатус*
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Получить справочник прямым запросом
Ответ #6 - 07. Октября 2011 :: 12:01
Печать  
дык нам отсюда не видно, чего ты пихаешь в установитьТекстовый параметр, это раз.. и какой реквизит  у тебя в справочнике неопределенного типа\вида, это два.
ЗЫ: есть еще ЗначениеВДлиннуюСтрокуБД ,ЗначениеВСамуюДлиннуюСтрокуБД ,
+ можно в самом запросе прибавить вид и тип, если что..
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #7 - 07. Октября 2011 :: 12:06
Печать  
Eprst писал(а) 07. Октября 2011 :: 12:01:
дык нам отсюда не видно, чего ты пихаешь в установитьТекстовый параметр, это раз.. и какой реквизит  у тебя в справочнике неопределенного типа\вида, это два.
ЗЫ: есть еще ЗначениеВДлиннуюСтрокуБД ,ЗначениеВСамуюДлиннуюСтрокуБД ,
+ можно в самом запросе прибавить вид и тип, если что..

Там в зависимости от флага передается либо перечисление.СтатусПартии либо Перечисление.ВидДолга
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #8 - 07. Октября 2011 :: 12:09
Печать  
Eprst писал(а) 07. Октября 2011 :: 12:01:
дык нам отсюда не видно, чего ты пихаешь в установитьТекстовый параметр, это раз.. и какой реквизит  у тебя в справочнике неопределенного типа\вида, это два.
ЗЫ: есть еще ЗначениеВДлиннуюСтрокуБД ,ЗначениеВСамуюДлиннуюСтрокуБД ,
+ можно в самом запросе прибавить вид и тип, если что..

Как прибавить тип?  подскажи!
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #9 - 07. Октября 2011 :: 12:11
Печать  
asky писал(а) 07. Октября 2011 :: 12:01:
Надо либо
Right($Дв.ВидСтатус,9) = :ВидСтатус
либо
$Дв.ВидСтатус = :ВидСтатус*


Очень довольный Спасибо работает! Ура!
Щас прочитаю про модификатор.
Вообще какой основной принцып отбора по реквизитам неопределенного вида?
  
Наверх
 
IP записан
 
asky
YaBB Newbies
*
Отсутствует



Сообщений: 4
Зарегистрирован: 11. Июня 2008
Re: Получить справочник прямым запросом
Ответ #10 - 07. Октября 2011 :: 12:26
Печать  
Реквизит типа "Неопределённый" хранится в виде Тип+Вид+Ид.
Как сказал Ёпрст такое представление объекта можно получить либо функцией ЗначениеВСамуюДлиннуюСтрокуБД, либо в запросе для параметра использовать в модификатор *
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #11 - 07. Октября 2011 :: 12:29
Печать  
asky писал(а) 07. Октября 2011 :: 12:26:
Реквизит типа "Неопределённый" хранится в виде Тип+Вид+Ид.
Как сказал Ёпрст такое представление объекта можно получить либо функцией ЗначениеВСамуюДлиннуюСтрокуБД, либо в запросе для параметра использовать в модификатор *

Спасибо буду знать!  Подмигивание
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #12 - 07. Октября 2011 :: 12:29
Печать  
asky писал(а) 07. Октября 2011 :: 12:01:
Надо либо
Right($Дв.ВидСтатус,9) = :ВидСтатус
либо
$Дв.ВидСтатус = :ВидСтатус*

немного не так надо только вторым способом
и никаких либо

  
Наверх
 
IP записан
 
asky
YaBB Newbies
*
Отсутствует



Сообщений: 4
Зарегистрирован: 11. Июня 2008
Re: Получить справочник прямым запросом
Ответ #13 - 07. Октября 2011 :: 12:44
Печать  
В данном случае можно поскольку речь идет о перечислениях. ИДы перечислений уникальны.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Получить справочник прямым запросом
Ответ #14 - 07. Октября 2011 :: 12:50
Печать  
asky писал(а) 07. Октября 2011 :: 12:44:
В данном случае можно поскольку речь идет о перечислениях. ИДы перечислений уникальны.

да не в уникальности дело ( иды всегда по определению уникальны)
Хотелось бы что бы Вы сами нашли ответ на вопрос почему первый способ очень плох.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать