ACCESSからデータを抽出してテキストに表示させて次のレコードに進もうとしたら
カレントレコードがありませんとなります。
100件中50件目を抽出したとして次ボタンを押すと51件目〜に進みたいのですが
無理なんでしょうか?
Private Sub Command8_Click()
Table.MoveNext
Text1 = Table(0)
Text2 = Table(1)
Text3 = Table(2)
Text4 = Table(3)
END Sub
漠然としすぎてアドバイスしづらいのですが、要はレコード数が1ページ当りの表示より少ない場合の処理の事でしょうか?
乱暴なやり方ですが、ページング処理の頭でテキストを全部クリアしておいて、テキストに転送する前にレコードがEOFか?を検出し (IF Rs.EOF = True 等)
レコードが無いなら処理を中断すればよいのではないでしょうか。
抽出して表示させたので全100件あるのに抽出した件数しかみてくれないよう
なんです。
よって抽出した件数が2件ならば次のレコードは1件しかないんです
抽出したレコードが50件目ならば次は51件目〜を表示させたいのですが
SQL文を使ってレコードセットに抽出されているのであれば
必要な時に再度SQL文を実行して内容を更新しないと駄目でしょう。
抽出が終了した時点でレコードポインタがEOF付近を指してるんじゃないでしょうか?、お使いのインターフェイスが何か分かりませんので正しいかどうか分かりませんけど。
前ページの最後に抽出したレコードの次にレコードポインタを移動させてから再度次ページ分の抽出をしてみてはどうでしょうか?。
Sarchi = "select * From 送付先マスタ Where 会社名 ='" & Text15 & "' OR 漢字氏名 ='" & Text16 & "'"
Set Table = db.OpenRecordset(Sarchi, dbOpenDynaset)
Text1 = Table(0)
Text2 = Table(1)
Text3 = Table(2)
Text4 = Table(3)
Private Sub Command8_Click() ’次へボタン
Table.MoveNext
Text1 = Table(0)
Text2 = Table(1)
Text3 = Table(2)
Text4 = Table(3)
END Sub
こんな感じなんですがポインタというのはどこにつければよいのでしょうか
すみませんSQLは分からないんです(^^;
予測ですけど、最初の処理で条件に当てはまる全てのレコードはすでに抽出されているって事ですよね?(Tableには抽出レコードが全部入ってるんでしょ?)
以下のように変更すると上手くいくような気が・・・
(ちなみにコンパイルチェックしてないので綴りミスはカンベソ)
'プロシージャーの外で静的変数を用意しましょう
Private RecOfs as Long
'抽出処理するとこに
RecOfs= 0 'を追加
Private Sub Command8_Click() ’次へボタン
' Table.MoveNext
ON ERROR GOTO NoRec '乱暴ですが・・・
Text1 = Table(0 + RecOfs)
Text2 = Table(1 + RecOfs)
Text3 = Table(2 + RecOfs)
Text4 = Table(3 + RecOfs)
RecOfs = RecOfs + 4 '1ページに表示するレコード分足す
ON ERROR GOTO 0
EXIT SUB
NoRec:
ON ERROR GOTO 0
MsgBox "以上です",VbOkOnly
END Sub
ありがとうございます
ツイート | ![]() |