2

VB 2010 の試用版をダウンロードし、Access 2007 MDB ファイルに接続する小さなアプリケーションを作成しました。

いくつかのことがうまくいかない:

  1. 公開して、生成されたセットアップ ファイルを実行しようとすると、.MDB ファイルが見つからないと表示されます。

  2. 開発中に実行すると (F5)、正常に動作し、DataGridView に新しいデータを入力すると、セッションを閉じて再度 F5 を押すと、新しく入力されたデータがまだ存在するため、保存されることがわかります。(データを更新するための関連コードは十分に単純です):

    Me.Validate()
    Me.MenuItemsBindingSource.EndEdit()
    Me.MenuItemsTableAdapter.Update(Me.MenuOrdersDataSet.MenuItems)
    Me.MenuOrdersDataSet.AcceptChanges()
    

しかし、プロジェクト全体を閉じて再実行し、DataGridView を表示するか、手動で .MDB ファイルをチェックアウトすると、新しく入力されたデータがなくなります。

これは私の接続コードです:

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.MenuItemsTableAdapter.Fill(Me.MenuOrdersDataSet.MenuItems)
    Dim con As New OleDb.OleDbConnection
    Dim dbString As String
    Dim ds As New DataSet
    Dim da As OleDb.OleDbDataAdapter
    Dim sql As String

    dbString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\MenuOrders.accdb"

    con.ConnectionString = dbString
    con.Open()

    sql = "SELECT * FROM MenuItems"
    da = New OleDb.OleDbDataAdapter(sql, con)
    da.Fill(ds, "MenuItems")
    con.Close()

End Sub

どうしたの?これらの問題は試用版を持っていることに関連していますか、それとも私が知っておくべき明らかな問題は他にありますか?

4

2 に答える 2

1

以前は同じ問題を抱えていましたが、MyDatabase.mdf ファイルのプロパティ ウィンドウにあるデータ ソース/データベースの [出力ディレクトリへのコピー] を [新しい場合はコピー] に設定することで修正したと思います。

このオプションは、アプリケーションを実行するたびにデータ セットがリセットされる理由を説明する "Always" にデフォルト設定される場合があります。

于 2012-11-22T13:15:02.290 に答える
1

最後に、それを修正するために次のことを行いました。

ソリューション エクスプローラーで App.config を開き、データベースへの絶対パスをconnectionStringsタグに挿入して、既定の|DataDirectory|テキストを置き換えました。

これが最善かどうかはわかりませんが、うまくいきました!

<connectionStrings>
    <add name="MenuSystem.My.MySettings.MenuDBConnectionString" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Administrator\Documents\MenuDB.accdb"
        providerName="System.Data.OleDb" />
</connectionStrings>
于 2012-11-22T18:05:37.463 に答える