|  29.03.2004, 13:22 | #1 | 
| Участник |  Фильтр по enum-полю в select 
			
			Вопрос в следующем, Чтобы отобрать все строковые поля в select я пишу ...="*", а есть что-то аналогичное для Enum-полей, чтобы можно было отбирать все Enum-поля? | 
|  | 
|  29.03.2004, 13:33 | #2 | 
| 1C | Re: Фильтр по enum-полю в select Цитата: 
		
			Изначально опубликовано ArturK  Чтобы отобрать все строковые поля в select я пишу ...="*", | 
|  | 
|  29.03.2004, 13:46 | #3 | 
| Участник | 
			
			Ok, поподробнее напишу. Для строкового поля я пишу так: PHP код: 
			PHP код: 
			 | 
|  | 
|  29.03.2004, 14:21 | #4 | 
| Участник | 
			
			Привет! Так? PHP код: 
			
				__________________ С уважением, Андрей Беседин | 
|  | 
|  29.03.2004, 14:45 | #5 | 
| Участник | Цитата: 
		
			Изначально опубликовано ArturK  Для строкового поля я пишу так: PHP код: 
			1. Не стоит. Поскольку придется учитывать разные языки. Причем учитывать хитро, поскольку клиент и сервер приложений могут быть запущены с разными языками. 2. Не стоит. Поскольку Аксапта позволяет изменять текстовые метки пользователям. И ваше условие может не сработать, если пользователь поменяет какой-либо текст 3. Не стоит. Поскольку вы закладываете какой-то смысл в текст метки, вместо того, чтобы пользоваться нормальными реляционными средствами. Если некоторые перечисления у вас имеют специальный смысл, то сделайте таблицу, в которую занесите эти перечисления. Не закладывайте в код программы "магические" константы. | 
|  | 
|  29.03.2004, 17:51 | #6 | 
| Участник | 
			
			Если нужны не текст перечисляемого типа, а именно значение, то почему не написать условие "больше или равно нулю" ("0..") или от 0 до 255 (других значений ведь быть не может)
		 | 
|  | 
|  30.03.2004, 10:10 | #7 | 
| Участник | Редкостный изврат. 
			
			Енум - это ПО ОПРЕДЕЛЕНИЮ - ПЕРЕЧИСЛЕНИЕ ! Какой диапазон может быть в перечислении? Цитата: 
		
			 Цитата из ArturK  PHP код: 
			PHP код: 
			 | 
|  | 
|  30.03.2004, 10:10 | #8 | 
| Участник | Цитата: 
		
			Изначально опубликовано Владимир Максимов  Если нужны не текст перечисляемого типа, а именно значение, то почему не написать условие "больше или равно нулю" ("0..") или от 0 до 255 (других значений ведь быть не может) У меня может быть два условия, первое, когда берутся все значения и второе, когда только одно значение. Хочется реализовать это в одном select`e, а не писать PHP код: 
			 | 
|  | 
|  30.03.2004, 10:19 | #9 | 
| Участник | Цитата: 
		
			Изначально опубликовано ArturK  PHP код: 
			PHP код: 
			 | 
|  | 
|  30.03.2004, 10:38 | #10 | 
| Участник | PHP код: 
			А если нужно отобрать все, то Мин.значение = 0 Макс.значение = 255 Enum не могут принимать значения больше 255. Это системное ограничение. | 
|  | 
|  30.03.2004, 10:44 | #11 | 
| Участник | Цитата: 
		
			Изначально опубликовано ta_and PHP код: 
			PHP код: 
			 | 
|  | 
|  30.03.2004, 11:13 | #12 | 
| Участник | Re: Редкостный изврат! Цитата: 
		
			Изначально опубликовано ta_and  Редкостный изврат! Енум - это ПО ОПРЕДЕЛЕНИЮ - ПЕРЕЧИСЛЕНИЕ ! Какой диапазон может быть в перечислении? А между тем в исходных кодах аксапты за милую душу встречаются запросы по перечислимому полю с выборкой типа Value >= X или X1 <= Value <= X2. В логику некоторых "родных" перечислимых типов заложено смысловое значение диапазонов. Простейший пример - перечислимый тип прав доступа  Так что зря вы так на перечислимые типы-то... 
				__________________ Улыбаемся и машем, парни! Улыбаемся и машем... | 
|  | 
|  30.03.2004, 11:16 | #13 | 
| Участник | :) Прошу прощения. поторопился... 
			
			Видел же, что-то тут не так...   но не стал проверять... Конечно правильно так: Цитата: 
		
			Изначально опубликовано Джон  PHP код: 
			 | 
|  | 
|  30.03.2004, 11:19 | #14 | 
| Участник | Цитата: 
		
			Изначально опубликовано Anais  В логику некоторых "родных" перечислимых типов заложено смысловое значение диапазонов. :Р Все равно редкостный изврат. От таких программерских решений просто тошнит.  Посмотрите на енум LedgerTransTxt. Вам хорошо? | 
|  | 
|  30.03.2004, 11:29 | #15 | 
| Участник | 
			
			ArturK Кстати, если все-таки будешь делать такое универсальное условие проверь 2 предложенных варианта с точки зрения быстродействия. Исходя из логики работы MS SQL лично мне кажется, что BETWEEN должен работать быстрее чем ИЛИ. Но это надо бы проверить. В смысле быстродействия с Axapta ничего заранее не ясно. | 
|  | 
|  30.03.2004, 11:34 | #16 | 
| Участник | Цитата: 
		
			Изначально опубликовано ArturK  Хочется реализовать это в одном select`e, а не писать PHP код: 
			Для сложных случаев используйте Query. Тогда вы сможете указать Range(...).value(значение) или оставить Range(...).value(SysQuery::valueEmptyString()) Кроме того, query можно создать в AOT, а в коде писать одну строчку q = new Query(querystr(myQuery)). Так вам меньше придется программировать. постарайтесь не использовать select | 
|  | 
|  30.03.2004, 12:26 | #17 | 
| Участник | Цитата: 
		
			Изначально опубликовано Владимир Максимов  В смысле быстродействия с Axapta ничего заранее не ясно. И, если ( ! если нужно одно значение) = true, то отбросит эту часть в where вообще, как константную. А если ( ! если нужно одно значение) = false, то на сервер пойдет условие where enum_fild == EnumName::Element1; 
				__________________ Улыбаемся и машем, парни! Улыбаемся и машем... | 
|  | 
|  30.03.2004, 12:38 | #18 | 
| Участник | Цитата: 
		
			Axapta ... отбросит часть
		
	  В лучшем случае, это сделает оптимизатор sql | 
|  | 
|  30.03.2004, 13:37 | #19 | 
| Участник | Цитата: 
		
			Изначально опубликовано mazzy  А вот на это рассчитывать не стоит, по-моему  Цитата: 
		
			Изначально опубликовано mazzy  В лучшем случае, это сделает оптимизатор sql 
				__________________ Улыбаемся и машем, парни! Улыбаемся и машем... | 
|  |