Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Елемент "Список", Некоррект работа на событии Form_Current 
:(
    Опции темы
Alibaba
Дата 19.11.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



Есть таблицы:

ТаблицаБанки
МФО     Банк    Адрес
300111 БанкА улицаА
300222 БанкБ улицаБ

ТаблицаАктивы
МФО      Дата           РазмерАктивов
300111 01.01.2009 100
300111 01.02.2009 150
300222 01.03.2009 200
300222 01.04.2009 250

Есть Форма, которая отображает поля из ТаблицаБанки.
На форме есть элементы "Кнопка", с помощью которых
двигаюсь по записям ТаблицаБанки.

На форме разместил элемент "Список" дал ему имя - СписокДат

-----------------------------------------------------
Код

Private Sub ВыбираемДату()
'--- из СписокДат выбраем дату
 a = СписокДат.Value
 If IsNull(a) Then
  ПодписьДат.Caption = "Почему NULL?????"
 Else
  ПодписьДат.Caption = a
 End If
End Sub

Private Sub Form_Current()
'--- для СписокДат формируем SQL запрос
 m = ПолеМФО.Value
 s = "SELECT Дата FROM ТаблицаАктивы WHERE МФО = " + Trim(Str(m)) + " ORDER BY 1 DESC;"
 СписокДат.RowSource = s
 ВыбираемДату
End Sub

Private Sub СписокДат_AfterUpdate()
 ВыбираемДату
End Sub
-----------------------------------------------------

Когда я запускаю форму
происходит событие Form_Current,
которое формирует запрос и вызывает мою процедуру ВыбираемДату
в этой процедуре СписокДат.Value=NULL. ПОЧЕМУ?????
Ведь визуально в СписокДат я вижу даты.

Когда в СписокДат выбираю дату,
происходит событие AfterUpdate, которое вызывает мою процедуру ВыбираемДату
и в этом случае СписокДат.Value = выбранной дате!!!!! (как и должно быть)

Когда двигаюсь по записям ТаблицаБанки с помощью кнопок "Вперед", "Назад"
тоже происходит событие Form_Current
и СписокДат.Value содержит старое значение!!!!!!!

Например, если мы были на первой записи
МФО = 300111, даты: 01.01.2009, 01.02.2009
СписокДат.Value = 01.01.2009

когда переходим на следующую запись
МФО = 300222, даты: 01.03.2009, 01.04.2009
СписокДат.Value не обновляется и по прежнему равно - 01.01.2009

Почему визуально видно в СписокДат новые значения
а при обращении к переменной она содержит старое значение?




Это сообщение отредактировал(а) Akina - 19.11.2009, 23:50
PM MAIL Skype MSN   Вверх
Akina
Дата 19.11.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Alibaba @  19.11.2009,  22:27 Найти цитируемый пост)
Когда я запускаю форму
происходит событие Form_Current,
которое формирует запрос и вызывает мою процедуру ВыбираемДату
в этой процедуре СписокДат.Value=NULL. ПОЧЕМУ?????

Ознакомьтесь с порядком возникновения событий при загрузке формы.

Цитата(Alibaba @  19.11.2009,  22:27 Найти цитируемый пост)
Почему визуально видно в СписокДат новые значения
а при обращении к переменной она содержит старое значение?

Потому что визуально его видно гораздо позже, чем выполняется обращение к нему.

Цитата(Alibaba @  19.11.2009,  22:27 Найти цитируемый пост)
Когда двигаюсь по записям ТаблицаБанки с помощью кнопок "Вперед", "Назад"
тоже происходит событие Form_Current
и СписокДат.Value содержит старое значение!!!!!!!

Кривой код кнопки.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Alibaba
Дата 20.11.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



