Мой вопрос об импорте excel в datagridview, но есть дополнительный случай.

У меня также есть база данных oledb с кодом магазина и названиями магазинов.

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

Мои коды здесь;

 Dim conn As OleDbConnection
        Dim dtr As OleDbDataReader
        Dim dta As OleDbDataAdapter
        Dim cmd As OleDbCommand
        Dim dts As DataSet
        Dim excel As String
        Dim OpenFileDialog As New OpenFileDialog


        OpenFileDialog1.FileName = ""
        OpenFileDialog1.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop
        OpenFileDialog1.Filter = "All Files (*.*)|*.*|Excel files (*.xlsx)|*.xlsx|CSV Files (*.csv)|*.csv|XLS Files (*.xls)|*xls"

        If (OpenFileDialog1.ShowDialog(Me) = System.Windows.Forms.DialogResult.OK) Then
            DataGridView1.Columns.Clear()

            Dim fi As New FileInfo(OpenFileDialog1.FileName)
            Dim FileName As String = OpenFileDialog1.FileName

            excel = fi.FullName
            conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
            dta = New OleDbDataAdapter("Select * From [Sheet1$]", conn)



            dts = New DataSet
            dta.Fill(dts, "[Sheet1$]")
            DataGridView1.DataSource = dts
            DataGridView1.DataMember = "[Sheet1$]"
            conn.Close()
        End If

Во-первых извините за мой ужасный английский :)

Изображения следующим образом;

Основная форма

Форма списка магазинов

Я хочу, чтобы в сетке данных отображались только те, что в списке магазинов.. :\

0
fonus 22 Апр 2020 в 17:30
Использовать представление данных в качестве источника данных, а не таблицу данных asp-net-example.blogspot.com/2011/05/…
 – 
T.S.
22 Апр 2020 в 21:30
Я голосую за то, чтобы закрыть этот вопрос, потому что на него уже был дан ответ, и, кроме того, я предоставил ссылку с примером. Таких примеров можно найти немало. Суть в том, что ОП не провел достаточного исследования, прежде чем спрашивать.
 – 
T.S.
22 Апр 2020 в 21:32

1 ответ

Не совсем ясно, как выглядит ваша текущая презентация/дисплей, в чем проблема и как должна выглядеть желаемая презентация/дисплей. Но вы спросили о выборе только одной части импортируемых данных, которая предположительно находится только в одном столбце импортированных данных Excel.

Когда создается datatable, он содержит столбцы и строки из рабочего листа Excel. Столбцы будут данными из первой строки, а строки будут записями из последующих строк на листе. Вы можете легко получить доступ как к данным заголовка, так и к данным строки. Приведенный ниже код ОЧЕНЬ грубый, но чтобы вы могли увидеть, как получить доступ к данным в datatable, которые вы уже очень успешно импортировали, в приведенном выше ограниченном коде.

Dim columns = datatable.Columns
Dim rows = datatable.Rows
Dim columns1 = columns(0)
Dim rows1 = rows(0)
Dim element1 = rows1(0)

Столбцы будут иметь все заголовки, поэтому вы можете найти столбец с кодами или названиями магазинов. Тогда в строках будут данные для каждого магазина. Таким образом, выше, строки1 — это первая строка данных, а элемент1 — это данные в этой строке из столбцов1 и так далее. (0) — это индекс соответствующих коллекций.

Вам, конечно, придется написать код для извлечения нужных данных и, при необходимости, устранения дубликатов, но все данные уже есть.

Надеемся, что получение данных в списке, а затем сортировка, фильтрация и выбор данных должны быть относительно простыми, но если нет, добавьте комментарий. Это какая-то другая проблема. Вы спрашивали о получении только кодов магазинов.

Добавлено: На основании ваших дополнительных изображений и объяснений вы хотите выполнить операцию SQL INNER JOIN. На странице w3schools.com о SQL INNER JOIN: «Ключевое слово INNER JOIN выбирает все строки из обеих таблиц, если между столбцами есть совпадение». Это то, чему вам придется учиться и учиться, но оно должно предоставить то, что вам нужно в данном случае. Вам нужно будет определить и построить обе таблицы, а затем выполнить JOIN.

И, кстати, вы также можете перейти по ссылке, указанной в первом комментарии TS, и если это решит вашу проблему, это гораздо более простое решение.

0
Alan 23 Апр 2020 в 16:15