Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2012, 15:58   #1
Taurus_UA
Пользователь
 
Регистрация: 25.08.2012
Сообщений: 19
Вопрос Выборка по шаблону

Помогите пожалуйста новичку в этом вопросе
Дано:
tblUsers.Russian (список Русских имен)
Андрей
Василий
Дмитрий
Сергей


tblUsers.English (список Английских имен, перевод значений из tblUsers.Russian)
Andrey
Vasiliy
Dmitriy
Sergey

tblBase.RusSum - содержит выборку пользователем из tblUsers.Russian в виде
Андрей,Дмитрий
Василий,Дмитрий,Сергей


Как построить выборку по образцу?
т.е. tblBase.EngSum должна содержать соответствующие значения из tblUsers.English в виде
Andrey,Dmitriy
Vasiliy,Dmitriy,Sergey
"Можно ли простить врага? Бог простит! Наша задача организовать их встречу..." Аль Капоне
Taurus_UA вне форума Ответить с цитированием
Старый 25.08.2012, 16:22   #2
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Нужно написать (или найти) достаточно несложную функцию, использующую правила побуквенной транскрипции - так наз транслитерации.
Например, с использованием конструкции SELECT CASE, в цикле по каждой букве слова.
Так как некоторые буквы могут иметь несколько иностранных соответствий, можно ограничиться переводом части слова, например, с его начала (половины всех букв, две третьих...)
Андрэич вне форума Ответить с цитированием
Старый 25.08.2012, 17:03   #3
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Примерный алгоритм (=пошагово) такой.
1. Цикл по каждой букве.
For i=1 To Len(Имя)/2
Select Case Mid(Имя,i,1)
Case "m": s = s & "м"
Case "r": s = s & "р"
...
End Select
Next i
2. Проверяем получившуюся строку-"маску" на вхождение, например, функцией InStr.
Находим первое же соответствие.

(Писал "на коленке" - пусть меня поправят...)
Андрэич вне форума Ответить с цитированием
Старый 25.08.2012, 17:11   #4
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Важное замечание:
тип сравнения символов - двоичный (с учетом прописных-строчных букв)
Андрэич вне форума Ответить с цитированием
Старый 26.08.2012, 11:18   #5
Taurus_UA
Пользователь
 
Регистрация: 25.08.2012
Сообщений: 19
По умолчанию

Спасибо за ответ!
Вы сейчас говорите о транслитерации, это также очень интересно, но на данном этапе уже существует переведенное поле tblUsers.English.
И это поле необходимо сложить по образцу как не переведенное поле tblBase.RusSum -это поле составляет оператор в ручном режиме.
Рядом стоящее поле tblBase.EngSum должно повести себя точно также (по маске, по образцу, по шаблону - не знаю как обозвать).
Мне не хватает образования самостоятельно составить подобный запрос. Не смотря на то что лет 10 назад был отличником в этом направлении.
Надеюсь на помощ сообщества.
"Можно ли простить врага? Бог простит! Наша задача организовать их встречу..." Аль Капоне
Taurus_UA вне форума Ответить с цитированием
Старый 26.08.2012, 12:13   #6
Андрэич
Форумчанин
 
Аватар для Андрэич
 
Регистрация: 20.05.2012
Сообщений: 311
По умолчанию

Taurus_UA, можете выложить пример (в формате .mdb)?

(Не могу сейчас пообещать очень быстрый ответ, обязательно посмотрю, но, кажется, что вашу задачу можно решить ещё проще; поиск: Конкатенация)

ЗЫ. Моя "Маска" - в кавычках - адресовалась не вам Не подобрал сразу подходящего слова и воспользовался известным термином в переносном значении
Андрэич вне форума Ответить с цитированием
Старый 26.08.2012, 12:26   #7
Taurus_UA
Пользователь
 
Регистрация: 25.08.2012
Сообщений: 19
По умолчанию

Вечером. Сейчас нет доступа
"Можно ли простить врага? Бог простит! Наша задача организовать их встречу..." Аль Капоне
Taurus_UA вне форума Ответить с цитированием
Старый 27.08.2012, 01:03   #8
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

Как-то не понятно: что именно не получается?
Вот этот запрос выводит имена латинскими буквами:

SELECT tblBase.RusSum, tblUsers.English FROM tblBase, tblUsers WHERE (((tblBase.RusSum) Like "*" & [tblUsers].[Russian] & "*")) ORDER BY tblBase.RusSum;

Далее - нужно эти имена в своей функции обработать, чтобы соединить записи таблицы в строку. Или проблема в этом? Тогда сообщите, в какой технологии (ADO, DAO и т.д.) нужно открівать запрос для обработки.
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Старый 27.08.2012, 02:01   #9
Taurus_UA
Пользователь
 
Регистрация: 25.08.2012
Сообщений: 19
По умолчанию

Рядом стоящее поле tblBase.EngSum должно повести себя точно также как поле tblBase.RusSum - автоматически
Вложения
Тип файла: zip programmersforum_ru.zip (26.8 Кб, 9 просмотров)
"Можно ли простить врага? Бог простит! Наша задача организовать их встречу..." Аль Капоне
Taurus_UA вне форума Ответить с цитированием
Старый 27.08.2012, 02:04   #10
Myhaylo
Форумчанин
 
Регистрация: 19.07.2012
Сообщений: 520
По умолчанию

Я работаю только с mdb-базами в формате MS Access 97 - 2003... Ваш формат не распознаётся.
Окупант, руки прочь от Украины!!! Слава Героям!
Myhaylo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по шаблону Seratanin JavaScript, Ajax 0 02.06.2012 15:50
Вопрос по шаблону Richmon-d JavaScript, Ajax 0 11.07.2011 14:27
Выборка выборка с таблицы с отношением многие-ко-многим 8alig8 БД в Delphi 2 24.06.2010 12:21
Печать по шаблону Klayman Фриланс 6 22.08.2008 10:10
Итератор к шаблону Crucian Общие вопросы C/C++ 5 29.10.2007 16:52