powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перерисовка значения в контроле
17 сообщений из 17, страница 1 из 1
Перерисовка значения в контроле
    #32533224
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем форму с блоком поиска сверху.
Есть, так же 2 кнопки: "Поиск" и "Очистить фильтр"

Если вводим значение для поиска, нажимаем "Поиск", то все работает.
Поиск делается через фильтр.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  ' ... перед этим формируем строку "szAddWhere" ...
  Debug.Print "AddWhere = '" & szAddWhere & "'"
  '  -- Add criteria and requery list --
 
  If szAddWhere = "" Then
    Me.Filter = ""
    Me.FilterOn = False
  Else
    Me.Filter = szAddWhere
    Me.FilterOn = True
  End If
  Me.Requery

Далее, по нажатию на кнопку "Очистить фильтр" - сбрасывается значение полей поиска и опять вызывается та же функция поиска.
Код: plaintext
1.
2.
3.
  Me!edtFldVal_1.Value = Empty
  Me!cmbCustomerID.Value = Empty
  Call btSearch_Click

Так вот - все работает замечательно, кроме одного - поле поиска не перерисовывается.
Т.е. значения в нем нет (но на экране оно видно), курсором если в него встать, то оно не пропадает.
Пропадает при насильственной перерисовке (minimize,maximize)

Кто виноват?
Я, access или "тот, кто за дверью"?

BTW: проблему решает добавление кода:
Код: plaintext
1.
  Me!edtFldVal_1.Visible = False
  Me!edtFldVal_1.Visible = True
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533245
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Empty - это не то. Обычно в таких случаях используют Null.
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533507
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, дело не в этом...
Не работает NULL, не работает "ZZZ". Похоже где-то глубже проблема :(
Код: plaintext
1.
2.
  Me!edtFldVal_1.Value = Null
  Me!edtFldVal_1.Value = "ZZZ"
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533513
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А если me.repaint?
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533630
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, repaint тоже не помогает.
Выяснилась последовательность действий, приводящая к этому результату:

1) Форма у меня является "Continuous Forms"
2) Если задать поиск, который возврящает хот одну запись, то все работает ОК
3) Если задать поиск, после которого гничего не найдено, то сброс значения поля отрабатывается как описано вначале.

Вот такая фигня... похоже, что мне достался какой-то мелкий баг Access-а.
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533635
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, написал точно такую же форму со своим глюком - но сильно урезанную.

Test.ZIP
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533645
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Me!edtFldVal_1 = ""
Me.Refresh
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533650
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub btClear_Click()
    Me.Filter = ""
    Me.FilterOn = False
    Me!edSrch1 = Null
End Sub

Private Sub btSearch_Click()
  Dim szAddWhere As String
  If Not IsNull(Me!edSrch1) Then
    szAddWhere = " CStr(F1) like '*" & CStr(Me!edSrch1) & "*' "
    Me.Filter = szAddWhere
    Me.FilterOn = True
  End If
End Sub
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533656
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ёшкин кот, откуда эта дурацкая привычка присваиваить Null чему-либо?????
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533657
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы люди северные, дикие, поэтому и пользуем. :). А это большой грех?
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533658
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грех согласно какого вероисповедания тебя интересует?
Я просто стараюсь не тревожить лишний раз эту древнюю, никому не подконтольную силу, нах... Слишком часто приходилось воевать с Null в самых неподходящих для этого местах.
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533659
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В условии задачи надо отобразть пустое поле по нажаьтию кнопки Clear. Ну так и присаивайте ему "". А потом Refresh формы
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533661
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Веры Великого и могучего Билла.
Дык свободному контролу даже если и запихнуть
Мe!ctlM = Empty
все равно
IsNull(Мe!ctlM) даст true (в отличие от переменной variant, тут совсем другие игры)
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533663
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а нафинг это нужно? Вроде бы проще сделать проверку на <>""
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533681
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен. Тут дело привычки. Памятуя о том, что Null и "" разные вещи с некоторым недоумением смотрю на данную конструкцию :(
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533688
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСогласен. Тут дело привычки. Памятуя о том, что Null и "" разные вещи с некоторым недоумением смотрю на данную конструкцию :(

Помятуя, что Empty, Null и "" строка являются разными (особенно в случае контрола), связанного с полем данных - предпочитаю не привыкать делать неправильно.
Если присвоить "" контролу связанному с полем, то это не то же самое, что присвоить NULL.

Кроме того - см. пост: 22:09 можно хоть обприсваиваться.

А по поводу "Слишком часто приходилось воевать с Null в самых неподходящих для этого местах." для этого и присутствует конструкция:
Код: plaintext
if NVL(Me!edFld.Value,"") > "" then ...\n

Workaround-ов есть масса:
1) Установить флаг Visible в False, а затем сразу же в True
2) Установить значение после очистки фильтра
3) ... изголяться и заставить себя перерисовать можно много как...

Но, вот, поведение контрола адекватным назвать не могу
...
Рейтинг: 0 / 0
Перерисовка значения в контроле
    #32533689
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Me.Refresh

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


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