none
圖元資料更新至Access adp1.Update(DS, "Monitoring")產生錯誤 RRS feed

  • 問題

  • 這是我的指令碼

    目前已可以新增資料入資料庫內

    想做另一個from為單筆更新資料且不附蓋原資料

    不知道錯在哪裡

    請幫幫忙~

    '連接資料庫
            Dim str As String = "Provider=Microsoft.ACE.Oledb.12.0;Data source=C:\test0607\Monitoring.accdb"
            Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(str)
            conn.Open()

            Dim elm As Element

            elm = App.CommandState.GetLocatedElement(True)
            If elm Is Nothing Then
                MsgBox("Please select one element first")
                Exit Sub
            End If

            Dim Id As Integer
            Id = App.DLongToLong(elm.ID)


            Dim adp1 As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter("Select * From Monitoring", conn)
            Dim DS As DataSet = New DataSet
            adp1.Fill(DS, "Monitoring")

            '指定 InsertCommand 屬性
            Dim str1 As String = "Update Monitoring(Fieldvalue, Day, Time) values ('" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "')"
            adp1.InsertCommand = New OleDb.OleDbCommand(str1, conn)


            'Dim DS As New DataSet()

            Dim myTable As DataTable = DS.Tables("Monitoring")

            '新增資料列
            Dim myRow As DataRow = myTable.NewRow
            myRow("ElementID") = Id
            myRow("Fieldvalue") = TextBox2.Text
            myRow("Day") = TextBox3.Text
            myRow("Time") = TextBox4.Text

            '將 DataSet 物件的資料更新到來源資料
            myTable.Rows.Add(myRow)

            adp1.Update(DS, "Monitoring")

            MsgBox("OK")

        End Sub

    2012年8月28日 上午 07:15

解答

  • 你拿 INSERT 語法來寫 UPDATE ...

    UPDATE 裡面有 SET


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年8月28日 下午 02:50

所有回覆

  • 想做另一個from為單筆更新資料且不附蓋原資料

    1. 我看不懂這句話,要更新又不要覆蓋資料,這是什麼道理?

    2. 有錯誤訊息嗎?

    2012年8月28日 下午 01:56
  • Dim str1 As String = "Update Monitoring(Fieldvalue, Day, Time)

    values ('" & TextBox2.Text & "',

    '" & TextBox3.Text & "',

    '" & TextBox4.Text & "')"

    提醒一下,我沒有看到任何保護。

    http://blog.kkbruce.net


    • 已編輯 KKBruceMVP 2012年8月28日 下午 01:59 斷行
    2012年8月28日 下午 01:58
  • 你拿 INSERT 語法來寫 UPDATE ...

    UPDATE 裡面有 SET


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年8月28日 下午 02:50
  • 不好意思,第一次發問問的不是很好

    想到的更新是同一個圖元所存於資料庫的資料是以累加的方式存於資料庫想留有歷史資料

    因為不懂UPDATE的語法所以只將INSERT語法改了一下

    至於錯誤訊息則是顯示insert語法錯誤

    2012年8月30日 上午 06:33
  • 不好意思我第一次發問不懂得該怎麼問比較好真的很抱歉我會在江UPDATE的語法修改試試看
    2012年8月30日 上午 06:34
  • 因為你沒看 Access 所提供的線上手冊。

    UPDATE 陳述式

    建立一個更新查詢以變更基於特定準則的特定資料表中的欄位值。

    語法

    UPDATE table
    SET newvalue
    WHERE criteria;

    UPDATE 陳述式可分為以下幾個部份:

    部份 敘述
    table 在其中包含了您要修改的資料的資料表名稱。
    newvalue 一個運算式用以決定在更新記錄中要插入在特定欄位的值。
    準則 一個運算式用以決定要被更新的記錄。 只有滿足運算式條件的計錄才會被更新。

    註解

    當您要變更多個記錄,或您要變更的記錄在多重資料表之中時,UPDATE 是非常有用的。

    您可以同時變更多個欄位。 下列範例為對在英國的一家貨運公司以 10 個百分比增加訂單數量值,及以 3 個百分比增加貨運值:

    UPDATE Orders

    SET OrderAmount = OrderAmount * 1.1,

    Freight = Freight * 1.03

    WHERE ShipCountry = 'UK';


    重點

    • UPDATE 不產生結果資料集。 並且,當您使用更新查詢更新記錄之後,便無法復原這項作業。 如果您想知道哪些記錄已被更新,首先檢驗使用相同準則的選取查詢結果,然後執行更新查詢。
    • 隨時將您的資料作維護複製備份。 如果您更新了錯誤的記錄,可以從您的備份中救回這些資料。
    請參閱
    SELECT 陳述式 (Microsoft Jet SQL) WHERE 子句 (Microsoft Jet SQL)

    範例

    UPDATE 陳述式範例


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年8月30日 下午 02:40