Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Почему не работает Replace?  [new]
Иван Абрамов
Member

Откуда:
Сообщений: 319
... в вычисляемых полях хранимого представления. Приходится вместо нее выкручиваться с помощью InStr, Mid...

Это от чего вообще зависит? Версия ADO или VBA или версия Access SQL?

Структура проекта такова:
СУБД: MSAccess2000
Интерфейс: VB6
Cвязка ADO
Строка коннекта:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program Files\AdAuto\DemoDatabase.mdb;Persist Security Info=False

Может кто знает?

Заранее спасибо.
Иван Абрамов.
7 июн 05, 12:23    [1602357]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает Replace?  [new]
Proga
Member

Откуда: МО
Сообщений: 3042
Вроде всё есть, значит руки кривые

К сообщению приложен файл. Размер - 0Kb
7 июн 05, 12:41    [1602456]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает Replace?  [new]
Иван Абрамов
Member

Откуда:
Сообщений: 319
Когда идет вызов из другого интерфейса, работают другие механизмы.
Например, функции, созданные в обычном модуле в MS Access, не работают в хранимом представлении, если к нему обращаться из VB6 через ADO.
А, если это представление открыть в Acess, то все работает.
Здесь, вероятно, то же самое. Может, кто прояснит картину.
7 июн 05, 12:49    [1602503]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает Replace?  [new]
nibbles
Member

Откуда: Moscow
Сообщений: 2378
Proga
Вроде всё есть, значит руки кривые

Не надо быть таким категоричным - кривые руки тут непричем (см. ниже на принт-скрин).
2Иван Абрамов:
может помочь написание собственной функции, которой можно "обернуть" стандартную Replace
7 июн 05, 12:52    [1602513]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает Replace?  [new]
ЛП
Guest
Иван Абрамов
Когда идет вызов из другого интерфейса, работают другие механизмы.
Например, функции, созданные в обычном модуле в MS Access, не работают в хранимом представлении, если к нему обращаться из VB6 через ADO.
А, если это представление открыть в Acess, то все работает.
Здесь, вероятно, то же самое. Может, кто прояснит картину.

А чего тут прояснять? Вы ж сами все написали.
При использовании Jet не из аксеса - большинство функции не работает. Проще перечислить те, что могут использоваться Jet-ом самим по себе. Это есть очень ограниченный набор ф-ций из библиотеки VBA, и ф-ция Replace в их число не входит.
7 июн 05, 12:56    [1602534]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает Replace?  [new]
Иван Абрамов
Member

Откуда:
Сообщений: 319
А где найти полный список этого ограниченного набора. И что вообще это такое (какой конкретно компонент несет в себе эту функциональность, ADO)?
Может апгрейд СУБД к версии Access2003 поможет, чтобы Replace начала работать?
7 июн 05, 13:19    [1602646]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает Replace?  [new]
АлексейК
Member

Откуда: http://www.msdatabase.ru , Moscow
Сообщений: 7683
help

Скалярные функции ODBC
Язык SQL ядра Microsoft® Jet поддерживает синтаксис скалярных функций, определенный стандартом ODBC. Рассмотрим пример запроса:

SELECT DAILYCLOSE, DAILYCHANGE FROM DAILYQUOTE
WHERE {fn ABS(DAILYCHANGE)} > 5

В данном случае возвращаются все строки, для которых изменение цены акций по абсолютной величине больше пяти.

Поддерживается подмножество скалярных функций, определенных через ODBC. Следующая таблица содержит список поддерживаемых функций.

Описание аргументов функций и подробное объяснение синтаксиса вызова, используемого при включении функций в инструкцию SQL, можно найти в документации ODBC.

Функции преобразования строк
ASCII LENGTH RTRIM
CHAR LOCATE SPACE
CONCAT LTRIM SUBSTRING
LCASE RIGHT UCASE
LEFT


Функции преобразования чисел
ABS FLOOR SIN
ATAN LOG SQRT
CEILING POWER TAN
COS RAND MOD
EXP SIGN


Функции даты и времени
CURDATE DAYOFYEAR MONTH
CURTIME YEAR WEEK
NOW HOUR QUARTER
DAYOFMONTH MINUTE MONTHNAME
DAYOFWEEK SECOND DAYNAME


Преобразование типа данных
CONVERT Строки могут быть преобразованы в следующие типы данных: SQL_FLOAT, SQL_DOUBLE, SQL_NUMERIC, SQL_INTEGER, SQL_REAL, SQL_SMALLINT, SQL_VARCHAR и SQL_DATETIME.


7 июн 05, 13:20    [1602649]     Ответить | Цитировать Сообщить модератору
 Re: Почему не работает Replace?  [new]
Иван Абрамов
Member

Откуда:
Сообщений: 319
Это какой то неполный список. Где же Left, Mid, InStr...?
Но и том, конечно, спасибо.
7 июн 05, 13:41    [1602739]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить