Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Изменение порядкового номера контрола или что-то там еще / 13 сообщений из 13, страница 1 из 1
25.10.2003, 18:24
    #32305165
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
Есть форма для заполнения адреса (Страна, Город ....). После заполнения формы мне нужно отобразить всю информацию в одном поле. Я сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Function ADRESS_1()
    Dim r As DAO.Recordset
    Dim a As String
    Dim ctl As Control
    
    Set r = CurrentDb.OpenRecordset _
    ( "select * from adress_book where ID_PERS = "  & Me!ID_PERS &  "")
    Me.Controls(0 ) = Me!ADRESS
    If Not r.EOF Then
        r.MoveFirst
        Do Until r.EOF
            For Each ctl In Me.Controls
                If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then
                    If Not IsNull(ctl) Then
                        a = a & ctl & ", "
                    End If
                End If
            Next
            r.MoveNext
        Loop
        
        Debug.Print a
End Function

Этот код работает, но он составляет строку не в нужной мне последовательности, т.к. у контролов порядковые номера заданы не в нужной мне последовательности. Отсюда и вопрос: как это поменять? Или может есть более удачные способы решения проблемы?
...
Рейтинг: 0 / 0
25.10.2003, 18:35
    #32305166
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
Сорри, я немножко отмодерировал текст программы - подвигал строчки вправо-влево, чтобы было понятно, что к чему относится. После этого понял, что там отсутствует закрывающий End If. Но икс с ним, надеюсь, что в самой программе он все-таки есть, иначе бы она не запустилась.

Теперь по делу. Обращаться к контролам по номерам - это последнее дело. Такая программа перестанет работать в самый непредсказуемый момент. Начиная с Me.Controls(0) = Me!ADRESS, который вдруг начнет ссылаться на другой контрол. Почему обязательно 0, ты что, не знаешь, как он у тебя называется???

Теперь отвечаю на вопрос. Вариант такой:

Dim v As Variant, ctl As Control
For Each v In Array("txtCity", "cmbZipCode", "txtStreet", "txtHouseNo")
Set ctl = Me(v)
...
Next

Таким образом можно перечислить контролы в том порядке, как это нужно в данном месте программы, а не как случайно сложилось в ходе создания формы.
...
Рейтинг: 0 / 0
25.10.2003, 18:37
    #32305167
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
Кстати, категорически рекомендуется добавить в конце:

r.Close
Set r = Nothing
...
Рейтинг: 0 / 0
25.10.2003, 18:56
    #32305170
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
Me.Controls(0) = Me!ADRESS
За это сорри :) Этого там быть не должно было :)
Куда End If делся сам не знаю :) У меня он на месте
r.Close тоже есть
==================

Спасибо, Саныч
Я на счет Array тоже думал, но почему то зыбил на него :)
...
Рейтинг: 0 / 0
25.10.2003, 19:15
    #32305176
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
Вопрос, что называется "туда же"

Адресов может быть несколько (дом, работа и пр.). Возможноли сделать в текстбоксе, который заполняется вышеупомянутой строкой, сделать разделители. Типа:

Код: plaintext
1.
2.
3.
4.
Рабочий: Россия, Санкт-Петербург, ул. Мфыва, д. 30 , кв.  35 
 --------------------------------------------------------
 
Домашний: Россия, Санкт-Петербург, ул. Бфыва, д. 27 , кв.  3 
...
Рейтинг: 0 / 0
25.10.2003, 19:41
    #32305186
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
2 В.С
For Each v In Array("txtCity", "cmbZipCode", "txtStreet", "txtHouseNo")
А не проще ли сразу написать
myControl=txtCity & "," & cmbZipCode & ....
2 VcsevolodV
Перед r.MoveNext вставляешь строку
a=a & vbCRLF & string(len(a),"-")
...
Рейтинг: 0 / 0
25.10.2003, 19:51
    #32305189
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
2 VIG:

Да, я об этом думал, но мой вариант позволяет проделать какую-нибудь операцию в цикле, написав ее один раз, а не повторять столько раз, сколько контролов. Да и приспособить к другому экрану с другими контролами так тоже проще.
...
Рейтинг: 0 / 0
25.10.2003, 19:54
    #32305190
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
А не проще ли сразу написать
myControl=txtCity & "," & cmbZipCode & ....

Дак а если cmbZipCode = NULL, то в строке будет ", ,"
...
Рейтинг: 0 / 0
25.10.2003, 20:21
    #32305194
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
2 В.С
Все должно определяться целесообразностью.Вряд ли стоит организовывать цикл, чтобы просуммировать 3-4 значения.Кроме того если уже что-то делать,так делать правильно. Вместо select * from... я ба написал
select список_нужных_полей_в_нужном порядке from... ,а потом прошелся бы циклом по коллекции fields
2 Vsevolod
А ты подумай сам
...
Рейтинг: 0 / 0
25.10.2003, 22:15
    #32305227
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
2 VIG:

А я ведь идиот. Там же громадный БАГ в программе, а я его не углядел. Открывается рекордсет, идет проход по записям, а с самим рекордсетом ничего не делается! Берутся значения из контролов формы, которые от рекордсета никак не зависят.
...
Рейтинг: 0 / 0
25.10.2003, 22:37
    #32305233
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
А я ведь идиот
Я думаю,что все-таки не ты
...
Рейтинг: 0 / 0
25.10.2003, 22:39
    #32305235
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
Отвечать-то взялся я. Автор бага не обязан его видеть по определению, потому что его задача здесь - спрашивать.
...
Рейтинг: 0 / 0
25.10.2003, 23:17
    #32305238
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение порядкового номера контрола или что-то там еще
Я думаю,что все-таки не ты
Опровергнуть не чем

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


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