none
VB 2005 與 Access ,發行後無法產生結果 RRS feed

  • 問題

  • 我開了一個datagridview

    並拉了一個dataset

    試著想與一個access檔案連結

    動作是,按一個按鈕,便搜尋裡面company_file資料表裡的name行

    找尋開頭為a的公司並秀在combobox上面

    偵錯沒有問題,在vb內使用也可以成功,但是發行後再打開卻搜尋失敗

    我想是因為某些設定沒有設定好,但卻又不知道該設定什麼,可否請教一下。

    Imports System.Data
    Imports System.Data.OleDb

    Public Class Form6

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Try
                Dim connDbStr As String
                connDbStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =../../data.mdb;"
                connDbStr = connDbStr & "Jet OLEDB:Database Password=12345"

                Dim conn As OleDbConnection = New OleDbConnection(connDbStr)
                conn.Open()

                Dim SQLCommand As String ="select * from company_file WHERE name Like 'a%'"
               
                Dim da As OleDbDataAdapter = New OleDbDataAdapter(SQLCommand, conn)

                da.Fill(Datagrid.DataSet1, "company_file")

                Datagrid.DataGridView1.DataSource = Datagrid.DataSet1.Tables("company_file").DefaultView


                '--------------------------------------------------------------------------
                '   Get griddata to Combobox
                '--------------------------------------------------------------------------
                Dim count As String = Datagrid.DataGridView1.RowCount
                Dim dig As Integer
                For dig = 0 To count - 2 Step 1
                    Me.ComboBox1.Items.Insert(dig, Datagrid.DataGridView1.Rows(dig).Cells(1).Value)
                Next dig

     

                conn.Close()
                conn.Dispose()
                da.Dispose()
                Datagrid.DataSet1.Dispose()

                Datagrid.Show()

            Catch ex As Exception

                MsgBox("此公司不存在")
           

            End Try
        End Sub

    End Class

    2006年10月5日 上午 06:02

解答

  • 你要去檢查你發行的設定,看 Access 資料庫檔案是否和可執行檔位置不一致 .
    2006年10月11日 上午 06:24
    版主

所有回覆

  • 你是用 ClickOnce 發行嗎?
    2006年10月5日 上午 06:19
  • 我不清楚什麼是clickonce耶

    我用發行精靈...^^"

     

    2006年10月5日 上午 06:27
  • :::.mdb檔案的路徑是否正確???是否可以存取的到???,可以在程式裡

    除了用Exception之外,再加個OleDbException!!!

            Try
                '程式內容
            Catch ex As OleDbException
                MessageBox.Show(ex.Message)
            Catch ex As Exception
                MsgBox("此公司不存在")
            End Try

    2006年10月6日 上午 02:11
  • @@ 加了之後的確發現找不到路徑

    那就是發行後該檔案沒有跟著一起變更路徑!?

    本來檔案在a路徑

    發行後錯誤訊息是"在b路徑找不到檔案"

    意味著應該要做什麼動作讓檔案會隨著發行的動作而變更路徑...

    那應該要做什麼呢@@"

     

    2006年10月9日 上午 01:46
  • 你的應用程式應該要能夠隨著安裝路徑不同而所有改變,例如你的這一行:

    connDbStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =../../data.mdb;"

    你可以改成:

    connDbStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =” + Application.StartupPath + ”\data.mdb”

    或是:

    connDbStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Environment.CurrentDirectory + "\data.mdb;"

    2006年10月9日 上午 02:23
    版主
  • :::小朱大大,是Environment.CurrentDirectory ,不是Envrionment.CurrentDirectory .........^^''

    2006年10月9日 上午 02:37
  • 打太快打錯了 = =....
    2006年10月9日 上午 04:29
    版主
  • 不好意思...我都試了但還是不行

    請問該檔案需要加進"方案總管"內嗎

    還是該做什麼連結之類的(我所做的只有開一個access檔在預定的路徑內)

    謝謝~~

    2006年10月9日 上午 06:13
  • :::你的路徑寫法是否有照小朱大大的方式來寫???

    2006年10月9日 下午 01:23
  • 有耶...

    兩個都試過了

    兩個都偵錯都會過,都可以在vb中執行

    只是發行後就不行了

     

    2006年10月11日 上午 01:10
  • 你好:

    你的access檔案有沒有放進方案總管裡??

    有的話:connDbStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =” + Application.StartupPath + ”\data.mdb”或是:connDbStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Environment.CurrentDirectory + "\data.mdb;"

    應該是可以正常連結

    如果沒有的話,發行後要自行copy access檔案至安裝的電腦,並且須使用絕對路徑!!

     

    2006年10月11日 上午 03:20
  • 我發現其實該Access檔案有隨著發行,安裝,存在著

    只是還是會有錯誤訊息...原因是...

    他發行安裝後的路徑,跟錯誤訊息裡的路徑不一樣

    錯誤訊息:

    ....\Apps\2.0\3V3A8LRW.99Q\TH3CV3YT.5EH\palf...tion_232...  中找不到檔案

    但我發現其實檔案在另一個資料夾,而且就在隔壁的資料夾:

    ....\Apps\2.0\3V3A8LRW.99Q\TH3CV3YT.5EH\palf...exe_232...

     

    所以檔案是存在的,只是路徑不一樣@@ 

    我的方案總管也放了該檔案,然後發行...不知道怎麼樣才能將該檔案弄到預期的檔案夾裡 

    (不要是用手動的貼過去@@")

     

    2006年10月11日 上午 03:52
  • 你要去檢查你發行的設定,看 Access 資料庫檔案是否和可執行檔位置不一致 .
    2006年10月11日 上午 06:24
    版主
  • ok了

    我調了 發行 -> 應用程式檔案 -> 發行狀態

    把"資料檔案" 調成 "包含"

    不過我不知道為什麼@@"

    但可行就是了...謝謝各位

     

    2006年10月11日 上午 08:28