양식이로드 될 때 데이터 메시지 하위 폼에서이 코드를 실행 중이며 오류 메시지 또는 코드 나누기가 표시되지 않습니다. 내 debug.print 보여야 레코드 집합 rs 2131 레코드로 채워져 있어야하지만 내 양식 #Name 함께 단일 행을 보여줍니다? 모든 분야에서. 내 컨트롤의 컨트롤 소스 속성은 위에 나열된 필드 이름과 가장 일치합니다. RS는 양식 수준 변수이며 양식을 닫을 때까지 아무것도 닫지 않거나 설정하지 않습니다.메모리에서 독립 실행 형 연결이 끊긴 ADO 레코드
내가 뭘 잘못하고 있니?
Set rs = New ADODB.Recordset
rs.Fields.Append "TimesUsed", adInteger
rs.Fields.Append "strWorkType", adVarWChar, 150
rs.Fields.Append "DateLastUsed", adDate
rs.Fields.Append "SelectedYN", adBoolean
Set rs.ActiveConnection = Nothing
rs.CursorLocation = adUseClient
rs.LockType = adLockBatchOptimistic
rs.Open
Dim sSQL As String
sSQL = "MyComplicated SQL Statement Ommitted from this SO Question"
Dim r As DAO.Recordset
Set r = CurrentDb.OpenRecordset(sSQL, dbOpenDynaset, dbSeeChanges)
If Not (r.EOF And r.BOF) Then
r.MoveFirst
Dim fld
Do Until r.EOF = True
rs.AddNew
For Each fld In r.Fields
rs(fld.Name) = r(fld.Name).value
Next
rs.Update
r.MoveNext
Loop
End If
r.Close
Set r = Nothing
Debug.Print rs.RecordCount '2131 records
Set Me.Recordset = rs
OK, 그래서 난 그냥 this on the MSDN site 읽기 :
레코드 집합은 테이블의 기본 키처럼 고유하게 인덱싱 된 하나 개 이상의 필드를 포함해야합니다.
(주의 :이 정보는이 컨텍스트에서 잘못된 것 같습니다.)
이 작은 테이블 (4 개 필드) 후의 rstADO.MoveFirst & rstADO.MoveLast를 사용한다. 그러나 저는 기업용으로 개발할 필요가 없었습니다. 따라서 많은 양의 데이터 (10,000 개 이상의 레코드)를 데이터 시트 뷰로 가져 오는 것에 익숙합니다. 우리 서버에서 기가비트 이더넷과 빠른 하드 드라이브를 사용하면 DAO와 ODBC Linked Tables를 사용하고 있어도 사용자로부터 불만이 없습니다. 그래서, 저는 지금까지 "지금까지"실제로는 꽤 잘 작동한다고 말하고 있습니다. – HK1