Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Перерисовка значения в контроле / 17 сообщений из 17, страница 1 из 1
25.05.2004, 18:06
    #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
25.05.2004, 18:13
    #32533245
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Empty - это не то. Обычно в таких случаях используют Null.
...
Рейтинг: 0 / 0
25.05.2004, 22:09
    #32533507
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Нет, дело не в этом...
Не работает NULL, не работает "ZZZ". Похоже где-то глубже проблема :(
Код: plaintext
1.
2.
  Me!edtFldVal_1.Value = Null
  Me!edtFldVal_1.Value = "ZZZ"
...
Рейтинг: 0 / 0
25.05.2004, 22:13
    #32533513
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
А если me.repaint?
...
Рейтинг: 0 / 0
26.05.2004, 01:30
    #32533630
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Нет, repaint тоже не помогает.
Выяснилась последовательность действий, приводящая к этому результату:

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

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

Test.ZIP
...
Рейтинг: 0 / 0
26.05.2004, 02:52
    #32533645
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Me!edtFldVal_1 = ""
Me.Refresh
...
Рейтинг: 0 / 0
26.05.2004, 03:01
    #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
26.05.2004, 03:14
    #32533656
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Ёшкин кот, откуда эта дурацкая привычка присваиваить Null чему-либо?????
...
Рейтинг: 0 / 0
26.05.2004, 03:36
    #32533657
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Мы люди северные, дикие, поэтому и пользуем. :). А это большой грех?
...
Рейтинг: 0 / 0
26.05.2004, 03:42
    #32533658
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Грех согласно какого вероисповедания тебя интересует?
Я просто стараюсь не тревожить лишний раз эту древнюю, никому не подконтольную силу, нах... Слишком часто приходилось воевать с Null в самых неподходящих для этого местах.
...
Рейтинг: 0 / 0
26.05.2004, 03:47
    #32533659
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
В условии задачи надо отобразть пустое поле по нажаьтию кнопки Clear. Ну так и присаивайте ему "". А потом Refresh формы
...
Рейтинг: 0 / 0
26.05.2004, 04:02
    #32533661
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Веры Великого и могучего Билла.
Дык свободному контролу даже если и запихнуть
Мe!ctlM = Empty
все равно
IsNull(Мe!ctlM) даст true (в отличие от переменной variant, тут совсем другие игры)
...
Рейтинг: 0 / 0
26.05.2004, 04:14
    #32533663
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Ну а нафинг это нужно? Вроде бы проще сделать проверку на <>""
...
Рейтинг: 0 / 0
26.05.2004, 06:33
    #32533681
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Согласен. Тут дело привычки. Памятуя о том, что Null и "" разные вещи с некоторым недоумением смотрю на данную конструкцию :(
...
Рейтинг: 0 / 0
26.05.2004, 07:09
    #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
26.05.2004, 07:15
    #32533689
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перерисовка значения в контроле
Код: plaintext
Me.Refresh

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


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