Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Ошибка ICASE (число прочтений - 8939 )
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка ICASE
Ответ #30 - 14. Июня 2012 :: 12:19
Печать  
Зачет ага..
Для sql case предназначен (заместо iif), если что


mozer писал(а) 14. Июня 2012 :: 10:07:
мне нужно не 1 и 2, а 0 и 1


так делай тогда:
Код
Выбрать все
|	Контрагенты.isfolder-1 ЭтоГруппа, 



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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #31 - 14. Июня 2012 :: 13:12
Печать  
Eprst писал(а) 14. Июня 2012 :: 12:19:
Зачет ага..
Для sql case предназначен (заместо iif), если что


mozer писал(а) 14. Июня 2012 :: 10:07:
мне нужно не 1 и 2, а 0 и 1


так делай тогда:
Код
Выбрать все
|	Контрагенты.isfolder-1 ЭтоГруппа, 



будет тебе 0 и 1

не будет. вообщем это конечно можно уже стандартными методами обработать, но хотел сразу в запросе, чтоб лишнего не городить.
Дело в том что по формату 0 это элемент (в скуле это 2), а 1 это группа (в скуле это 1). Поэтому и IIF думал. Щас с CASE попробую
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #32 - 14. Июня 2012 :: 13:28
Печать  
Eprst писал(а) 14. Июня 2012 :: 12:19:
Зачет ага..
Для sql case предназначен (заместо iif), если что


mozer писал(а) 14. Июня 2012 :: 10:07:
мне нужно не 1 и 2, а 0 и 1


так делай тогда:
Код
Выбрать все
|	Контрагенты.isfolder-1 ЭтоГруппа, 



будет тебе 0 и 1

С CASE заработало, спасибо.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка ICASE
Ответ #33 - 14. Июня 2012 :: 13:45
Печать  
не нужен там case

Код
Выбрать все
|	Контрагенты.isfolder%2  ЭтоГруппа,  

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #34 - 14. Июня 2012 :: 13:49
Печать  
Eprst писал(а) 14. Июня 2012 :: 13:45:
не нужен там case

Код
Выбрать все
|	Контрагенты.isfolder%2  ЭтоГруппа,  


да не получится мне на группу 1 нужно, а тут на элемент будет.

а с case запрос сработал, но данные в таблицу не попадают  Злой
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка ICASE
Ответ #35 - 14. Июня 2012 :: 13:57
Печать  
Заморочил мне голову своей..ср.. энергией!

Код
Выбрать все
|	2-Контрагенты.isfolder  ЭтоГруппа,   



и это , case в запросе лучше избегать для таких случаев

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка ICASE
Ответ #36 - 14. Июня 2012 :: 13:57
Печать  
mozer писал(а) 14. Июня 2012 :: 13:49:
но данные в таблицу не попадают  Злой


весь текст запроса давай..

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #37 - 14. Июня 2012 :: 14:01
Печать  
Eprst писал(а) 14. Июня 2012 :: 13:57:
mozer писал(а) 14. Июня 2012 :: 13:49:
но данные в таблицу не попадают  Злой


весь текст запроса давай..



Код
Выбрать все
текстЗапроса = "
	|SELECT
	|	RTRIM(CAST(CAST(Контрагенты.CODE as INT) as CHAR)) Код,
	|	RTRIM(CAST(CAST(ГруппыКонтрагенты.CODE as INT) as CHAR)) КодГруппы,
	|	Контрагенты.ID [КонтрагентСсылка $Справочник.Контрагенты],
	|	RTRIM(Контрагенты.Descr) Наименование,
	|	ЭтоГруппа =
	|	 CASE
	|	 WHEN Контрагенты.isfolder = 2 THEN 0
	|	 WHEN Контрагенты.isfolder = 1 THEN 1
	|	 END,
	|	$ФизЛица.ДополнительныеСведения ДополнительныеСведения,
	|	$ФизЛица.Пол [Пол $Справочник.ОКИН],
	|	$ФизЛица.ДатаРождения ЗнаменательнаяДата,
	|	$ФизЛица.ДатаРождения ДатаРождения,
	|	$ФизЛица.ДатаРегистрации ДатаРегистрации,
	|	'' ФактИндекс,
	|	'' ФактГород,
	|	$ФизЛица.ФактАдрес ФактАдрес,
	|	RTRIM($Контрагенты.ЭлПочта) ЭлектроннаяПочта,
	|	$Сайты.АдресСайта СтраничкаВИнтернете,
	|	$ФизЛица.Телефоны Телефон,
	|	RTRIM($ФизЛица.ИНН) ИНН,
	|	$ФизЛица.ДокументУдЛичность Документ,
	|	'' ОКПО,
	|	'' ОКПД,
	|	'' ЮрИндекс,
	|	'' ЮрГород,
	|	$ФизЛица.ЮрАдрес ЮрАдрес
	|FROM
	|	$Справочник.Контрагенты Контрагенты
	|LEFT JOIN
	|	$Справочник.Контрагенты ГруппыКонтрагенты ON ГруппыКонтрагенты.ID = Контрагенты.ParentID
	|LEFT JOIN
	|	$Справочник.ФизЛица ФизЛица ON ФизЛица.ID = $Контрагенты.ЮрФизЛицо
	|LEFT JOIN
	|	$Справочник.Сайты Сайты ON Сайты.ID = $Контрагенты.Сайт
	|WHERE
	|	Контрагенты.ismark = 0
	|";
 

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #38 - 14. Июня 2012 :: 14:04
Печать  
Eprst писал(а) 14. Июня 2012 :: 13:57:
и это , case в запросе лучше избегать для таких случаев


