Имя: Пароль:
1C
1С v8
Запрос из 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.
2 + 2 = 3.9999999999999999999999999999999...