Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подбор значения, путем перебора / 13 сообщений из 13, страница 1 из 1
23.08.2004, 12:11:05
    #32660909
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
Таблица содержит сведения о фирмах. Есть поле Имя и поле Сокр, в котором храниться 2-х буквенная аббревиатура. Сначала это были первые две буквы из поля Имя, но алфавит не резиновый и теперь м.б. практически любые 2 буквы из поля Имя. Как, если можно, сделать, чтобы процедура перебирала буквы из названия новой фирмы(1+2, 1+3,...2+3, 2+4....) и выдавала список 2-х буквенных аббревиатур, которые еще не заняты?
...
Рейтинг: 0 / 0
23.08.2004, 13:41:01
    #32661103
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
А нафига тебе функция?
Шаг 1 - создаеш таблицу, содержащую все возможные варианты их всего 33*33 т.е. тысяча.

Шаг 2 - Потом проставляешь туда те, что заняты (я так понимаю, что они где-то хранятся. (например - флажок).

Получить из данной таблички свободные - элементарно. И работать это будет раз в 10 быстрей, чем функция перебора, особенно, если сделать поле индексным и уникальным.

Но в общем и целом - бросай это дело. Что будешь делать, когда число фирм за 1000 перевалит???
...
Рейтинг: 0 / 0
23.08.2004, 13:57:50
    #32661149
Bor-L
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
добавит цифры ;-))
...
Рейтинг: 0 / 0
23.08.2004, 14:00:49
    #32661157
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
Цифры, англ. буквы и спецсимволы итого 255*255 на первое время хватит.

Но мой совет - бить ИНН - информация осмысленна, несет доп нагрузку (содержит номер региона) и легко набиваема (не надо ставить кавычки, жать шифт и переключать регистры)
...
Рейтинг: 0 / 0
23.08.2004, 14:14:30
    #32661201
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
Структура таблицы такая, что поле Сокр должно быть 2-знаковое текстовое.
Вобщем пробую:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
strIn = "WESTERN"
Set rstFirm = CurrentDb.OpenRecordset("Firms")
For i =  1  To Len(strIn)
   strF1 = Mid(strIn, i,  1 )
   For j = i +  1  To Len(strIn)
      strF2 = Mid(strIn, j,  1 )
      rstFirm.Filter = "[Сокр]='" & strF1 & strF2 & "'"
      Set rstFirmFilter = rstFirm.OpenRecordset
     If rstFirmFilter.RecordCount =  0  Then
        Debug.Print strF1 & strF2
     End If
Next i
Работает, но с данным примером сочетание "WE"(оно не занято) указано 2 раза - букв Е в слове две. А как бы еще и повторы убрать?
...
Рейтинг: 0 / 0
23.08.2004, 14:16:51
    #32661209
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
Работает, но с данным примером сочетание "WE"(оно не занято) указано 2 раза - букв Е в слове две. А как бы еще и повторы убрать?

А чем плох вариант с таблицей?
...
Рейтинг: 0 / 0
23.08.2004, 14:32:38
    #32661254
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
tim2Работает, но с данным примером сочетание "WE"(оно не занято) указано 2 раза - букв Е в слове две. А как бы еще и повторы убрать?


Можно так, например...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim szIn As String
szIn = "Western digital"
szIn = UCase(szIn)

Dim szUsedChar As String, i As Long, j As Long, sz_char As String, szCharList As String
szCharList = "ABCDEFGHJK"   ' итд. - все допустимые символы 
szUsedChar = ""

For i =  1  To Len(szIn)
  sz_char = Mid(szIn, i,  1 )
  If InStr(szUsedChar, sz_char) =  0  Then
    szUsedChar = szUsedChar & sz_char
  End If
Next

...
Рейтинг: 0 / 0
23.08.2004, 14:39:50
    #32661277
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
А с таблицей плохо потому, что используется оба алфавита и уже и цифры в ход пошли, так что это уже не 1000 записей сочетаний....
...
Рейтинг: 0 / 0
23.08.2004, 14:45:08
    #32661290
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
tim2А с таблицей плохо потому, что используется оба алфавита и уже и цифры в ход пошли, так что это уже не 1000 записей сочетаний....

Вот делов - то создай хоть 255 на 255.

for k =1 to 255
for k1=1 to 255
rst.Addnew
rst![ID]=CHR(k)+chr(k1)
rst.update
next k1
next k

И все. при желании - выкинь из перебора спецсимволы.
...
Рейтинг: 0 / 0
23.08.2004, 14:52:18
    #32661310
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
2 Bely:
А зачем переменная szCharList, она нигде потом не участвует?
...
Рейтинг: 0 / 0
23.08.2004, 15:59:50
    #32661525
tim2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
2 vam911:
попробывал создать таблицу и сразу столкнулся:
-первый знак не должен быть цифрой
-служебные знаки и знаки препинания нельзя
-строчные буквы нельзя
т.е. нужны диапазоны кодов 65-90(заглавные латинские), 192-223(заглавные русские - условно: всякие Й и Ъ тоже не нужны) и 48-57(цифры)
...
Рейтинг: 0 / 0
23.08.2004, 16:06:32
    #32661558
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
tim22 Bely:
А зачем переменная szCharList, она нигде потом не участвует?
Да, действительно нигде не участвует.
В ней можно указать допустимые символы и сделать доп. проверку на присутствие в списке.
Например так:
Код: plaintext
1.
2.
3.
if InStr(szCharList , sz_char ) >  0  then
   ' -- Производить действия только если символ в списке допустимых -- 
end if
...
Рейтинг: 0 / 0
23.08.2004, 16:10:15
    #32661571
vam911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подбор значения, путем перебора
tim22 vam911:
попробывал создать таблицу и сразу столкнулся:
-первый знак не должен быть цифрой
-служебные знаки и знаки препинания нельзя
-строчные буквы нельзя
т.е. нужны диапазоны кодов 65-90(заглавные латинские), 192-223(заглавные русские - условно: всякие Й и Ъ тоже не нужны) и 48-57(цифры)

А кто говорил, что в пути будет легко.

Но. зато результат...

Все не нужное можно отсечь простейшими условиями. Таблица аски есть в хэлпе. Вибери от туда те диапазоны символов, что подходят.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подбор значения, путем перебора / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]