DataGridでVBが落ちてしまうのですが。


PERSIMO  2005-03-21 21:34:44  No: 120362

宜しくお願いいたします。

VB6.0(SP6)、XPProでプログラミングをしております。
現在、DataGridを使って、Accessのデータを読み込むための
作業をしているのですが、画面上のDatagrid範囲内のセル以外の部分で
スクロールボタンを利用してデータ表示させようとすると、8割位の確率でVBがダウンしてしまいます。

コードによって、ダウンを防ぐ事は可能でしょうか。
また、これはMS製品の仕様であって、どうにもならないものなのでしょうか。

教えていただけると幸いです。


・・・  2005-03-21 22:29:46  No: 120363

これだけでは、あなたのプログラムに問題があるとは言い切れません。


PERSIMO  2005-03-22 21:57:24  No: 120364

回答有り難うございます。
返事が遅れて申しわけ有りません。

ちょっとわかりにくかったので、ご説明させていただくと
以下のような状況でDataGridを利用しています。

1.VBのFormにDataGridを貼り付けています。
2.DataGrid内のデータは、数が多く、当然スクロールしなければ、
全データを表示できません。
3.データ上をマウスでスクロールさせる分については、問題ありません。
4.但し、最終行を超えても、マウスでスクロールさせると、VB自体がエラーを返して、ダウンしてしまいます。

┌——————————————————┐
|DATAGRID_DATAGRID↑|
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID↓|
|___DATAGRID終わり____|
|                                    |
|                                    |
|      この部分でスクロール          |
|                                    |
└——————————————————┘

上記のDataGridのデータ範囲外、(データ部分ではなく、スクロール後のグレーの部分)でマウスのスクロール機能を利用すると、(しかも縦スクロールのみ)落ちてしまうのです。

どうも、プログラム自体の問題とは考えにくいのですが、
もし解決策があればと思って、お尋ねしたのですが・・・。


特攻隊長まるるう  2005-03-22 22:38:26  No: 120365

なんでここまで書いてエラーメッセージを書かないのかなぁ…。
ぶっちゃけエラーメッセージがこの質問の回答なんでしょ?。
何が問題かを知らせるのがエラーメッセージなんだから。


特攻隊長まるるう  2005-03-22 23:01:47  No: 120366

あと、…質問の状況を見た感じ、スクロールじゃなくって、
レコードの新規追加で問題が起こってる可能性も…かなり臭い。
レコードを追加するのを許す設定なの?そのあたりの設定は
どうやってるの?具体的なサンプルソースコードを示してみて
下さい。


いな  2005-03-23 00:29:54  No: 120367

>なんでここまで書いてエラーメッセージを書かないのかなぁ…。

エラーメッセージは、予測して答えてくださいというクイズです。
一番重要な問題点が切り分けられていない証拠です。

とりあえず、レコード件数依存ということで
インデックスが有効範囲にありませんあたりから考えますか?


特攻隊長まるるう  2005-03-23 01:12:04  No: 120368

