Member 10469183 Ответов: 1

Datagrid в базу данных dbf с помощью VB.NET


Dim con As New OleDbConnection
Dim ds As New DataSet
Dim dt As New DataTable
Dim da As New OleDbDataAdapter
Dim con1 As New OleDbConnection
Dim ds1 As New DataSet
Dim dt1 As New DataTable
Dim da1 As New OleDbDataAdapter


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    con.ConnectionString = "Provider=vfpoledb.1;Data Source=C:\dbf_folder;Collating Sequence=machine;"
    con.Open()
    ds.Tables.Add(dt)
    da = New OleDbDataAdapter("Select * from area.dbf", con)
    Dim cb = New OleDbCommandBuilder(da)
    cb.QuotePrefix = "["
    cb.QuoteSuffix = "]"
    da.Fill(dt)
    dt.Merge(dt1)
    dbfdatagrid.DataSource = dt.DefaultView
    con.Close()
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    con1.Close()
    con1.ConnectionString = "Provider=vfpoledb.1;Data Source=C:\dbf_folder1;Collating Sequence=machine;"
    con1.Open()
    da1 = New OleDbDataAdapter("Select * from area.dbf", con1)
    Dim cb = New OleDbCommandBuilder(da1)
    cb.QuotePrefix = "["
    cb.QuoteSuffix = "]"
    Dim columns(5) As DataColumn
    columns(4) = dt.Columns("NAME")
    dt.PrimaryKey = columns

    da1.Fill(dt1)
    da1.Update(dt)
  End Sub


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

Datagrid to dbf database updating type of solution нигде не смог найти, если кто-нибудь решит эту проблему, пожалуйста, ответьте мне. Ошибка-динамическая генерация SQL для команды UpdateCommand не поддерживается для команды SelectCommand, которая не возвращает никакой информации о ключевом столбце.

1 Ответов

Рейтинг:
1

Suvendu Shekhar Giri

Вы проверили это в google?

Наиболее вероятной причиной этой проблемы может быть то, что у вас нет primary key в соответствующей таблице.

Проверьте следующие потоки-
Ошибка: динамическая генерация sql для команды update не поддерживается для команды select, которая не возвращает никакой информации о ключевом столбце[^]

Чтобы добавить ограничение первичного ключа к существующей таблице, вы можете написать следующее-

ALTER TABLE MyTable ADD CONSTRAINT pkMyTable PRIMARY KEY (MyColumn)


Если я что-то здесь упускаю, пожалуйста, предложите.

Надеюсь, это поможет :)