Сетка данных не показывает содержимое таблицы

#vb.net #ms-access

#vb.net #ms-доступ #ms-access

Вопрос:

У меня есть две таблицы masterdb и markssheetdb table, и я хочу извлечь три столбца из таблицы masterdb to markssheedb из формы 2 в форму 1, но это выдает ошибку типа «Это сгенерирует повторяющиеся значения.«

Я использую Visual Studio 2017 и Msaccess 2017.

 Imports System.Data.OleDb
Public Class Home
    Dim con As New OleDbConnection
    Private Sub Home_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersDesktopmaster.accdb"
        con.Open()

        Datagridshow()
    End Sub

    Private Sub Datagridshow()
        Dim ds As New DataSet
        Dim dt As New DataTable
        ds.Tables.Add(dt)
        Dim da As New OleDbDataAdapter
        da = New OleDbDataAdapter("INSERT INTO Smarkssheetdb ( ROLLNO, UNIVROLL, [NAMES] )
                                   SELECT Smasterdb.ROLL_No, Smasterdb.UNIV_ROLL, Smasterdb.NAME
                                    FROM Smasterdb,Smarkssheetdb where  Smasterdb.ROLL_No <> Smarkssheetdb.ROLLNO ", con)
        da.Fill(dt)
        DataGridView1.DataSource = dt.DefaultView

        con.Close()
    End Sub

    Private Sub AddEditToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AddEditToolStripMenuItem.Click
        addedit.Show()

    End Sub

    Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
        End

    End Sub
End Class
  

В masterdb строками являются Sno, rollno, regno, univroll, курс, название, sgpa1, sgpa2,….., sgpa8
а в таблице markssheetdb строки rollno, univroll, name, m1, m2, m3,….., m8

и я хочу, чтобы данные rollno, univroll, name в обеих таблицах были одинаковыми, и если я обновлю masterdb, то он автоматически обновит поля таблицы markssheetdb.

изображение 1

изображение 2

изображение 3

изображение 4

Комментарии:

1. Ваш дизайн базы данных несовершенен. «Я хочу, чтобы данные rollno, univroll, name в обеих таблицах были одинаковыми» говорит мне, что дизайн не нормализован. Найдите администратора базы данных, который поможет вам с дизайном.

2. Метод заполнения DataAdapter используется с командами выбора, а не Вставки.

3. Попробуйте этот оператор sql, переданный адаптеру в Access, и посмотрите, что вы получите.

Ответ №1:

попробуйте свой dataadapter без инструкции insert

 da = New OleDbDataAdapter("SELECT Smasterdb.ROLL_No, Smasterdb.UNIV_ROLL, Smasterdb.NAME
                            FROM Smasterdb,Smarkssheetdb where  Smasterdb.ROLL_No <> Smarkssheetdb.ROLLNO;", con)
  

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

Комментарии:

1. imgur.com/XlaNT2V Показывает только таблицу данных с 3 столбцами и без данных. Но я хочу, чтобы это понравилось imgur.com/iw33pyr

2. Для этого вы можете добавить CBOOL (False ) КАК 1-й, CBOOL (False) КАК 2 секунды и так далее, но если есть условие, вы можете использовать это.