2015-01-29 4 views
0

그래서 "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 
+0

오류 메시지가 표시되지 않는 유일한 이유는 if 문으로 전달되지 않기 때문에 코드가 작동하지 않는다는 느낌이 들기 때문입니다. 당신의'If Not (rs.EOF와 rs.BOF) Then' 안에 메시지 박스를 넣고 거기에 도착하는지보십시오. – Newd

+0

메시지 상자가 뜹니다. 그리고'With' 내부에'Debug.Print' 라인이있어서 rs에서 오는 데이터가 정확하고 모두 잘 작동하는지 확인했습니다. – 110SidedHexagon

+0

코드에서 아무 곳이나'DoCmd.SetWarnings False'를 가지고 있습니까 --- 우리가 보여준이 코드 샘플뿐 아니라이 프로젝트에 포함 된 코드 중 어느 곳에도 있습니까? – HansUp

답변

0

나는 당신이 당신의 레코드 가능성이 페이지를 새로 고침해야 할 수도 있다고 생각한다. 재 시도를 시도하십시오.

+0

.Requery를 'With RecordSet'의 시작과 끝에 넣으려고 시도하고 관련된 모든 테이블을 다시 쿼리하려고 시도했지만 차이가없는 것으로 보입니다. – 110SidedHexagon

관련 문제