29.10.2008, 12:09 | #1 |
Участник
|
Как в Аксапте написать «*»
Вопрос я так понимаю тривиальный, тем не менее поиск по форуму ничего не дал.
Как в Аксапте написать «*» ? То есть, есть запрос вида: Select Table where Table.field == ‘*’; Нужно чтобы выбирались ВСЕ поля, пробовал пустые скобки не хочет?! В программе, нужно что бы по условию, либо был фильтр по полю либо его не было.. |
|
29.10.2008, 12:12 | #2 |
Ищущий знания...
|
Не совсем понял проблемы...
что бы при запросе выбрались все поля достаточно написать: select Table;
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
29.10.2008, 12:13 | #3 |
Участник
|
вместо == попробуй использовать like
|
|
|
За это сообщение автора поблагодарили: Вата (1). |
29.10.2008, 12:17 | #4 |
Участник
|
Цитата:
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. для того, чтобы аксапта выбирала все ПОЛЯ, ничего делать не нужно. Ваш запрос уже выбирает все поля, поскольку вы не перечислили ни одного поля в запросе. |
|
|
За это сообщение автора поблагодарили: Gustav (3). |
29.10.2008, 12:25 | #5 |
Участник
|
Задача:
На форме есть поле.. Если в поле что то стоит (есть значение), то нужно это использовать как фильтр, если же там ничего не стоит (пусто) то нужно игнорировать это условие (выбрать всё поля). С query не охота заморачиваться.. X++: str myRange = ''; while select mytable where (myTable.myField == myRange || myRange == '') {} Последний раз редактировалось Вата; 29.10.2008 в 12:28. |
|
29.10.2008, 12:27 | #6 |
Участник
|
Возможно вас устроит вот такая конструкция
X++: Select Table where ((value == '') || (Table.field == value)); |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
29.10.2008, 12:29 | #7 |
Участник
|
А придется. Именно query предназначен для работы с пользовательскими условиями.
Вы конечно можете написать вот так X++: while select, str myRange = ''; while select mytable where (myTable.myField == myRange || myRange == '') {} http://axapta.mazzy.ru/lib/search/ разберитесь с query. |
|
29.10.2008, 12:31 | #8 |
Участник
|
можно конечно. 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 == '') {} |
|
29.10.2008, 12:34 | #9 |
Участник
|
Всем спасибо я уже написал вот так:
X++: sAccount = "Значение"); if (sAccount == '') sAccount = '*'; select from Table where Table.Account like sAccount |
|
29.10.2008, 12:35 | #10 |
NavAx
|
Ну и для правильного понимания...
Выбрать все поля != выбрать все записи. Автор топика опять плохо формулирует свои желания. |
|
29.10.2008, 12:37 | #11 |
Участник
|
Нужно писать более граммотно :
X++: select * from Table where !sAccount || Table.Account == sAccount; |
|
|
За это сообщение автора поблагодарили: mazzy (2), anykey (1), Вата (1). |
29.10.2008, 12:38 | #12 |
Участник
|
Like с огромной вероятностью не индексируется.
Т.е. вы перешли от индексированного поиска к Table scan. Другими словами, легким движением руки вы ввели дикие тормоза в свою систему. И это потому, что кому-то очень лень разобраться с Query. |
|
|
За это сообщение автора поблагодарили: Вата (1). |
29.10.2008, 12:44 | #13 |
Участник
|
|
|
Теги |
как правильно, запрос (query), axapta |
|
|