Access 2000: Как заставить различать заглавные и строчные?

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
TEH3OP
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 143
Зарегистрирован: 12.12.2003 (Пт) 20:19
Откуда: Москва

Access 2000: Как заставить различать заглавные и строчные?

Сообщение TEH3OP » 27.07.2004 (Вт) 8:47

Сабж при сравнении строк.

Например строки: 'DDD', 'dDd', 'DdD', Access считает одинаковыми. Как включить чувствительность к регистру (желательно запросом)?

Заранее благодарен!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 27.07.2004 (Вт) 9:01

Эээ. Не знаю, как в Аксессе, но в MSSQL это делается через т.н. Collation - настройка уровня базы.

Tuco
Постоялец
Постоялец
 
Сообщения: 508
Зарегистрирован: 18.06.2003 (Ср) 16:37
Откуда: Подмосковье

Сообщение Tuco » 27.07.2004 (Вт) 9:11

А если сравнивать таким образом:
Код: Выделить всё
Dim str1 As String
Dim str2 As String
Dim i As Integer
str1 = "DDd"
str2 = "DDD"
i = StrComp(str1, str2, vbBinaryCompare)
Select Case i
    Case -1
        MsgBox "str1<str2"
    Case 0
        MsgBox "str1=str2"
    Case 1
        MsgBox "str1>str2"
    Case Null
        MsgBox "одна из строк равна Null"
End Select

?
"There's more than one way to do it!"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 27.07.2004 (Вт) 9:16

Сравнивание в модуле (коде) или в запросах? Если первое, то Option Compare. Если второе, то через настройки БД, только не знаю как для Access.
Lasciate ogni speranza, voi ch'entrate.

TEH3OP
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 143
Зарегистрирован: 12.12.2003 (Пт) 20:19
Откуда: Москва

Пояснения...

Сообщение TEH3OP » 27.07.2004 (Вт) 9:36

Надо связывать две таблицы по ASCII текстовому полю. Вот и надо чтобы Access корректно сравнивал строки, т.к. иначе в JOIN'е возвращаются дублированные записи -- ДА ПРОСТО ЛАБУДА КАКАЯ-ТО, вместо данных.

2 Ennor: а можешь запросик показать, вдруг его ADO поймёт.


PS: нельзя поменять тип/значение данных в связуемых полях.
PPS: базу не я делал.
PPPS: заглушечное решение уже есть!

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 29.07.2004 (Чт) 16:37

Можно попробовать связку навроде:

SELECT * FROM t1 INNER JOIN t2 ON StrComp(t1.t,t2.t,0)=0

Индексы при этом использоваться не будут, но запрос работать будет.
Если таблицы не очень большие, то этого может оказаться достаточно.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 29.07.2004 (Чт) 16:39

А если таблицы Access-овские, то может проще добавить в них ID-шки и делать связку по ним?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 29.07.2004 (Чт) 18:10

Не знаю, как в Аксессе, но в MSSQL это настройка уровня базы. Запросом ты ее не поменяешь. Хотя... посмотри у себя описание COLLATE, если такое есть в Аксессе, конечно.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 1

    TopList  
cron