1

Тема: Пов`язанні комбобокси на формі.

Добрий день.
На формі розмістив  2 комбобокси та два текстбокса.
В першому обираємо (Виконавця) ,а в іншому комбобокс  (Транспорт) повинна  відобразитися  інформація про обраний транспорт в залежності від обраного значення в іншому Combobox
Наприклад : обираємо Виконавця Петренко (combobox1),то в іншому Транспорт (combobox2) повинно відобразитися :Mercedes ВН 678-09АВ,MAN 45-89 АВ і потім в залежності від обраного Транспорту в TextBox відображалась інформація (водій,посвідчення). Прошу Вашої допомоги у вирішенні питання.
Проект виконано на Visual Basic 2010 Express.
База даних :Access.

Post's attachments

Повязані CombTextBox.7z 69.32 kb, 61 downloads since 2017-04-09 

2

Re: Пов`язанні комбобокси на формі.

up

x

3

Re: Пов`язанні комбобокси на формі.

А в чому проблема? Де ваші спроби зробити це?

4

Re: Пов`язанні комбобокси на формі.

Добрий день. Трохи скоректував файл. Зробив варіант для прикладу  без комбобоксу(Транспорт) . Але цей варіант  не є коректний,тому що є Виконавці у котрих декілька машин от і їх треба відобразити  в комбобоксі Транспорт. Як це зробити не знаю. Прошу  допомоги фахівців.

Post's attachments

Приклад.zip 99.84 kb, 52 downloads since 2017-04-12 

5

Re: Пов`язанні комбобокси на формі.

Вам би спочатку базу даних переробити щоб вона мала 2 таблички виконавці і машини які би були зєднані між собою. А так можна пробувати робити якось так.

Прихований текст

Public Class Form1
    Public DataSource As List(Of DbModel) = New List(Of DbModel)()
    Sub fillcombo()
        Dim bs As New BindingSource()
        ComboBox1.DataSource = DataSource
        ComboBox1.DisplayMember = "Executant"
        ComboBox2.DataSource = DataSource
        ComboBox2.DisplayMember = "Vehicle"

    End Sub

    Private Sub SelectionChanged(ByVal sender As Object,
        ByVal e As EventArgs) Handles ComboBox1.SelectedValueChanged
        Dim selectedModel = TryCast(ComboBox1.SelectedItem, DbModel)
        ComboBox2.SelectedItem = selectedModel
        TextBox1.Text = selectedModel.Driver
        TextBox2.Text = selectedModel.DrivingLicense
    End Sub

    Sub LoadDataFromDb()
        Dim command As New OleDb.OleDbCommand("select * from Таблица1", acsconn)
        Dim reader = command.ExecuteReader
        While (reader.Read)
            DataSource.Add(New DbModel(reader("Код"), reader("Виконавці"), reader("Транспорт"), reader("Водій"), reader("Посвідчення водія")))
        End While
        command.Dispose()
        reader.Close()
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Text = "Пов'язані комбобокси на формі " & "(" & Format(Now, "dd.mm.yyyy") & ")" ' призначаємо заголовок форми

        'Создание всплывающей подсказки 
        Dim toolTip1 As New ToolTip()

        'Настройка задержек для подсказке.
        toolTip1.AutoPopDelay = 5000
        toolTip1.InitialDelay = 1000
        toolTip1.ReshowDelay = 500

        ' Настройка текста подсказки
        toolTip1.ToolTipIcon = Windows.Forms.ToolTipIcon.Info
        toolTip1.ToolTipTitle = "Підсказка"

        toolTip1.BackColor = Color.Blue  'цвет фона подсказки
        toolTip1.ForeColor = Color.Orange 'цвет текста подсказки
        toolTip1.SetToolTip(Me.ComboBox1, "Вибір Виконавця. Відображаються  уникальні значення з бази данних Access")
        toolTip1.SetToolTip(Me.ComboBox2, "Вибір Транспорта в залежності від обраного Виконавця ")
        toolTip1.SetToolTip(Me.Button1, "Закриття форми")

        Module1.connect()
        LoadDataFromDb()
        Me.fillcombo()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
End Class

Public Class DbModel
    Public Property Id() As Integer
        Get
            Return m_Id
        End Get
        Set
            m_Id = Value
        End Set
    End Property
    Private m_Id As Integer
    Public Property Executant() As String
        Get
            Return m_Executant
        End Get
        Set
            m_Executant = Value
        End Set
    End Property
    Private m_Executant As String
    Public Property Vehicle() As String
        Get
            Return m_Vehicle
        End Get
        Set
            m_Vehicle = Value
        End Set
    End Property
    Private m_Vehicle As String
    Public Property Driver() As String
        Get
            Return m_Driver
        End Get
        Set
            m_Driver = Value
        End Set
    End Property
    Private m_Driver As String
    Public Property DrivingLicense() As String
        Get
            Return m_DrivingLicense
        End Get
        Set
            m_DrivingLicense = Value
        End Set
    End Property
    Private m_DrivingLicense As String
    Public Sub New(pId As Integer, pExecutant As String, pVehicle As String, pDriver As String, pDrivingLicense As String)
        Id = pId
        Executant = pExecutant
        Vehicle = pVehicle
        Driver = pDriver
        DrivingLicense = pDrivingLicense
    End Sub
End Class

6

Re: Пов`язанні комбобокси на формі.

Ну як-як... запитати базу і обробити відповідь. Ви, власне, це робите в кількох процедурах, і я ніяк не можу зрозуміти, що саме заважає вам написати аналогічну процедуру для вашого питання. Ви не знаєте, як робити запит по двох таблицях, чи як записувати результати в циклі з відповіді у цей ваш ComboBox?

заради цікавості
Чому VB і Access? Якщо чесно, Turbo Pascal із FoxPro не так страшно виглядають.