Цитата(Akina @ 19.11.2009,  23:52)
Цитата(Alibaba @  19.11.2009,  22:27 Найти цитируемый пост)
Когда я запускаю форму
происходит событие Form_Current,
которое формирует запрос и вызывает мою процедуру ВыбираемДату
в этой процедуре СписокДат.Value=NULL. ПОЧЕМУ?????

Ознакомьтесь с порядком возникновения событий при загрузке формы.


Порядок такой:
Open → Load → Resize → Activate → Current

Цитата(Akina @ 19.11.2009,  23:52)
Цитата(Alibaba @  19.11.2009,  22:27 Найти цитируемый пост)
Когда двигаюсь по записям ТаблицаБанки с помощью кнопок "Вперед", "Назад"
тоже происходит событие Form_Current
и СписокДат.Value содержит старое значение!!!!!!!

Кривой код кнопки.


Код кнопки сгенерировался автоматически
когда я положил кнопку на форму:

Код

Private Sub КнопкаВперед_Click()
On Error GoTo Err_КнопкаВперед_Click
  DoCmd.GoToRecord , , acNext
Exit_КнопкаВперед_Click:
    Exit Sub
Err_КнопкаВперед_Click:
    MsgBox Err.Description
    Resume Exit_КнопкаВперед_Click
End Sub



PM MAIL Skype MSN   Вверх
Akina
Дата 21.11.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Alibaba @  20.11.2009,  22:38 Найти цитируемый пост)
Порядок такой:
Open → Load → Resize → Activate → Current

А дальше? Когда читаются данные - посмотрел?

Цитата(Alibaba @  20.11.2009,  22:38 Найти цитируемый пост)
Код кнопки сгенерировался автоматически
когда я положил кнопку на форму:

Угу... в нём не учтено появление поля, не привязанного к источнику данных формы. Дописывайте необходимый код руками.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Alibaba
Дата 24.11.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



Цитата(Akina @ 21.11.2009,  09:58)
Дописывайте необходимый код руками.

А какой код необходимо дописать?
PM MAIL Skype MSN   Вверх
Alibaba
Дата 26.11.2009, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



Народ, помогите, пожалуйста, бьюсь как рыба об лёд, ничего не получается.

обновление данных СписокДат.Requery не помогает

Код

Private Sub КнопкаВперед_Click()
On Error GoTo Err_КнопкаВперед_Click
  DoCmd.GoToRecord , , acNext

  СписокДат.Requery

Exit_КнопкаВперед_Click:
    Exit Sub
Err_КнопкаВперед_Click:
    MsgBox Err.Description
    Resume Exit_КнопкаВперед_Click
End Sub

PM MAIL Skype MSN   Вверх
Akina
Дата 26.11.2009, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454





--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 27.11.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Alibaba, с чего вы решили, что Value должно перезаполнятся при подчитке в список новых данных? Так вот не должно, т.к. Value отображает выбранное значение. А оно не имзенилось.
Чтобы этот атрибут менялся. Списку нужно указать имя поля в атрибут данные. См. свойсва списка. Тогда при переходе к следующей записи у вас изменится выбранное значение. По этому значению в списке найдется строка, которая и подсветится выбранной.
PM MAIL WWW ICQ Skype GTalk   Вверх
Alibaba
Дата 1.12.2009, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



Цитата(bopoha @ 27.11.2009,  17:06)
Чтобы этот атрибут менялся. Списку нужно указать имя поля в атрибут данные.

Когда мы двигаемся по записям ТаблицаБанки, для СписокДат формируем SQL запрос:

Код

Private Sub Form_Current()
'--- для СписокДат формируем SQL запрос
 m = ПолеМФО.Value
 s = "SELECT Дата FROM ТаблицаАктивы WHERE МФО = " + Trim(Str(m)) + " ORDER BY 1 DESC;"
 СписокДат.RowSource = s

 a = СписокДат.Value 'Здесь некорректная работа!!!!!!!!

End Sub


Как видим, имя поля, которое нужно указать списку (СписокДат) в атрибутах данных - это Дата

