Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: StrReverse в DAO запросе к базе Access не пашет! Добавлено: 12.01.06 19:41  

Автор вопроса:  Pantalone
Что за нафиг такой?
strSQL = "SELECT StrReverse(Customer) as CustomerRev " _
& "From CustomerBook"

 
Выдает рунтайм еррор 3085: Неопределенная функция 'StrReverse' в выражении.
Без нее запрос работает.
Кстати почему текст ошибки на русском, VB6 английский.

Ответить

  Ответы Всего ответов: 12  

Номер ответа: 1
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #1 Добавлено: 12.01.06 19:56
Пример:
http://pantalone.nm.ru/StrRevError.rar
Причем в базе запрос работает.

Ответить

Номер ответа: 2
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #2 Добавлено: 12.01.06 22:09
Видно не судьба:
http://64.233.183.104/search?q=cache:Hclq2MQ6orsJ:brenreyn.blogspot.com/+vb6+StrReverse+recordset&hl=ru
Ни StrReverse ни InstRev не пашут в запросах если эти запросы запущены не в самом Access. Или я что-то не понял?

Ответить

Номер ответа: 3
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #3 Добавлено: 13.01.06 11:32
up, горю!

Ответить

Номер ответа: 4
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #4 Добавлено: 13.01.06 12:04
Тогда задача такая:
Как заполучить имя последней папки"C:\Folder\Folder2\" не пользуясь функциями StrReverse и InStrRev? Т.е. доступны только Len Mid Left Right и другие. Сделать нужно одной строкой чтобы это был выяисляемый столбец запроса.

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #5
Добавлено: 13.01.06 12:29
Это, как я понимаю, ты так пытаешься 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


А что ты хотел получить в результате выполнения запроса - непонятно. Объясни.

Ответить

Номер ответа: 6
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #6 Добавлено: 13.01.06 12:48
Я уже понял что эта функция не поддерживается таким образом как остальные типа Mid.
В запросе мне нужно получить столбец где будет папка Folder2 из столбца в котором содержится "C:\Folder\Folder2\". Т.е. нужно имя папки получить без полного пути. То что ты предложил я делал одной строкой посредством StrReverse или InStrRev, но они не работают в запросе как оказалось.

Ответить

Номер ответа: 7
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #7
Добавлено: 13.01.06 15:41
Ты не обижайся, но ты пишешь по-дурацки, нифига не понятно. Из чего состоит этот твой столбец, как он называется и при чём тут вообще DAO, когда тема-то не в этом? Написал бы лучше фрагмент данных в столбце и какой результат должен выдавать запрос: одну запись, нескоько одноимённых или что вообще?? SQL-запрос составлен неграмотный и вообще.. Сам не знаешь что тебе надо. Такое ощущение. Поэтому тебе никто кроме меня и не отвечал. И правильно делали.

Ответить

Номер ответа: 8
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #8 Добавлено: 13.01.06 16:01
Это почему же SQL-запро не грамотный, поясни пожалуйста. Все я знаю, давай распишу. Другие почему-то молчат что не понятно.
Есть таблица в Access, ее имя CustomerBook, в ней есть столбец Customer, который содержит данные типа "C:\Folder\Folder2\", т.е. по сути путь к папке на диске. Разумеется эта строка может иметь другие составляющие и другую степень вложенности, например "C:\Customer\SubCustomer\Bla-bla-bla\".
Так вот, мне нужно из программы, написанной на VB6, которая обращяется через DAO к базе Access, которая содержит эту таблицу, нужно получить рекордсет этой таблицы. Причем записи нужно отбирать с условием по столбцу Customer, но не по полному полю, а по части, представляющей конечную папку пути, т.е. если данные в поле "C:\Folder\Folder2\", то мне нужно отобрать данные ориентируясть только на "Folder2", а не на все поле. Как это сделать?

Ответить

Номер ответа: 9
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #9 Добавлено: 13.01.06 16:04
Кстати, читать надо внимательнее, я специально выложил ссылку на простейший пример где все это видно прекрасно:
http://pantalone.nm.ru/StrRevError.rar
ссылка работает, проверял только что.

Ответить

Номер ответа: 10
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #10 Добавлено: 13.01.06 16:15
Читай подробнее про like и символы-заменители (шаблоны).

Ответить

Номер ответа: 11
Автор ответа:
 Pantalone



Вопросов: 32
Ответов: 104
 Профиль | | #11 Добавлено: 13.01.06 17:45
Я уже структуру приложения изменил, поздняк. Да и Like вряд ли поможет.

Ответить

Номер ответа: 12
Автор ответа:
 AndreyMp



ICQ: 237822510 

Вопросов: 28
Ответов: 1182
 Профиль | | #12 Добавлено: 15.01.06 02:16
Ну приходи ко мне, разжуем подробно.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам