2015-07-16 3 views
0

Мне нужно создать небольшое приложение POS (точка продажи) с сенсорным экраном MS Access.Приложение MS Access POS (точка продажи) - динамическое заполнение формы из списка

Если у кого-то есть рудиментарный сенсорный экран MS Access, он может указать мне, чтобы я мог учиться у него, что очень помогло бы.

Я смог найти код для сенсорной клавиатуры, которую я буду использовать.

Лицо, использующее интерфейс, должно щелкнуть имя человека как часть процесса POS. Люди часто меняются, поэтому мне нужно часто обновлять список.

Я ищу способ использования VBA для динамического создания экранных кнопок на основе списка людей, которые я обновляю в отдельной форме.

Форма, естественно, будет полноэкранной и никогда не будет содержать более 50 кнопок на экране, представляющих список людей. В этой форме будет присутствовать только несколько (менее 5) других элементов управления, поэтому кнопки, представляющие список людей, должны быть ограничены областью в форме. Форма должна считывать список людей, затем автоматически создавать фиксированные и большие квадратные кнопки и упорядочиваться в алфавитном порядке слева направо.

спасибо.

+0

Вместо кнопок я бы рассмотрел использование окна списка. Access позаботится обо всех обновлениях, и он сможет прокручивать, а не беспокоиться о том, как создавать все кнопки для соответствия. Я думаю, что можно добавлять и удалять кнопки с кодом, вместо этого вы можете изменить их видимость и текст, а затем заставить их взаимодействовать с какой-либо таблицей поиска. – Evan

+0

Спасибо за предложение Evan, но я бы предпочел использовать кнопки. – wickyd

ответ

0

Что-то вроде этого должно работать на вас тогда. Вам нужно будет сделать максимальное количество кнопок, которые вам понадобятся в форме, и проложить их, и сделать событие OnClick для каждого, как здесь, для Command0. Затем, когда форма открыта, массив инициализируется, и все кнопки имеют заголовок и становятся видимыми до количества записей в таблице.

Когда каждая кнопка нажата, она вызывает HandleClick Sub для взаимодействия с данными по мере необходимости.

Я сделал набор записей глобальным, чтобы он был заполнен только один раз и избегал странных проблем с данными, если таблица клиентов обновляется, пока эта форма используется.

Dim Buttons(1 To 4) As Control 
Dim rst As DAO.Recordset 

Private Sub Command0_Click() 
    HandleClick (1) 'number that corresponds to this button in the array as 
        'initialized in the Form_Load sub, hard coded 
End Sub 

Private Sub Form_Load() 
    'initialize the buttons 
    Buttons(1) = Me.Command0 
    Buttons(2) = Me.Command1 
    Buttons(3) = Me.Command2 
    Buttons(4) = Me.Command3 

    Dim sql As String 
    sql = "SELECT * FROM tblCustomers" 
    Set rst = CurrentDb.OpenRecordset(sql) 

    FillButtons 
End Sub 


Sub FillButtons() 
    If (rst.EOF And rst.BOF) = False Then 
     rst.MoveFirst 

     Dim itr As Integer 
     Do 
      Buttons(itr).Caption = rst("CustomerName") 
      Buttons(itr).Visible = True 
      rst.MoveNext 
     Loop While rst.EOF = False 
    End If 
End Sub 

Sub HandleClick(CustomerNumber As Integer) 
    'Here is where you do what you intended with the button using 
    'customer number to know which record was clicked 
End Sub 

Это грязный подход, но он должен работать.

 Смежные вопросы

  • Нет связанных вопросов^_^