宜しくお願いいたします。
VB6.0(SP6)、XPProでプログラミングをしております。
現在、DataGridを使って、Accessのデータを読み込むための
作業をしているのですが、画面上のDatagrid範囲内のセル以外の部分で
スクロールボタンを利用してデータ表示させようとすると、8割位の確率でVBがダウンしてしまいます。
コードによって、ダウンを防ぐ事は可能でしょうか。
また、これはMS製品の仕様であって、どうにもならないものなのでしょうか。
教えていただけると幸いです。
これだけでは、あなたのプログラムに問題があるとは言い切れません。
回答有り難うございます。
返事が遅れて申しわけ有りません。
ちょっとわかりにくかったので、ご説明させていただくと
以下のような状況でDataGridを利用しています。
1.VBのFormにDataGridを貼り付けています。
2.DataGrid内のデータは、数が多く、当然スクロールしなければ、
全データを表示できません。
3.データ上をマウスでスクロールさせる分については、問題ありません。
4.但し、最終行を超えても、マウスでスクロールさせると、VB自体がエラーを返して、ダウンしてしまいます。
┌——————————————————┐
|DATAGRID_DATAGRID↑|
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID||
|DATAGRID_DATAGRID↓|
|___DATAGRID終わり____|
| |
| |
| この部分でスクロール |
| |
└——————————————————┘
上記のDataGridのデータ範囲外、(データ部分ではなく、スクロール後のグレーの部分)でマウスのスクロール機能を利用すると、(しかも縦スクロールのみ)落ちてしまうのです。
どうも、プログラム自体の問題とは考えにくいのですが、
もし解決策があればと思って、お尋ねしたのですが・・・。
なんでここまで書いてエラーメッセージを書かないのかなぁ…。
ぶっちゃけエラーメッセージがこの質問の回答なんでしょ?。
何が問題かを知らせるのがエラーメッセージなんだから。
あと、…質問の状況を見た感じ、スクロールじゃなくって、
レコードの新規追加で問題が起こってる可能性も…かなり臭い。
レコードを追加するのを許す設定なの?そのあたりの設定は
どうやってるの?具体的なサンプルソースコードを示してみて
下さい。
>なんでここまで書いてエラーメッセージを書かないのかなぁ…。
エラーメッセージは、予測して答えてくださいというクイズです。
一番重要な問題点が切り分けられていない証拠です。
とりあえず、レコード件数依存ということで
インデックスが有効範囲にありませんあたりから考えますか?
>エラーメッセージは、予測して答えてくださいというクイズです。
なるほど、この質問者は『不完全な情報を与えてできる限り多くの情報を引き出そう』
とかいうハタ迷惑な向上心を持ってるのデスネ(違
>インデックスが有効範囲にありませんあたりから考えますか?
え"ぇっ!?Σ(‾□‾;)考えるんですか?…いなさん…実はヒマなの?w
(少し前の話になるけど、某掲示板で『知的好奇心を刺激してくれる質問がない』とか
言ってた様な…w)
とりあえず、実行時に(On Error等で)トラップできるエラーなのか、それとも、
(一般保護違反などの)トラップ不可能なエラーなのかだけでも提示してください。
また、VB付属のmdbファイル(NWIND.MDB や BIBLIO.MDB)を使って、新規プロジェクトを
作成し、その状況で同じ現象が起こるかも確認してみてください。
もし、その状況でエラーが起こらないようならば、mdb側の問題かも知れませんね。
逆に、エラーが起こるようならば、その時使ったコードを提示してもらえれば、
掲示板を見ている第三者でも、動作検証が可能かと思います。
>>え"ぇっ!?Σ(‾□‾;)考えるんですか?…いなさん…実はヒマなの?w
1月、2月は、プロジェクトでハマッテテ
NDAの関係上、掲示板で質問できなくって
2徹3徹してたもんだからなぁ〜。今は、小康状態(ヒマ)。
インデックスエラーで云々というのも
データベースやグリッド操作系のエラーで落ちるという点で
言えばよくやりがちでそんなに外していないと思うんだが・・・。
ん〜ちがうのかなぁ
知的好奇心を刺激する質問を捜しているのはいつものこと
今日は某掲示板でネタ帳1件ゲット
http://www.vbvbvb.com/jp/index.html
皆様、お手数をおかけして大変申し訳有りません。
VBを始めて、2ヶ月ほどしかたっておりませんで、
皆様にご迷惑をおかけしました。
上記の作業を行うと、VBそのものが落ちてしまうため、
下記のメッセージになります。
「問題が発生したため、Visual Basicを終了します。ご不便をおかけして申しわけ有りません。
作業途中であった場合、その情報は失われた可能性が有ります。
この問題をMicrosoftに報告してください。
Visual Basicのエラー報告が作成されました。弊社では、この報告を製品の改善に役立てると共に、匿名の秘密情報として扱います。
エラー報告に含まれるデータの参照:ここをクリックしてください
エラー報告を送信する
送信しない 」
という内容になってしまっていたのです。
しかもどうやら、画面設計している状態でも、上記内容により、
VBが落ちてしまうようです。
付属のmdbファイルでの検証は今から確認をしてみます。
取り急ぎご報告させていただきます。
>「問題が発生したため、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=
失礼。
>常駐してるようなアプリが25%
常駐してるようなアプリが悪さをしている可能性が25%
追記です。
>また、VB付属のmdbファイル(NWIND.MDB や BIBLIO.MDB)を使って、新規プロ>ジェクトを作成し、その状況で同じ現象が起こるかも確認してみてくださ
>い。
上記、試してみました。
下記のような事がわかりました。
・画面設計上、DataGridを作成しても、エラーは発生しません。
・ADODCによりAccessとつなげて、「フィールドを取得」後、画面設計上で、上下にスクロールさせましたが、エラーは発生しませんでした。
・更に、フィールドを取得後、自分がDataGridを画面設計した以上に、データが横にならんだ場合(DataGrid画面下記に←→のスクロールバーがある時)、上下にスクロールさせると、エラーが発生してしまいます。
⇒画面設計の段階で、ADODCによりデータを取得した際に、横スクロールがある場合、マウスでの縦スクロールを行うと、VBが落ちてしまう。
という様な感じです。
すいません、もう少し整理して質問すればよかったです。
申しわけ有りませんでした。
[参考]
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でテストしました。
ツイート | ![]() |