Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > латинский или кирилица?


Автор: Ivushka 25.1.2006, 10:42
народ не могу вспомнить как проверяется язык поля???

есть латинский то один запрос а если кирилица то другой???

Автор: Akina 25.1.2006, 10:59
Нет такого понятия - язык поля. Это тебе не лексема в Ворде.

Автор: Ivushka 25.1.2006, 11:06
Цитата(Akina @ 25.1.2006, 10:59 Найти цитируемый пост)
Нет такого понятия - язык поля. Это тебе не лексема в Ворде


Я имею ввиду латинские буковки или кирилица.
В таблице занесены ФИО сотрудников, есть русские есть иностранцы,
надо сделать вывод определенных людей только запросы для русских и для нерусских разные(

Автор: ТоляМБА 25.1.2006, 11:16
Цитата(Ivushka @ 25.1.2006, 11:06 Найти цитируемый пост)
В таблице занесены ФИО сотрудников, есть русские есть иностранцы,
Добавь отдельное поле (тип данных логический), назови 'Russian' и помечай в нем true/false

Автор: Akina 25.1.2006, 11:20
Код

public const CyrillicSymbols As String = "АБВ...ЭЮЯабв...эюя"
Public Function CyrillicPresent(byval sText as string) as boolean
do while sText <> ""
   if instr(CyrillicSymbols, left(sText, 1)) > 0 then
      CyrillicPresent = true
      exit function
   end if
   sText=right(sText, len(sText)-1)
loop
CyrillicPresent = false
end function

запихиваешь в модуль и используешь в запросе в Iif.

Автор: Ivushka 25.1.2006, 11:20
Цитата(ТоляМБА @ 25.1.2006, 11:16 Найти цитируемый пост)
Добавь отдельное поле (тип данных логический), назови 'Russian' и помечай в нем true/false

таблица уже существует!
в ней 9987 записей
ты мне предлогаеш эти галочки руками простовлять?
Добавлено @ 11:24
ребята! в SQL вроде была проверка на вхождение в множества А-Я и A-Z???
неужели только прогу писать придеться??? smile

Автор: ТоляМБА 25.1.2006, 11:30
Всё-всё, не парься, я нашел и проверил на акцессе - 100% работает

Код

Select *
from table1
where FIO between 'a' and 'z'


Работает и с большими и с маленькими - выводит только иностранцев, для русских перед between поставь not

Автор: Akina 25.1.2006, 11:31
Цитата(Ivushka @ 25.1.2006, 12:20 Найти цитируемый пост)

в SQL вроде была проверка на вхождение в множества А-Я и A-Z???

См справку, "Скалярные функции ODBC". Такая функция в MSJet SQL не поддержана.

Автор: ТоляМБА 25.1.2006, 11:32
Цитата(Ivushka @ 25.1.2006, 11:20 Найти цитируемый пост)
таблица уже существует!
в ней 9987 записей

Цитата

Этого не было в описании задания

Шрэк smile

Автор: Ivushka 25.1.2006, 11:36
ТоляМБА
пасибки))
буду пробовать)))

Автор: Akina 25.1.2006, 11:42
Цитата(ТоляМБА @ 25.1.2006, 12:30 Найти цитируемый пост)

я нашел и проверил на акцессе - 100% работает

На реальной базе возможно все - и пробел в начале, и сходная по написанию буква из другого алфавита - операторы, они такие...

Ivushka
по-хорошему надо поправить модуль, считать кол-во лат. и русских букв и по их соотношению принимать решение.

Автор: ТоляМБА 25.1.2006, 11:47
Цитата(ТоляМБА @ 25.1.2006, 11:30 Найти цитируемый пост)
для русских перед between поставь not
Нет, так не делай, я где-то читал что через NOT выборка идет медленнее. Если у тебя большая табла поставь для русских лучше
Код
where FIO between 'а' and 'я'
'а' - естественно русская. Я только что проверял тоже на акцессе работает и для больших и для маленьких букв. Только вот я не знаю все ли версии акцесса это поддерживают, ну для справки у меня офис 2003, виндуза 2000 про.
Дерзай!
Добавлено @ 11:48
Цитата(Akina @ 25.1.2006, 11:42 Найти цитируемый пост)
На реальной базе возможно все - и пробел в начале, и сходная по написанию буква из другого алфавита - операторы, они такие...
Мать их ... Что поделаешь - человеческий фактор smile

Автор: Ivushka 25.1.2006, 11:55
и еще раз пасибки)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)