>エラーメッセージは、予測して答えてくださいというクイズです。
なるほど、この質問者は『不完全な情報を与えてできる限り多くの情報を引き出そう』
とかいうハタ迷惑な向上心を持ってるのデスネ(違

>インデックスが有効範囲にありませんあたりから考えますか?
え"ぇっ!?Σ(‾□‾;)考えるんですか?…いなさん…実はヒマなの?w
(少し前の話になるけど、某掲示板で『知的好奇心を刺激してくれる質問がない』とか
言ってた様な…w)


魔界の仮面弁士  2005-03-23 01:16:20  No: 120369

とりあえず、実行時に(On Error等で)トラップできるエラーなのか、それとも、
(一般保護違反などの)トラップ不可能なエラーなのかだけでも提示してください。

また、VB付属のmdbファイル(NWIND.MDB や BIBLIO.MDB)を使って、新規プロジェクトを
作成し、その状況で同じ現象が起こるかも確認してみてください。

もし、その状況でエラーが起こらないようならば、mdb側の問題かも知れませんね。

逆に、エラーが起こるようならば、その時使ったコードを提示してもらえれば、
掲示板を見ている第三者でも、動作検証が可能かと思います。


いな  2005-03-23 01:30:58  No: 120370

>>え"ぇっ!?Σ(‾□‾;)考えるんですか?…いなさん…実はヒマなの?w
  1月、2月は、プロジェクトでハマッテテ
  NDAの関係上、掲示板で質問できなくって
  2徹3徹してたもんだからなぁ〜。今は、小康状態(ヒマ)。

インデックスエラーで云々というのも
データベースやグリッド操作系のエラーで落ちるという点で
言えばよくやりがちでそんなに外していないと思うんだが・・・。

ん〜ちがうのかなぁ
知的好奇心を刺激する質問を捜しているのはいつものこと
今日は某掲示板でネタ帳1件ゲット
http://www.vbvbvb.com/jp/index.html


PERSIMO  2005-03-23 01:31:43  No: 120371

皆様、お手数をおかけして大変申し訳有りません。
VBを始めて、2ヶ月ほどしかたっておりませんで、
皆様にご迷惑をおかけしました。

上記の作業を行うと、VBそのものが落ちてしまうため、
下記のメッセージになります。

「問題が発生したため、Visual Basicを終了します。ご不便をおかけして申しわけ有りません。

  作業途中であった場合、その情報は失われた可能性が有ります。

  この問題をMicrosoftに報告してください。
  Visual Basicのエラー報告が作成されました。弊社では、この報告を製品の改善に役立てると共に、匿名の秘密情報として扱います。

  エラー報告に含まれるデータの参照:ここをクリックしてください

      エラー報告を送信する
      送信しない                  」

という内容になってしまっていたのです。
しかもどうやら、画面設計している状態でも、上記内容により、
VBが落ちてしまうようです。

付属のmdbファイルでの検証は今から確認をしてみます。

取り急ぎご報告させていただきます。


特攻隊長まるるう  2005-03-23 01:56:10  No: 120372

>「問題が発生したため、Visual Basicを終了します。ご不便をおかけして申しわけ有りません。
>しかもどうやら、画面設計している状態でも、上記内容により、
>VBが落ちてしまうようです。
…別次元の問題になってしまった感じがします(^^;)。
プログラムを実行してない時にもエラーが出るんですか?
Visual Basic 自体に問題がある可能性が70%常駐してる
ようなアプリ(ウィルス対策ソフトとかウィルスも含めて
自作アプリ、製品アプリなど…)が25%…その他5%くらい
に思います。…ボクの感覚では。
[参考]
http://www.google.com/search?hl=ja&q=%E5%95%8F%E9%A1%8C%E3%81%8C%E7%99%BA%E7%94%9F+Visual+Basic%E3%82%92%E7%B5%82%E4%BA%86%E3%81%97%E3%81%BE%E3%81%99&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=


特攻隊長まるるう  2005-03-23 01:58:34  No: 120373

失礼。
>常駐してるようなアプリが25%
常駐してるようなアプリが悪さをしている可能性が25%


PERSIMO  2005-03-23 02:03:01  No: 120374

追記です。

>また、VB付属のmdbファイル(NWIND.MDB や BIBLIO.MDB)を使って、新規プロ>ジェクトを作成し、その状況で同じ現象が起こるかも確認してみてくださ
>い。

上記、試してみました。
下記のような事がわかりました。

・画面設計上、DataGridを作成しても、エラーは発生しません。

・ADODCによりAccessとつなげて、「フィールドを取得」後、画面設計上で、上下にスクロールさせましたが、エラーは発生しませんでした。

・更に、フィールドを取得後、自分がDataGridを画面設計した以上に、データが横にならんだ場合(DataGrid画面下記に←→のスクロールバーがある時)、上下にスクロールさせると、エラーが発生してしまいます。

⇒画面設計の段階で、ADODCによりデータを取得した際に、横スクロールがある場合、マウスでの縦スクロールを行うと、VBが落ちてしまう。

という様な感じです。
すいません、もう少し整理して質問すればよかったです。
申しわけ有りませんでした。


特攻隊長まるるう  2005-03-23 03:08:32  No: 120375

[参考]
http://madia.world.coocan.jp/vb/vb_bbs2/200304_03040045.html
上記リンクの記事で『開放されているメモリにアクセス』…と言っても
ボクにはピンと来るものが無く、ヘルプの

[MSDN ライブラリ Visual Studio 6.0]
└[Visual Basic ドキュメント]
  └[Visual Basic の使用方法]
    └[プログラミング ガイド]
      └[データ アクセス ガイド]
        └[Microsoft Jet/Microsoft Access データベースへのデータ アクセス]

に従ってテストしてみましたが、
>・更に、フィールドを取得後、自分がDataGridを画面設計した以上に、
>データが横にならんだ場合(DataGrid画面下記に←→のスクロールバーがある時)、
>上下にスクロールさせると、エラーが発生してしまいます。
エラーを再現できませんでした。
データグリッドを右クリックして『フィールドの取得』でフィールド数は3とし、
デザイン画面でデータグリッドの横幅を1.5フィールド分にし、縦も2レコード
分としました。実行して表示される縦と横のスクロールバーのボタンを色々操作
したり、グリッド下部のグレー表示部分もクリックしましたが、エラーは起きません。

ボクの知識では力不足のようですので静観モードに入りますm(__)m

ちなみにプロバイダのJetのバージョンはいくつなんですか?
ボクの環境では4.0でテストしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加