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

VB6.0でデータベースの内容を更新するプログラムを作成しています。
1.データベースの内容をデータグリッドに読み込む
2.グリッドより1行を選択、レコードを新しくOpenしたダイアログに表示する。
3.ダイアログ内でレコードを修正・更新する。更新した内容をデータグリッドに反映させるため、グリッドのRefreshを行う。
4.ダイアログを閉じる。
とした場合、3のリフレッシュでブックマークの位置が変わってしまいます。

ブックマークを元通りに戻すため、2でブックマークの位置をバリアント型変数に退避し、4以降でブックマークを退避しておいた値に戻すようにしましたが、こうすると設定しなおしたブックマークの行がグリッドの先頭に表示されてしまい、ダイアログを開く前のグリッドとは違った表示になってしまいます。

FirstRowプロパティを使えば良いような気がしますが、FirstRowを単にストリング型変数を使って退避し、元に戻すわけではないようです。
(元に戻すときにエラーになります。)

FirstRowプロパティをうまく使われている方、ぜひご教示ください。
お願いいたします。


Public Sub Click_Mainte修正ボタン(Frm As Form, Dgd As DataGrid, AdoD As Adodc, NewFrm As Form)
Dim lngRow As Long
Dim strFirstRow As String
Dim varRow As Variant

On Error Resume Next
If Not Chk_Records(Dgd, Frm) Then GoTo Exit_
strFirstRow = Dgd.FirstRow
varRow = Dgd.Bookmark
Load NewFrm
NewFrm.Show vbModal
AdoD.Refresh
Dgd.Bookmark = varRow
Dgd.FirstRow = strFirstRow  '「ブックマークの値が不正です」エラーになってしまう。
Exit_:
On Error GoTo 0
End Sub

A 回答 (1件)

Refresh後に Bookmark > FirstRowの順に処理するのではなく、FirstRow > BookMarkの順に処理すればいいようですよ



FirstRowの復元は FirstRowに代入するのではなく、Bookmarkに代入してやるようにしてみましょう
保存しておく FirstRowはVariant型のほうがよさそうです

AdoD.Refresh
Dgd.Bookmark = varFirstRow
Dgs.Bookmark = varRow
    • good
    • 0
この回答へのお礼

せっかく回答くださったのに、気づくのが大変遅れ、申し訳ございませんでした。
質問してから1ヶ月近く経ったというのに、データグリッドの部分は半分あきらめてそのままにしておりました。

早速試してみたところ、思い通りの動作になりました!
ほんとうにありがどうございました。

お礼日時:2006/12/21 14:24

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