luca1517 Ответов: 1

Как перенести выбранные данные из checkedlistbox в datagridview в другом окне с помощью VB.NET а база данных MS access?


Привет, я новичок в VB.Net и у меня есть программа, которая использует checkedlistbox он заполняется данными, взятыми из базы данных Access. Что мне нужно сделать, так это перенести проверенные элементы и связанные с ними данные в практическое руководство в другом winform на событие button_click появилась.

Что я уже пробовал:

На самом деле я ничего не пробовал, так как не знаю, с чего начать.
Вот мой код для checkedlistboxes(есть два, и мне нужны обе данные):
Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Using connection As New OleDbConnection("Provider string"),
          adapter As New OleDbDataAdapter("SELECT Service_Name, Service_Fee FROM [Service_Types]", connection)
            Dim sql As String = "Select Lastname FROM Employees2"
            Dim cmd As New OleDbCommand
            cmd = New OleDb.OleDbCommand(sql, connection)
            connection.Open()
            Dim dr As OleDbDataReader = cmd.ExecuteReader
            If dr.HasRows Then
                While dr.Read
                    chcklstbx2.Items.Add(dr(0))
                End While
            End If
            Dim table As New DataTable

            adapter.Fill(table)

            With chcklstbx1
                .DataSource = table
                .DisplayMember = "Service_Name"
                .ValueMember = "Service_Fee"
            End With
            connection.Close()
        End Using
    End Sub


 Private Sub chcklstbx1_ItemCheck(sender As Object, e As ItemCheckEventArgs) Handles chcklstbx1.ItemCheck
        Dim checkedItems = chcklstbx1.CheckedItems.Cast(Of DataRowView)().ToList()

        Dim currentItem = DirectCast(chcklstbx1.Items(e.Index), DataRowView)

        If e.NewValue = CheckState.Checked Then
            checkedItems.Add(currentItem)
        Else
            checkedItems.Remove(currentItem)
        End If

        Dim sum = checkedItems.Sum(Function(drv) CDec(drv("Service_Fee")))
        Dim text = String.Join(ControlChars.NewLine, checkedItems.Select(Function(drv) CDec(drv("Service_Fee"))))
        lblFees.Text = text
        lblTotal.Text = sum
    End Sub


То практическое руководство имеет следующие столбцы: Service_Num (автоматически сгенерированный), Service_Type, Handled_By, Service_Fee и Service_Date. Данные для Service_Types который является Service_Name это население в первом checkedlistbox а во втором-фамилии сотрудников. Итогом для Service_Fee должны быть данные, вызванные в таблицу Service_Fee.
Спасибо за вашу помощь.

[no name]

"На самом деле я ничего не пробовал, так как не знаю, с чего начать", - тогда вы начинаете с того, что открываете google и ищете что-то вроде " передача данных между формами vb.net - и начинай что-нибудь пробовать.

luca1517

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

[no name]

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

1 Ответов

Рейтинг:
1

Michael_Davies

Элемент управления datagridview является членом другой формы, в VB вы можете свободно получить доступ к элементам управления в форме, используя имя формы.

В качестве примера код Form1 хочет получить доступ к TextBox1 на Form2, в коде на Form1 (обработчик нажатия кнопки для вас) вы говорите:

Form2. Textbox1. Text = " данные, которые вы хотите поместить в текст элементов управления."


luca1517

Привет @Michael_Davies спасибо Вам за это, это действительно полезно. Я могу попробовать написать запрос, чтобы сначала вставить выбранные данные в базу данных, а затем вызвать его в datagridview в другой форме.

Michael_Davies

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