プロジェクトにアクセス データベースをデータソースとして追加しました。したがって、自動的に生成された tableadapters クラスを取得し、接続文字列を含むテーブル アダプター インスタンスにアクセスします。これを使用してデータベースへの接続を開いているので、最初にいくつかのレコードを削除してから、それらを新しいレコードに置き換えることができます。.executenonquery
影響を受ける行が返されるため、クエリは機能しているようです。delete *
念のためコマンドも試してみました。しかし、データベースを開くと、すべてが同じです。その理由についていくつかのアイデアがありました。プロジェクトのデータ ディレクトリへの汎用ポインタが含まれているため、tableadapter によって返される接続文字列は間抜けかもしれないと思いました。
プロバイダー=Microsoft.Jet.OLEDB.4.0;データ ソース=| DataDirectory |\DupeMDB.mdb;Persist Security Info=True
また、ビルド アクションまたは出力ディレクトリへのコピーに問題があるのではないかと考えました。この 2 つの背後にあるメカニズムがよくわかりません。出力ディレクトリへのコピーが原因である可能性があると思います。
これが私の目標です。このプロジェクトを秘書に展開して、彼女がプログラムを使用して重複レコードリストなどを処理できるようにしたいと考えています。データはプログラムと一緒に移動する必要があります。この.mdfファイルを配置と一緒にパッケージ化し、彼女が作業を終えたときにそれを返したいと考えています。私はここで終わりに近づいています(テーブルに書き戻します)。テーブルが更新されない理由を知っている人はいますか?
Dim Connector As DupeTblTableAdapter = New DupeTblTableAdapter
Dim Conn As New System.Data.OleDb.OleDbConnection
Conn = Connector.Connection
Conn.ConnectionString = Connector.Connection.ConnectionString
MsgBox(Conn.ConnectionString)
Dim Comm As System.Data.OleDb.OleDbCommand
Conn.Open()
For Each DR In DeleteRecords
Comm = New System.Data.OleDb.OleDbCommand($"DELETE from DupeTbl where DupeTbl.CUST_NO={DR.ToString}", Conn) '
Dim aff As Integer = Comm.ExecuteNonQuery
'MsgBox(aff)
Comm = Nothing
Next
For Each RR In ReplaceRecords
Comm = New System.Data.OleDb.OleDbCommand($"INSERT INTO DupeTbl ( CUST_NO, PREDIR, POSTDIR, SUFFIX, CUSTSIZE, AddFlag, IgnoreRecord ) VALUES ({RR.Cust_No}, '{RR.PreDir}', '{RR.PostDir}', '{RR.Suffix}', {RR.Size}, {RR.AddFlag}, {RR.Ignore});", Conn)
Comm.ExecuteNonQuery()
Comm = Nothing
Next
Conn.Close()