Убрать пробелы в поле запроса (ADO vs. ODBC)
От: 3ton  
Дата: 07.12.04 22:28
Оценка:
  Dim conn As New ADODB.Connection
  Dim rss As New ADODB.Recordset
  conn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=""DBQ=C:\temp\db1.mdb;DefaultDir=C:\temp;Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"""
  conn.Open
  Set rss = conn.Execute("select replace(code;' ';'') as fil1 from sc84")


Выдает ошибку синтаксиса replace

пробовал через JET.4.0 и через DAO (результат такой же)
замена ";" на "," привела к "незвестная функция replace"

Может кто подскажет, как динамически убрать все пробелы в полях запроса

База MDB, изменения базы запрещены, поля 50-100 символов, количество пробелов — RND
Re: Убрать пробелы в поле запроса (ADO vs. ODBC)
От: wildwind Россия  
Дата: 08.12.04 09:09
Оценка:
Здравствуйте, 3ton, Вы писали:

3>Может кто подскажет, как динамически убрать все пробелы в полях запроса


На клиенте. Некоторые функции недоступны через ADO.
См. http://www.rsdn.ru/Forum/?mid=816485
Автор: akasoft
Дата: 20.09.04
Re[2]: Убрать пробелы в поле запроса (ADO vs. ODBC)
От: Elena_ Россия  
Дата: 08.12.04 10:12
Оценка:
Здравствуйте, wildwind, Вы писали:


W>На клиенте. Некоторые функции недоступны через ADO.

W>См. http://www.rsdn.ru/Forum/?mid=816485
Автор: akasoft
Дата: 20.09.04


Но дело вообще-то не в том, что это функция VBA — в ODBC есть такая Scalar function

см. ODBC Programmer's Reference String Functions

REPLACE(string_exp1, string_exp2, string_exp3)
(ODBC 1.0) Search string_exp1 for occurrences of string_exp2, and replace with string_exp3.


Я думала, что {fn Replace(...,...,...)} будет работать, но нет

Похоже, что она не реализована в ODBC драйвере mdb или есть другие предположения?
Пользователь — друг программиста!
Re[3]: Убрать пробелы в поле запроса (ADO vs. ODBC)
От: wildwind Россия  
Дата: 08.12.04 10:48
Оценка: 15 (1)
Здравствуйте, Elena_, Вы писали:

E_>Я думала, что {fn Replace(...,...,...)} будет работать, но нет

E_>Похоже, что она не реализована в ODBC драйвере mdb или есть другие предположения?

А что говорит SQLGetInfo?
Re[4]: Убрать пробелы в поле запроса (ADO vs. ODBC)
От: Elena_ Россия  
Дата: 08.12.04 15:01
Оценка:
Здравствуйте, wildwind, Вы писали:

W>А что говорит SQLGetInfo?


Да, точно SQL_FN_STR_REPLACE не поддерживает, собственно в MSDN даже есть список

SQLGetInfo Returned Values for Access

SQL_STRING_FUNCTIONS
SQL_FN_STR_ASCII |
SQL_FN_STR_CHAR |
SQL_FN_STR_CONCAT |
SQL_FN_STR_LCASE |
SQL_FN_STR_LEFT |
SQL_FN_STR_LENGTH |
SQL_FN_STR_LOCATE |
SQL_FN_STR_LOCATE_2
SQL_FN_STR_LTRIM |
SQL_FN_STR_RIGHT |
SQL_FN_STR_RTRIM |
SQL_FN_STR_SPACE |
SQL_FN_STR_SUBSTRING |
SQL_FN_STR_UCASE

Пользователь — друг программиста!
Re[5]: Убрать пробелы в поле запроса (ADO vs. ODBC)
От: wildwind Россия  
Дата: 08.12.04 16:27
Оценка:
Здравствуйте, Elena_, Вы писали:

E_>Да, точно SQL_FN_STR_REPLACE не поддерживает, собственно в MSDN даже есть список


Ну вот, а причина была названа выше.
Re[2]: Убрать пробелы в поле запроса (ADO vs. ODBC)
От: 3ton  
Дата: 08.12.04 18:36
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, 3ton, Вы писали:


3>>Может кто подскажет, как динамически убрать все пробелы в полях запроса


W>На клиенте. Некоторые функции недоступны через ADO.

W>См. http://www.rsdn.ru/Forum/?mid=816485
Автор: akasoft
Дата: 20.09.04



Собственно это все понятно, но непонятен тот факт, что в большинстве документаций написано (jet, ado, odbc), что драйвера поддерживают (как минимум) стандарт SQL-92, а на самом деле оказывается, что компания MS, по каким-то им только известным причинам (сваливают на защиту и безопастность), отрубили ~60% скалярных функций sql. И собственно непонятно, чем им помешала функция replace? Хотя далеко ходить не надо, но тот-же драйвер MS Visual Foxpro, почему-то поддерживает аналогичную функцию strtran

В общем это все лирика

Вопрос звучал так:

как динамически убрать все пробелы в полях запроса?
Re[3]: Убрать пробелы в поле запроса (ADO vs. ODBC)
От: wildwind Россия  
Дата: 08.12.04 22:25
Оценка:
Здравствуйте, 3ton, Вы писали:

3>Вопрос звучал так:

3> как динамически убрать все пробелы в полях запроса?

Ответ звучал так: на клиенте.

Либо перманентно в таблицах, если они там лишние.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.