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
No.1ベストアンサー
- 回答日時:
Refresh後に Bookmark > FirstRowの順に処理するのではなく、FirstRow > BookMarkの順に処理すればいいようですよ
FirstRowの復元は FirstRowに代入するのではなく、Bookmarkに代入してやるようにしてみましょう
保存しておく FirstRowはVariant型のほうがよさそうです
AdoD.Refresh
Dgd.Bookmark = varFirstRow
Dgs.Bookmark = varRow
せっかく回答くださったのに、気づくのが大変遅れ、申し訳ございませんでした。
質問してから1ヶ月近く経ったというのに、データグリッドの部分は半分あきらめてそのままにしておりました。
早速試してみたところ、思い通りの動作になりました!
ほんとうにありがどうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エラーの意味は? Lvalue req...
-
VBAでダブルコーテーション入り...
-
EXCEL/VBA 変数の値をクリップ...
-
C言語 列挙型(enum型)変数について
-
processing エラーで、 "cannot...
-
テキストボックスの値を変数に...
-
umu *= 2;てどんな意味があるの...
-
[VBS]変数を定数に変換する方法...
-
【VBA】複合代入演算子
-
7行テトリスコードで分からな...
-
datagridviewに行...
-
Variant型で宣言してるのにEmpt...
-
整数xxxが大き過ぎますというエ...
-
i++と++i ってどう違うのですか?
-
画像のプログラムに関して質問...
-
C言語(高校1年の内容)について
-
Java認定試験3級の問題です。 ...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
エクセルへのデータの貼付時に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
C言語 列挙型(enum型)変数について
-
EXCEL/VBA 変数の値をクリップ...
-
整数xxxが大き過ぎますというエ...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
Variant型で宣言してるのにEmpt...
-
jsp~jspにhiddenを使って変数...
-
processing エラーで、 "cannot...
-
python の 連鎖代入の文法
-
i++と++i ってどう違うのですか?
-
プログラミングで変数と関数の...
-
C言語 アロー演算子について質...
-
「%」を使って、偶数か奇数かを...
-
JavaScriptをURLから直接実行し...
-
VBA 1行で複数の代入を行った...
-
ExcelのVBAでをA列に第0〜19項...
-
無名関数のメリットがよくわか...
-
コマンドプロンプト バッチ|結...
おすすめ情報