AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.10.2008, 12:09   #1  
Вата is offline
Вата
Участник
 
71 / 0 (1) +
Регистрация: 20.09.2008
Как в Аксапте написать «*»
Вопрос я так понимаю тривиальный, тем не менее поиск по форуму ничего не дал.
Как в Аксапте написать «*» ?
То есть, есть запрос вида:

Select Table
where Table.field == ‘*’;


Нужно чтобы выбирались ВСЕ поля, пробовал пустые скобки не хочет?!
В программе, нужно что бы по условию, либо был фильтр по полю либо его не было..
Старый 29.10.2008, 12:12   #2  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Не совсем понял проблемы...
что бы при запросе выбрались все поля достаточно написать:
select Table;
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 29.10.2008, 12:13   #3  
36AC is offline
36AC
Участник
Аватар для 36AC
 
28 / 11 (1) +
Регистрация: 30.06.2005
Адрес: город М
вместо == попробуй использовать like
За это сообщение автора поблагодарили: Вата (1).
Старый 29.10.2008, 12:17   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Вата Посмотреть сообщение
Как в Аксапте написать «*» ?

Нужно чтобы выбирались ВСЕ поля, пробовал пустые скобки не хочет?!
Смотрите:
0. это два совершенно разных вопроса. причем второй скорее всего неправильный.

1. для того, чтобы Аксапта искала записи, в которых содержится спецсимвол, то спецсимвол надо экранировать бэкслешем (\). Или использовать @-стиль написания строковых литералов

например, while select mytable where myTable.myField == '\*' {}
или @-стиль, while select mytable where myTable.myField == @'\' {}

2. для того, чтобы аксапта выбирала все ЗАПИСИ, то надо избавиться от условия where. Правильный способ работы с переменными услвоиями - это использовать Query.

Если же вы хотите обязательно while select, то надо писать так
str myRange = '';
while select mytable
where (myTable.myField == myRange || myRange == '') {}

3. для того, чтобы аксапта выбирала все ПОЛЯ, ничего делать не нужно. Ваш запрос уже выбирает все поля, поскольку вы не перечислили ни одного поля в запросе.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Gustav (3).
Старый 29.10.2008, 12:25   #5  
Вата is offline
Вата
Участник
 
71 / 0 (1) +
Регистрация: 20.09.2008
Задача:
На форме есть поле.. Если в поле что то стоит (есть значение), то нужно это использовать как фильтр, если же там ничего не стоит (пусто) то нужно игнорировать это условие (выбрать всё поля). С query не охота заморачиваться..

X++:
str myRange = '';
while select mytable 
where (myTable.myField == myRange || myRange == '') {}
говорит нельзя string в запросах!

Последний раз редактировалось Вата; 29.10.2008 в 12:28.
Старый 29.10.2008, 12:27   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Возможно вас устроит вот такая конструкция

X++:
Select Table
where ((value == '') || (Table.field == value));
За это сообщение автора поблагодарили: mazzy (2).
Старый 29.10.2008, 12:29   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Вата Посмотреть сообщение
С query не охота заморачиваться..
А придется. Именно query предназначен для работы с пользовательскими условиями.

Вы конечно можете написать вот так
X++:
     while select,    
str myRange = '';
while select mytable
where (myTable.myField == myRange || myRange == '') {}
Но следующая ваша хотелка будет в том, что надо реализовать пользовательский фильтр с запятыми, восклицательными знаками и прочей чешуей.
http://axapta.mazzy.ru/lib/search/

разберитесь с query.
__________________
полезное на axForum, github, vk, coub.
Старый 29.10.2008, 12:31   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Вата Посмотреть сообщение
говорит нельзя string в запросах!
можно конечно. FAQ http://forum.mazzy.ru/index.php?showtopic=173

Извините, что написал, не подумав, что вы введете в Аксапту именно этот код.
Надо писать так

X++:
myStringType myRange = '';
while select mytable
where (myTable.myField == myRange || myRange == '') {}
на худой конец так
X++:
str 10 myRange = '';
while select mytable
where (myTable.myField == myRange || myRange == '') {}
__________________
полезное на axForum, github, vk, coub.
Старый 29.10.2008, 12:34   #9  
Вата is offline
Вата
Участник
 
71 / 0 (1) +
Регистрация: 20.09.2008
Всем спасибо я уже написал вот так:

X++:
    sAccount    = "Значение");
    if (sAccount == '')
        sAccount = '*';

select  from  Table
            where Table.Account  like sAccount
Всё работает
Старый 29.10.2008, 12:35   #10  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Ну и для правильного понимания...
Выбрать все поля != выбрать все записи. Автор топика опять плохо формулирует свои желания.
Старый 29.10.2008, 12:37   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нужно писать более граммотно :

X++:
select * from Table
    where !sAccount || Table.Account == sAccount;
Проверьте
За это сообщение автора поблагодарили: mazzy (2), anykey (1), Вата (1).
Старый 29.10.2008, 12:38   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Вата Посмотреть сообщение
where Table.Account like sAccount[/XPP]
Like с огромной вероятностью не индексируется.
Т.е. вы перешли от индексированного поиска к Table scan.

Другими словами, легким движением руки вы ввели дикие тормоза в свою систему.
И это потому, что кому-то очень лень разобраться с Query.
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Вата (1).
Старый 29.10.2008, 12:44   #13  
Вата is offline
Вата
Участник
 
71 / 0 (1) +
Регистрация: 20.09.2008
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Нужно писать более граммотно :

X++:
select * from Table
    where !sAccount || Table.Account == sAccount;
Проверьте
Да исправил на так.. Всё работает.. Спасибо
Теги
как правильно, запрос (query), axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помогите такой вопрос написать в Аксапте Protey DAX: Программирование 13 25.09.2006 13:04
Standart Costing, Direct Costing и механизмы их реализации в Аксапте slava09 DAX: Функционал 55 05.06.2006 11:00
Система оповещений в Аксапте (события в Аксапте) raunio DAX: Прочие вопросы 1 29.09.2005 15:44
Аналитический учет в Аксапте. Анна DAX: Прочие вопросы 38 06.04.2005 14:04
Размышления на тему “Системы контроля версий в Аксапте”. Андре DAX: База знаний и проекты 31 07.02.2005 12:29

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 04:18.