powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск с помощью Like
19 сообщений из 19, страница 1 из 1
Поиск с помощью Like
    #39817544
OkeTurel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Не могу сообразить одну вещь.

У меня есть текстовая строка. В форме, в текстовом поле для ввода этой строки, я задала маску ввода 99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99
То есть пользователь вводит 23 числа или менее.
В форме это выглядит так: 06\08\14\16\20\22\24\28\30\ \ \ \ \ \ \ \ \ \ \ \ \
Но в таблице это выглядит так: 060814162022242830

Теперь я ищу значения с 01 по 31 в этой строке. И когда я ищу 02, он мне находит 060814162 02 2242830. Но на самом деле это неправильно, потому что эти числа - номера дней месяца, и дня 02 в этой строке вообще нет, а есть дни 20 и 22 (например, 20 мая и 22 мая).

И я не пойму, мне изменить как-то маску, что ли? Поставить пробелы до и после каждого числа, чтобы он искал не 02, а _02_, тогда не будет ошибок в поиске? Но строка и так длинная, мне бы так не хотелось. А еще есть варианты?
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817546
OkeTurel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть когда я ищу 02, он мне находит 060814162022242830.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817576
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OkeTurel,

Ты сам предложил варианты разделителя.
ну поставь . (точку)
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817586
OkeTurel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI, то есть пользователь должен будет точку вводить?
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817590
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OkeTurelROI, то есть пользователь должен будет точку вводить?
Нет точка должна присутствовать в маске.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817594
OkeTurel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если точка в маске, например маска
99".\."99".\."99".\."99, то ведь в таблице все равно будет без точки: 06081416
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817597
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

А вообще перехватывай событие поля и своей функцией форматируй и сохраняй как хочешь, но маску оставь, а то мусор полезет.(это для Laika)
можно отсчитывать каждое второе значение и считывать.(без лайка просто разбор строки)
Вариантов масса.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817598
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OkeTurelВ форме это выглядит так: 06\08\14\16\20\22\24\28\30\ \ \ \ \ \ \ \ \ \ \ \ \
Но в таблице это выглядит так: 060814162022242830Задавайте маску ввода, а не формат поля. Пусть разделители хранятся в поле.

OkeTurelстрока и так длиннаяЭкономить байты ради себе геморрою... вот оно тебе надо?

Можно вообще сделать поле байтовым, и паковать по две цифры в байт. А на форме это поле сделать скрытым. но добавить непривязанное поле, по изменению которого производится соотв. конвертация и запись конвертированного значения в это скрытое поле (и соответственно в таблицу). Но тоже геморрой.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817653
Маску ввода можно настроить так, что в таблице будут сохраняться значения вместе с литералами, т.е. "как видите". Тогда и поиск получится. Если где-то нужно показать только числа, то убрать разделители проще, чем в других случаях добавить.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817676
OkeTurel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кривцов АнатолийМаску ввода можно настроить так, что в таблице будут сохраняться значения вместе с литералами, т.е. "как видите". Не откроете ли секрет - как это сделать? :)
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817696
OkeTurelНе откроете ли секрет - как это сделать? :) У маски есть 3 секции. Вы используете только 1-ю. А 2-я, как раз, и командует сохранять литералы. Читайте справку или попробуйте повторно создать маску с помощью мастера - там есть соответств. опция.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817724
OkeTurel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, там есть. Я редко пользуюсь мастерами, не верю в них. А тут и правда есть.
Спасибо большое всем ответившим, извините, что отняла ваше время.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817791
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OkeTurelНо строка и так длинная, мне бы так не хотелось
я бы предпочла числа через пробел (или даже запятая+пробел), чтобы не терять наглядность и были нормальные переносы в формах/отчетах

наглядность важнее десятка байтов
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817810
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему бы не почитать HELP и сделать ввод нескольких чисел обязательным,а остальных необязательным.А разделитель придумайте сами и сохранять в поле.
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817845
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а не будет ли это многозначное поле-это уже другая (лично для меня не хорошая) история?
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39817892
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuа не будет ли это многозначное поле-это уже другая (лично для меня не хорошая) история?
в этом случае вряд ли речь шла о шаблоне
там автоматом вставляется точка с запятой
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39818171
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OkeTurelЗдравствуйте.

Не могу сообразить одну вещь.

У меня есть текстовая строка. В форме, в текстовом поле для ввода этой строки, я задала маску ввода 99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99"\"99
То есть пользователь вводит 23 числа или менее.
В форме это выглядит так: 06\08\14\16\20\22\24\28\30\ \ \ \ \ \ \ \ \ \ \ \ \
Но в таблице это выглядит так: 060814162022242830
Теперь я ищу значения с 01 по 31 в этой строке. Значения "01" не бывает. Бывает 1
Могу предложить(с ограничением:строка не менее 8 знаков)
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Function my(Txt As String)
Dim i, str
For i = 1 To Len(Txt) + Len(Txt) / 2 - 3 Step 3
If i > 1 Then i = i - 1
str = str & " " & Mid(Txt, i, 2)
Next
my = Mid(str, 2)
End Function

Код: vbnet
1.
2.
3.
4.
?my("06544143")
06 54 41 43
?my("0654414")
06 54 41
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39818173
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:
Код: vbnet
1.
For i = 1 To Len(Txt) + (Len(Txt) / 2) - 3 Step 3

так ограничение в 5 символов и если строка содержит нечетное число символов последний отбрасывается
...
Рейтинг: 0 / 0
Поиск с помощью Like
    #39833097
OkeTurel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, уважаемый sdku и все участники.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Поиск с помощью Like
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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