アプリ版:「スタンプのみでお礼する」機能のリリースについて

Set inrec3 = CurrentDb.OpenRecordset("テーブル名")
でオープンして1レコードづつ読みたいのですが
上記の方法では、データが多いため(2万件ちょっと)
フリーズしてしまいます
そこでもっと単純にOpenする方法はないでしょうか
テキストファイルのオープンだと
今度は、フィールドの取り出しがやっかいかな
と思うのですが
よろしくおねがいします

A 回答 (2件)

質問自体に疑義があります。


そもそも、2万件のレコードセットをオープンしたらフリーズするようでいたらデータベースアプリケーションが組めないと思いますが?
ということは、原因はレコードセット以外にあるのではと思われますが...
    • good
    • 0
この回答へのお礼

回答ありがとうございます
ご指摘のとおり、フリーズはなおりました
原因がわからないうちにできてしまって
 理由は書けませんが
ありがとうございました

お礼日時:2006/02/23 08:47

久しぶりにDAOを使ってみたので外しているかもしれませんが



Sub aaa()

Dim db As Database
Dim inrec3 As DAO.Recordset
Dim i As Long

Set db = CurrentDb
Set inrec3 = db.OpenRecordset("TEST")

Do Until inrec3.EOF

i = i + 1
If i Mod 100 = 0 Then
Debug.Print i, inrec3!XXX
DoEvents
If i = 30000 Then Exit Sub
End If

inrec3.MoveNext

Loop

inrec3.Close
Set inrec3 = Nothing

Set db = Nothing

End Sub

試しにやってみました。
200万件のレコードで30,000回ループ
何も問題ありませんでした。

気になったことですが、
(1)Set inrec3 = CurrentDb.OpenRecordset("テーブル名")
とせずに、"Select * From テーブル名 Where Field1 > 1000 " 見たいに
SQL文でくくれないでしょうか。
全レコードを読まなければならないのならば別ですが
(2)DoEventsを入れて見たらどうでしょうか。
    • good
    • 1
この回答へのお礼

回答ありがとうございました
試みてみます

お礼日時:2006/02/22 17:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A