Выдает рунтайм еррор 3085: Неопределенная функция 'StrReverse' в выражении.
Без нее запрос работает.
Кстати почему текст ошибки на русском, VB6 английский.
Видно не судьба:
http://64.233.183.104/search?q=cache:Hclq2MQ6orsJ:brenreyn.blogspot.com/+vb6+StrReverse+recordset&hl=ru
Ни StrReverse ни InstRev не пашут в запросах если эти запросы запущены не в самом Access. Или я что-то не понял?
Тогда задача такая:
Как заполучить имя последней папки"C:\Folder\Folder2\" не пользуясь функциями StrReverse и InStrRev? Т.е. доступны только Len Mid Left Right и другие. Сделать нужно одной строкой чтобы это был выяисляемый столбец запроса.
Это, как я понимаю, ты так пытаешься VB'шную функцию применить внутри текста запроса, прямо в кавычках? Странно, я тебе скажу.
Так можно получить имя папки из строки (вызвав функцию с параметром s:
Function myFolder(s As String) As String
On Error GoTo L1
Dim s As String
s = "C:\Folder\Folder2\"
s = Mid(s, 1, Len(s) - 1) 'Убрали BACKSLASH в конце
s = Mid(s, InStrRev(s, "\" + 1) 'Получили имя последней папки
myFolder = s
Exit Function
L1:
myFolder = ""
Exit Function
End Function
А что ты хотел получить в результате выполнения запроса - непонятно. Объясни.
Я уже понял что эта функция не поддерживается таким образом как остальные типа Mid.
В запросе мне нужно получить столбец где будет папка Folder2 из столбца в котором содержится "C:\Folder\Folder2\". Т.е. нужно имя папки получить без полного пути. То что ты предложил я делал одной строкой посредством StrReverse или InStrRev, но они не работают в запросе как оказалось.
Ты не обижайся, но ты пишешь по-дурацки, нифига не понятно. Из чего состоит этот твой столбец, как он называется и при чём тут вообще DAO, когда тема-то не в этом? Написал бы лучше фрагмент данных в столбце и какой результат должен выдавать запрос: одну запись, нескоько одноимённых или что вообще?? SQL-запрос составлен неграмотный и вообще.. Сам не знаешь что тебе надо. Такое ощущение. Поэтому тебе никто кроме меня и не отвечал. И правильно делали.
Это почему же SQL-запро не грамотный, поясни пожалуйста. Все я знаю, давай распишу. Другие почему-то молчат что не понятно.
Есть таблица в Access, ее имя CustomerBook, в ней есть столбец Customer, который содержит данные типа "C:\Folder\Folder2\", т.е. по сути путь к папке на диске. Разумеется эта строка может иметь другие составляющие и другую степень вложенности, например "C:\Customer\SubCustomer\Bla-bla-bla\".
Так вот, мне нужно из программы, написанной на VB6, которая обращяется через DAO к базе Access, которая содержит эту таблицу, нужно получить рекордсет этой таблицы. Причем записи нужно отбирать с условием по столбцу Customer, но не по полному полю, а по части, представляющей конечную папку пути, т.е. если данные в поле "C:\Folder\Folder2\", то мне нужно отобрать данные ориентируясть только на "Folder2", а не на все поле. Как это сделать?
Кстати, читать надо внимательнее, я специально выложил ссылку на простейший пример где все это видно прекрасно:
http://pantalone.nm.ru/StrRevError.rar
ссылка работает, проверял только что.