|
Запрос из 1С к акцессу. Как в запросе правильно указать условие? |
☑ |
0
arsik
гуру
13.10.14
✎
18:12
|
Есть таблица в акцессе в ней есть поле с именем файла. Мне нужно вытащить его расширение. А имена могут быть такие:
131014b28784631594.13
131014b15500651506.879.TXT
131014b28897995897.3
131014b15500651506.879.T
Мне нужно все после последней точки. Как можно в запросе такое условие указать и можно ли?
На текущий момент у меня стоит фильтр который последние записи только достает (и имена я уже внутри 1С разбираю), но нужно будет каждый раз все записи доставать и в 1С это долго получается.
Сейчас:
"SELECT FILES.NAME, FILES.ID FROM FILES WHERE FILES.NAME Like '______b%'"
|
|
1
arsik
гуру
13.10.14
✎
18:27
|
Забыл добавить, запрос к базе акцесса формирую через OLEDB.
|
|
2
Wobland
13.10.14
✎
18:29
|
а %b - это что? да пофих, и разбирай свои имена внутри 1с
|
|
3
arsik
гуру
13.10.14
✎
18:31
|
(2) Like '______b%' - это все имена которые подходят по выражению 8 знаков до буквы "b" и без разницы сколько знаков после.
Долго разбирать внутри 1С.
|
|
4
Wobland
13.10.14
✎
18:35
|
(3) то есть, так же. да пофих, и разбирай свои имена внутри 1с
|
|
5
МихаилМ
13.10.14
✎
18:42
|
обработайте выборку на клиенте. экономия трафика мегабайтов и мегабитов бессмыссленна.
можно намисать ф-цию на vba.
либо по аналогии
v8: Как можно определить длину строк в запросе
либо
v8: Поиск в строке
|
|
6
arsik
гуру
13.10.14
✎
18:48
|
(5) Да. придется наверно на клиенте обрабатывать
|
|
7
фобка
13.10.14
✎
19:28
|
(3) для аксесса "????????b*"
|
|
8
spectre1978
13.10.14
✎
20:48
|
(5) можно намисать ф-цию на vba.
из ADO так просто не получится. Дело в том, что у Jet'а начиная с версии 4 есть такое понятие как небезопасные выражения. Довольно многие встроенные функции VBA и, кажется, написанные на VBA и хранимые в модулях БД тоже являются таковыми. Удаленно через SQL-запросы и ADO-провайдера их вызывать нельзя, Jet сообщает что не существует такой функции. Хотя локально в Access все работает.
|
|
9
spectre1978
13.10.14
✎
21:00
|
(0) В самом аксесе (2003) танцует вот так:
select mid (filename, instrrev (filename, '.')+1, len (filename)) from tab
правда, тут а) не учитывается случай отсутствия расширения вообще; б) я не знаю, является ли функция instrrev безопасной и будет ли она работать через ADO.
|
|