Давайте рассмотрим аттрибуты для елемента СписокДат:
Тип источника строк: таблица или запрос
Источник строк: "SELECT Дата FROM ТаблицаАктивы ORDER BY 1 DESC;"
Данные: здесь нельзя выбрать поле Дата. Здесь предлагается выбрать поля из списка полей из главной таблицы ТаблицаБанки (смотри мое первое сообщение от 19.11.2009, 21:27)
Если я руками прописываю поле Дата, игнорируя предложенный список, то во время работы появляется сообщение: 

"Ошибка 2424
Введенное выражение содержит поле, элемент управления или имя свойства, которые Access не может найти"

PM MAIL Skype MSN   Вверх
bopoha
Дата 1.12.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Цитата(Alibaba @  1.12.2009,  23:36 Найти цитируемый пост)
Данные: здесь нельзя выбрать поле Дата. Здесь предлагается выбрать поля из списка полей из главной таблицы ТаблицаБанки (смотри мое первое сообщение от 19.11.2009, 21:27)

Все правильно. Здесь и должны показываться поля главной таблицы.

Для указанной кофигурации данный элемент управления работает правильно. Не должно в Values появляется значение! И точка. Желаемое поведение от Списка не является стандартным.
Если вам необходимо получить значение первой строки, то получите его соответствующим образом:
Код

Me.Список.ItemData(0)


Вот пример использования:
Код

Public Sub CM_ListSelectFirst(ByRef ctl As Control)
' Скоков С.А. 2009-02-25
' Выбрать первое значение в поле со списком или списке
    With ctl
        If Not (.ControlType = acListBox Or .ControlType = acComboBox) Then
            Exit Sub
        End If
    
        If .ListCount > 0 Then
            .Value = Nz(.ItemData(0))
        End If
    End With
End Sub

PM MAIL WWW ICQ Skype GTalk   Вверх
Alibaba
Дата 23.1.2010, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



В прикрепленной базе данных находится форма и две таблицы: Банки (главная таблица), Филиалы (подчиненная таблица).

Когда мы двигаемся по главной таблице Банки РамкаБанка отображает фото банка.
При этом подчиненная форма отображает те филиалы, которые есть у данного банка.

Я хочу, кликая на различные филиалы в подчиненной форме - получать в РамкеФилиала - фото филиала.

Скажите, пожалуйста, как это сделать?


Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  test.zip 28,36 Kb
PM MAIL Skype MSN   Вверх
bopoha
Дата 26.1.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



При помощи событий. Дока: http://5codelines.net/events1/
PM MAIL WWW ICQ Skype GTalk   Вверх
Alibaba
Дата 28.1.2010, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



bopoha, ок, про события почитал.

В Вашем примере:
http://forum.vingrad.ru/index.php?showtopi...t&p=1837317

если поле T_ADRES типа: "Поле объекта OLE" (хочу хранить там картинки)
как на форме f_klient_edit_ отобразить данное поле?
Стандартный элемент "Поле" не хочет показывать "Поле объекта OLE".


PM MAIL Skype MSN   Вверх
bopoha
Дата 28.1.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Alibaba, для обображения кратинок есть специальный элемент управления. Я не храню скртинки в бд, а в файловой системе. Тогда все реализуется очень просто: при переходе на запись элементу управления указывается путь к файлу картинки.
PM MAIL WWW ICQ Skype GTalk   Вверх
Alibaba
Дата 29.1.2010, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.11.2009
Где: Киев

Репутация: нет
Всего: нет



bopoha, элемент управления для отображения картинок нашел: "Присоединенная рамка обьекта".

Можно еще вопрос: зачем Вы создаете три формы f_klient_main, f_klient_lite_spis_, f_klient_edit_?
Почему нельзя решить данный пример используя одну форму - f_klient_main (все елементы расположить на одной форме)?
PM MAIL Skype MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.1715 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.