Почему??
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка ICASE
Ответ #39 - 14. Июня 2012 :: 14:07
Печать  
Код
Выбрать все
RTRIM(CAST(CAST(Контрагенты.CODE as INT) as CHAR)) Код, 



нафига такой изврат то ?
CODE  - это всегда и так строка, если че

Код
Выбрать все
ON ФизЛица.ID = $Контрагенты.ЮрФизЛицо 



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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #40 - 14. Июня 2012 :: 14:11
Печать  
Eprst писал(а) 14. Июня 2012 :: 14:07:
Код
Выбрать все
RTRIM(CAST(CAST(Контрагенты.CODE as INT) as CHAR)) Код, 



нафига такой изврат то ?
CODE  - это всегда и так строка, если че

Код
Выбрать все
ON ФизЛица.ID = $Контрагенты.ЮрФизЛицо 



тут нужно вид справочника прибавить слева


Дак изврат мне нужно нули отсеч )))
и я не знаю сколько их )))
Код
Выбрать все
RTRIM(CAST(CAST(Контрагенты.CODE as INT) as CHAR)) Код,
 


поэтому так.
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #41 - 14. Июня 2012 :: 14:48
Печать  
mozer писал(а) 14. Июня 2012 :: 13:49:
а с case запрос сработал, но данные в таблицу не попадают  Злой

блин сам накосячил, нужно не 0, а '0'
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Ошибка ICASE
Ответ #42 - 15. Июня 2012 :: 00:52
Печать  
mozer писал(а) 14. Июня 2012 :: 10:07:
нет запрос рабочий, был пока не добавил IFF
База на SQL поэтому ismark = 0
Сам себе противоречишь:
IIF - это функция фокса, а не скуля... для скуля надо пользовать CASE.

Если уж очень надо пользовать именно эту функцию, то вот что нашлось на просторах сети
Код
Выбрать все
CREATE FUNCTION dbo.IIF(@Bit sql_variant, @TRUE sql_variant, @FALSE sql_variant)
RETURNS sql_variant
AS
BEGIN
RETURN CASE ISNULL(CAST(@Bit as bit),0) WHEN 1 then @TRUE ELSE  @FALSE END
END 

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


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Ошибка ICASE
Ответ #43 - 15. Июня 2012 :: 02:31
Печать  
Dmitry The Wing писал(а) 15. Июня 2012 :: 00:52:
mozer писал(а) 14. Июня 2012 :: 10:07:
нет запрос рабочий, был пока не добавил IFF
База на SQL поэтому ismark = 0
Сам себе противоречишь:
IIF - это функция фокса, а не скуля... для скуля надо пользовать CASE.

Если уж очень надо пользовать именно эту функцию, то вот что нашлось на просторах сети
Код
Выбрать все
CREATE FUNCTION dbo.IIF(@Bit sql_variant, @TRUE sql_variant, @FALSE sql_variant)
RETURNS sql_variant
AS
BEGIN
RETURN CASE ISNULL(CAST(@Bit as bit),0) WHEN 1 then @TRUE ELSE  @FALSE END
END 


Понял уже, что CASE нужно. Сделал с CASE все работает.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Ошибка ICASE
Ответ #44 - 15. Июня 2012 :: 05:00
Печать  
case там не нужен, см #35
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать