Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Работа с Access. Есть таблица в ней 4 поля.


Автор: The Thing 26.10.2006, 12:48
Работа с Access. Есть таблица в ней 4 поля.
Нужно отобразить в поле на форме. Название поля имеющего минимальное значение (integer)!
Очень срочно.. Помогите плз.

Добавлено @ 12:51 
т.е. вопрос звучит так: как получить данное таблицы (поле).. т.к. вычислить мин я смогу и сам smile
Да, создавал форму я в режиме мастера. И имеется такое понятие как текущая запись. (форма обрабатывает только одну запись)

Если что непонятно написал извините.. могу уточнить.

Автор: amt 31.10.2006, 21:47
Может что не так, но вот что могу предложить исходя из того, как я понял твою задачу.
Допустим так.
Создали таблицу Таблица1 с полями a, b, c, d.
Заполнили данными.
Создаем запрос с помощью мастера или еще как в котором отображаются те же поля, но в них только по одному max значению.
На основе запроса создаем форму с помощью мастера.
Открываем форму в режиме конструктора.
Там видим восемь объектов
a, b, c, d – текстовые поля
a_надпись, b_надпись, c_надпись, d_надпись – типа Lable-ы
(имена могут быть другие, при необходимости подкорректируй)
Создай на форме надпись, например Надпись10 (или тестовое поле)
В событии Form_Load() пишем

Private Sub Form_Load()
x1 = Me.a
x2 = Me.b
x3 = Me.c
x4 = Me.d
If x1 > x2 And x1 > x3 And x1 > x4 Then
    Me.Надпись10.Caption = Me.a_Надпись.Caption
    Else
    If x2 > x3 And x2 > x4 Then
        Me.Надпись10.Caption = Me.b_Надпись.Caption
        Else
            If x3 > x4 Then
                Me.Надпись10.Caption = Me.c_Надпись.Caption
                Else
                Me.Надпись10.Caption = Me.d_Надпись.Caption
                End If
        End If
    End If

End Sub
При желании ненужные надписи и поля можно не выводить на экран.

PS Только я тебе тут для мах сделал
Может я чего не так понял…

Автор: Akina 2.11.2006, 10:08
Уточните задачу.

Имена полей таблицы заведомо известны, не изменятся в будущем и могут быть использованы константы, содержащие эти имена? или имена полей на момент дизайна неизвестны либо в дальнейшем могут измениться, и их необходимо определить программно?

Исходя из общей постановки задачи:

1) Получаем доступ к TableDef, выбираем все имена с нужным типом данных (integer)
2) Получаем содержимое найденных полей для CurrentRecord
3) Среди полученных значений находим минимальное (максимальное)
4) В цикле сравниваем значение каждого поля с найденным минимумом (максимумом), при равенстве запоминаем имя текущего сравниваемого поля.
5) Выводим запомненное имя поля на форму.

Если несколько полей имеют одинаковое значение, равное мин. (макс.) - такой алгоритм выведет последнее из них (в порядке, задаваемом TableDef, а не по алфавиту или структуре). Более верно - запоминать все найденные в массив, и если там окажется более 1 поля - вывести все либо одно, отобранное по желаемому критерию.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)