フォームがロードされ、エラーメッセージやコード区切りが表示されないときは、このコードをデータシートのサブフォームで実行しています。私のdebug.printは、Recordset rsが2131レコードであるはずですが、私のフォームが#Nameの1行を表示していることを示していますか?すべての分野で私のコントロールのコントロールソースプロパティは、私が上に挙げたフィールド名と最もよく一致します。 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をお読みください。
レコードセットは、テーブルの主キーとして一意インデックス化されている1つ以上のフィールドを、含まれている必要があります。
(注:この情報は、この文脈では誤っていると思われます。)
後rstADO.MoveFirst & rstADO.MoveLastを使用します。しかし、企業向けに開発する必要はありませんでしたので、大量のデータ(10,000レコード以上)をデータシートビューに取り込むことに慣れています。私たちがODBC Linked TableでDAOを使用しているにもかかわらず、私たちのサーバーにGigabit Ethernetと高速ハードドライブを使用しても、ユーザーからの苦情はありません。だから、私は今のところ、「これまで」実際にはかなりうまくいっていると言っているほど私のアプローチを賛成ではない。 – HK1