그래서 "Open Date"범주에서 "End Date"범주로 파트를 이동하면 데이터베이스의 테이블에 대한 변경 내용을 추적하려고합니다. 이미 데이터 업데이트를 위해 비슷한 계획을 구현했지만 어떤 이유로이 작업을 수행 할 수 없습니다. 내가 알 수있는 한 오류가 나타나지 않습니다. 나는 또한 모든 RS를 확인했다! 값이 올바르게 당겨지고 있습니다.Access 2007에서 Recordset.Update에 데이터가 추가되지 않는 이유
코드 :
Dim SQL as String
Dim rs As DAO.RecordSet
Dim Connection As ADODB.Connection
Dim TS As Date
'Record in change history
DoCmd.Requery ("SelectedQry")
RunCommand acCmdSaveRecord
'Qry with relevant parts
Set rs = CurrentDb.OpenRecordset("SelectedQry", dbOpenDynaset)
Set Connection = CurrentProject.Connection
Set RecordSet = New ADODB.RecordSet
'This is the table I wish to save data into
RecordSet.Open "SELECT * FROM [Change History]",Connection,adOpenDynamic, adLockOptimistic
rs.MoveFirst
USRID = Environ("Username")
UsrInfoSt = "NAME"
If Not (rs.EOF And rs.BOF) Then
Do Until rs.EOF = True
'This is where it should be recording the tracking data but it isn't
With RecordSet
.AddNew
![Part Number] = rs![Part Nbr]
![Record Identifier] = rs![Concatenate]
![Rep] = UsrInfoSt
![Time Stamp] = TS
![Change Point] = "End Dated"
![Change From] = "Open Date"
![Change To] = "End Dated"
![Part Group Nbr] = rs![Part Group Nbr]
![Change Cluster] = Clstr
.Update
End With
UpdateClstr 'Increment Change counter Clstr
rs.MoveNext
Loop
End If
'These are the queries that actually move the data and it appears to be fine
SQL = "INSERT INTO [Deleted Parts] SELECT SelectedQry.* FROM SelectedQry;"
CurrentDb.Execute SQL
SQL = "UPDATE [Deleted Select Table] INNER JOIN [Deleted Parts] ON
[Deleted Select Table].Concatenate = [Deleted Parts].Concatenate SET
[Deleted Parts].[Date Deleted] = """ & Now() & """ WHERE (([Deleted
Select Table].[Select]=True));"
CurrentDb.Execute SQL
SQL = "DELETE [Part Number].* FROM [Select Table] INNER JOIN [Part
Number] ON [Select Table].Concatenate = [Part Number].Concatenate WHERE
[Select Table].[Select] = True;"
CurrentDb.Execute SQL
SQL = "UPDATE [Deleted Select Table] INNER JOIN [Deleted Parts] ON
[Deleted Select Table].Concatenate = [Deleted Parts].Concatenate SET
[Deleted Select Table].[Select] = False WHERE ((([Deleted Select Table].
[Select])=True));"
CurrentDb.Execute SQL
오류 메시지가 표시되지 않는 유일한 이유는 if 문으로 전달되지 않기 때문에 코드가 작동하지 않는다는 느낌이 들기 때문입니다. 당신의'If Not (rs.EOF와 rs.BOF) Then' 안에 메시지 박스를 넣고 거기에 도착하는지보십시오. – Newd
메시지 상자가 뜹니다. 그리고'With' 내부에'Debug.Print' 라인이있어서 rs에서 오는 데이터가 정확하고 모두 잘 작동하는지 확인했습니다. – 110SidedHexagon
코드에서 아무 곳이나'DoCmd.SetWarnings False'를 가지고 있습니까 --- 우리가 보여준이 코드 샘플뿐 아니라이 프로젝트에 포함 된 코드 중 어느 곳에도 있습니까? – HansUp