简单的VB 2010应用程序没有将数据保存到Access 2007

时间:2012-11-22 12:50:18

标签: database vb.net winforms ms-access-2007

我已经下载了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()
    
  3. 但是如果我关闭整个项目并重新运行它并查看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
    

    什么事?这些问题与试用版有关,还是有其他一些我应该注意的明显问题?

2 个答案:

答案 0 :(得分:1)

我曾经有同样的问题,我想我通过将我的数据源/数据库复制到输出目录设置为“如果更新则复制”来修复它,位于MyDatabase的属性窗口中.mdf文件。

有时该选项可以默认为“Always”,这解释了每次运行应用程序时数据集重置的原因。

答案 1 :(得分: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>