我做了一個MS Access數據庫(舊XP版本),用於無縫工作。微軟Access DAO記錄集更新不起作用
我不得不添加一個例程來將一些數據從表格移動到另一個表格,並編寫了一個函數來執行此操作。 我一直使用的方法是使用動態記錄集(或動態集),但這次它不起作用。 該流程正確打開動態集,查找並將數據從一個記錄集複製到另一個記錄集,但是.update完成時,原始表中沒有任何內容出現。
我使用DAO 3.60。
這裏的(總結)代碼:
On Error Resume Next
Dim rstDoc As Recordset
Dim rstAdd As Recordset
Dim rstDocEmessi As Recordset
Dim rstAddDocEmessi As Recordset
Dim Incassato As Integer
Set rstDoc = CurrentDb.OpenRecordset("Documenti", dbOpenSnapshot)
Set rstDocEmessi = CurrentDb.OpenRecordset("TS_DocumentiEmessi", dbOpenDynaset)
Set rstAdd = CurrentDb.OpenRecordset("Addebiti", dbOpenDynaset)
Set rstAddDocEmessi = CurrentDb.OpenRecordset("TS_Addebiti_DocumentiEmessi", dbOpenDynaset)
numDoc = Forms!TS_SceltaStampa!IdDocumento
With rstDocEmessi
rstDocEmessi.AddNew
rstDocEmessi!IdDocOriginale = rstDoc!IdDocumento
rstDocEmessi!Data = rstDoc!Data
rstDocEmessi![#Fattura] = rstDoc![#Fattura]
...
rstDocEmessi!TS_Opposizione = rstDoc!TS_Opposizione
rstDocEmessi!TS_DataPagamento = rstDoc!TS_DataPagamento
rstDocEmessi!IsIncassato = (IIf(Incassato = vbYes, True, False))
rstDocEmessi!IsImportatoInSospesi = False
rstDocEmessi.Update
rstDocEmessi.Close
' Copia Addebiti
If Not (rstAdd.EOF And rstAdd.BOF) Then
rstAdd.MoveFirst
Do Until rstAdd.EOF = True
If rstAdd!Documento = numDoc Then
rstAddDocEmessi.AddNew
rstAddDocEmessi!IdAddebito = rstAdd!IdAddebito
rstAddDocEmessi!Documento = rstAdd!Documento
...
rstAdd!TS_TipoSpesa
rstAddDocEmessi!Calcola = rstAdd!Calcola
rstAddDocEmessi!Totale = rstAdd!Totale
rstAddDocEmessi.Update
End If
rstAdd.MoveNext
Loop
End If
rstAddDocEmessi.Close
rstAdd.Close
TS_Registra = True`
你爲什麼要移動記錄?可能使用INSERT SELECT sql操作語句而不是操作記錄集。 – June7
除了這種方法(記錄集vs sql),你是否在我的語法中看到錯誤?順便說一下,我同意你的觀點,並且我習慣在其他環境中使用SQL(PHP <->MySQL),但是在Access中使用記錄集的方式通常會給我更多的控制權,特別是在調試情況下...... – Versatile
Documenti過濾到單個記錄的查詢? Incassato已宣佈但未設置。沒有看到記錄集操作有什麼問題。 – June7