none
請問 update 的語法,for access db RRS feed

  • 問題

  • 請問我要更新access的db的資料時...都會發生錯誤..是不是我的方法錯了

    這段程式用在 select 和instert都沒問題...sql語法也沒錯...

    執行後...紅色這段會出現以下錯誤

    NullReferenceException 未處理

    並未將物件參考設定為物件的執行個體

     

    Dim strPath As String = "D:\123.mdb"
            Dim m_Adapter As System.Data.Odbc.OdbcDataAdapter
            Dim strProvider As String = "Driver={Microsoft Access Driver (*.mdb)}; dbq=" & strPath & ";"
            Dim strUpdate As String = "UPDATE Repair SET F_Qution = '" & TextBox4.Text & "',Approach = '" & TextBox3.Text & "',F_Date = '" & DateTimePicker1.Value & "',Remark_2 = '" & TextBox2.Text & "' WHERE R_No = '" & DG1.CurrentRow.Cells(0).Value & "'"

            m_Adapter = New System.Data.Odbc.OdbcDataAdapter(strUpdate, strProvider)

            m_Adapter.UpdateCommand.Connection.Open()

            Dim nLine As Integer = m_Adapter.UpdateCommand.ExecuteNonQuery()

            m_Adapter.UpdateCommand.Connection.Close()

    2008年2月18日 上午 03:48

解答

  • 小朱大大..還是會出現錯誤耶..

    綠色是照大大修改的..

    但執行到紅色部份就出現以下錯誤訊息

    OdbcException 未處理

    ERROR [22018] [Microsoft][ODBC Microsoft Access Driver] 準則運算式的資料類型不符合。

     

           Dim strPath As String = "D:123.mdb"
            Dim m_Adapter As System.Data.Odbc.OdbcDataAdapter
            Dim strProvider As String = "Driver={Microsoft Access Driver (*.mdb)}; dbq=" & strPath & ";"
            Dim strUpdate As String = "UPDATE Repair SET F_Qution = '" & TextBox4.Text & "',Approach = '" & TextBox3.Text & "',F_Date = '" & DateTimePicker1.Value & "',Remark_2 = '" & TextBox2.Text & "' WHERE R_No = '" & DG1.CurrentRow.Cells(0).Value & "'"

            m_Adapter = New System.Data.Odbc.OdbcDataAdapter(strUpdate, strProvider)
            m_Adapter.UpdateCommand = New OdbcCommand(strUpdate, m_Adapter.SelectCommand.Connection)

            m_Adapter.UpdateCommand.Connection.Open()

            Dim nLine As Integer = m_Adapter.UpdateCommand.ExecuteNonQuery()

            m_Adapter.UpdateCommand.Connection.Close()

    2008年2月18日 上午 05:23

所有回覆

  • 你的用法很奇怪。

    Update 的指令你放到 Select 去(我想你 INSERT 也是這樣做)。

     

    Code Snippet

    Dim strPath As String = "D:\123.mdb"
    Dim m_Adapter As System.Data.Odbc.OdbcDataAdapter
    Dim strProvider As String = "Driver={Microsoft Access Driver (*.mdb)}; dbq=" & strPath & ";"

    Dim strUpdate As String = "UPDATE Repair SET F_Qution = '" & TextBox4.Text & "',Approach = '" & TextBox3.Text & "',F_Date = '" & DateTimePicker1.Value & "',Remark_2 = '" & TextBox2.Text & "' WHERE R_No = '" & DG1.CurrentRow.Cells(0).Value & "'"

     

    m_Adapter = New System.Data.Odbc.OdbcDataAdapter(strUpdate, strProvider)

     

    m_Adapter.UpdateCommand = new OdbcCommand(strUpdate, m_Adapter.SelectCommand.Connection);

     

    m_Adapter.UpdateCommand.Connection.Open()

     

    Dim nLine As Integer = m_Adapter.UpdateCommand.ExecuteNonQuery()

    m_Adapter.UpdateCommand.Connection.Close()

     

     

     

     

    2008年2月18日 上午 04:03
    版主
  • 嗯..對..沒錯..我insert 也是這樣做

    因我不會寫程式...都是那範例來改..

    那請問小朱大大...我應該要怎麼寫才對呢

    可否教我呢??

     

    2008年2月18日 上午 05:06
  • 我不是已經在回覆中寫了嗎?

     

    2008年2月18日 上午 05:10
    版主
  • 小朱大大..還是會出現錯誤耶..

    綠色是照大大修改的..

    但執行到紅色部份就出現以下錯誤訊息

    OdbcException 未處理

    ERROR [22018] [Microsoft][ODBC Microsoft Access Driver] 準則運算式的資料類型不符合。

     

           Dim strPath As String = "D:123.mdb"
            Dim m_Adapter As System.Data.Odbc.OdbcDataAdapter
            Dim strProvider As String = "Driver={Microsoft Access Driver (*.mdb)}; dbq=" & strPath & ";"
            Dim strUpdate As String = "UPDATE Repair SET F_Qution = '" & TextBox4.Text & "',Approach = '" & TextBox3.Text & "',F_Date = '" & DateTimePicker1.Value & "',Remark_2 = '" & TextBox2.Text & "' WHERE R_No = '" & DG1.CurrentRow.Cells(0).Value & "'"

            m_Adapter = New System.Data.Odbc.OdbcDataAdapter(strUpdate, strProvider)
            m_Adapter.UpdateCommand = New OdbcCommand(strUpdate, m_Adapter.SelectCommand.Connection)

            m_Adapter.UpdateCommand.Connection.Open()

            Dim nLine As Integer = m_Adapter.UpdateCommand.ExecuteNonQuery()

            m_Adapter.UpdateCommand.Connection.Close()

    2008年2月18日 上午 05:23
  • 那是 SQL 指令有問題,自己查查吧。

    2008年2月18日 上午 05:48
    版主
  • 把你這時的 SQL 內容貼出來

    Debug.Print(strUpdate) 然後在輸出視窗找。

     

    比對每個欄位資料庫的型別,比如說數字應該是 No=3 而不是 No='3' ,這樣你就可以找到問題了。

     

    2008年2月18日 上午 06:28
    版主
  •  

    可以了,謝謝各位大大

    萬分感謝

    2008年2月18日 上午 07:27