C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VB2010でERROメッセージが出て困っています・・・


(過去ログ 118 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■69117 / inTopicNo.1)  VB2010でERROメッセージが出て困っています・・・
  
□投稿者/ 高木宏樹 (1回)-(2013/12/05(Thu) 09:59:28)

分類:[.NET 全般] 

VB2010の初心者です。よろしくお願い致します。
【ソフトの概要】照会のあったPASSワードをACCESSのmdbファイルに登録されたPASSワード一覧と照合する手順を構築しようとしています。
下記に詳細を載せますのでERROR原因をご教授いただければ助かります。よろしくお願い致します。
【プログラム詳細】
1.「コントロール」: FORM1 に Button1 を置いている
2.mdbファイルの中身は

 「フィールド順です」
 ID       :自動で設定
 オペレータ名  :全角漢字10文字
 ランク     :半角文字列2文字
 パスワード   :半角20文字
 補足      :全角文字列 50文字
 PASSは未設定です。
3.プログラム

Imports System.Data.OleDb

Public Class Form1

Private Shared Property Adodc1 As Object

Private Property adCmdText As Object

Private Property DataGrid1 As Object

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cnn As New OleDb.OleDbConnection
Dim rec As New ADODB.Recordset
' MDB を定義する
Dim dbNAME As String
Dim dbPath As String
Dim tbl As String
Dim strFldnm As String
Dim strSearch As String

' 変数の定義
dbNAME = "db1.mdb" 'MDB 名を入力 ;*****を変更します
'dbPath =" App.Path & "\" 'EX) VB のアプリケーションと同一フォルダを指定
dbPath = "C:\Users\hiroki\Documents\Visual Studio 2010\Projects\VB_SQLでMDBに接続\VB_SQLでMDBに接続\bin\Debug" & " \ """
tbl = "db1" 'データベーステーブル ;*****を変更します
strFldnm = "ID" '抽出対象フィールド名 ;*****を変更します
strSearch = "1" '抽出文字 ;*****を変更します
'???????????????????????????????????????????????????????????????????????????????????????この部分でERRORが出る
' ADOデータコントロールの接続を確立する
Form1.Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & dbPath & dbNAME & ";" & _
"Persist Security Info=False"
'???????????????????????????????????????????????????????????????????????????????????????
' SQLステートメントをADOデータコントロールのレコードソースに指定する
Adodc1.CommandType = adCmdText()
Adodc1.RecordSource = "select * from " & tbl _
& " where " & strFldnm & " like '" & strSearch & "%'"

' レコードセットを更新する
Adodc1.Refresh()
' ADO のレコードソースをデータグリッドコントロールに連結する
DataGrid1.DataSource = Adodc1.Recordset

End Sub
End Class

4.ERRORメッセージの内容は下記の通り

  NullReferenceExceptionはハンドルされませんでした。
  オブジェクト変数またはwithブロック変数が設定されていません。

  と表示されます。メッセージの解読力が乏しく申し訳ありません
  是非対策方法についてお教え願います。
                            以上




引用返信 編集キー/
■69118 / inTopicNo.2)  Re[1]: VB2010でERROメッセージが出て困っています・・・
□投稿者/ WebSurfer (99回)-(2013/12/05(Thu) 11:28:45)
No69117 (高木宏樹 さん) に返信
>   NullReferenceExceptionはハンドルされませんでした。
>   オブジェクト変数またはwithブロック変数が設定されていません。

Form1.Adodc1 が null(VB.NET なら Nothing)になっているからでは?

Adodc1 というのは Microsoft.VisualBasic.Compatibility.VB6.ADODC の
ことだと想像してますが、MSDN ライブラリに書いてあるように、

"Visual Basic 6.0 からアップグレードしたアプリケーションでこのコン
トロールを使用すると、引き続き ADO データ接続を使用できます。新たに
開発する場合は、ADO の代わりに ADO.NET を使用することを検討してくだ
さい。"

ADO.NET を使用してはいかがですか?

それで問題が解決できるというわけではないですが、もし間違った方向へ
進んでいるとしたら、そこで議論しても意味がないですので。
引用返信 編集キー/
■69120 / inTopicNo.3)  Re[1]: VB2010でERROメッセージが出て困っています・・・
□投稿者/ an (6回)-(2013/12/05(Thu) 11:39:44)
No69117 (高木宏樹 さん) に返信

> ' ADOデータコントロールの接続を確立する
> Form1.Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
> "Data Source=" & dbPath & dbNAME & ";" & _
> "Persist Security Info=False"

>   NullReferenceExceptionはハンドルされませんでした。
>   オブジェクト変数またはwithブロック変数が設定されていません。

これはよくある実行時エラーです。
Form1.Adodc1が初期化されていない事が原因です。
エラーで止まった時に、
「Form1.Adodc1」
を選択状態にしてマウスポインタを当てると
「Nothing」
と出ると思います。
「Nothing」(=Null)はオブジェクトがない状態なので、
そのプロパティにアクセスすると上記のエラーが発生します。

対処法としては初期化(New等)をすることですが、
根本的にこの辺の理解が足りないのではないでしょうか?

理解が足りないと、この先も苦労すると思うので、
基礎知識を手に入れる事が先決な気がします。

以下を参考にしてはいかがでしょうか?
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard34.htm
http://dobon.net/vb/dotnet/beginner/classinstance.html

引用返信 編集キー/
■69122 / inTopicNo.4)  Re[1]: VB2010でERROメッセージが出て困っています・・・
□投稿者/ オショウ (102回)-(2013/12/05(Thu) 12:43:37)
> Dim cnn As New OleDb.OleDbConnection
> Dim rec As New ADODB.Recordset

  そもそも無茶苦茶・・・

  OleDb を宣言しているにも関わらず、Adodc1を使っているし
  ADODB.Recordset まである。

  ADO.NET のOleDbを宣言したのであれば、すべてOleDbで作る
  のが当たり前かと。

  VB6 からの変換で、そのまま動作する・・・なんてことは、
  早々ないです。すべて書き直される方が、近道かと。

以上。
引用返信 編集キー/
■69133 / inTopicNo.5)  Re[2]: VB2010でERROメッセージが出て困っています・・・
□投稿者/ 高木宏樹 (2回)-(2013/12/05(Thu) 17:43:10)
No69122 (オショウ さん) に返信

早速のご指摘ありがとうございます。
始めて1ケ月ほどなのでWeb上のサンプルを
参考に色々試行錯誤の状態です。

今後はADO.NETのみで構築するようにしたいと思います。
また、初期化の概念がよく分かっていませんでした。
取りあえず初期化やってみたいと思います。
もう少し勉強して壁を乗り越えたいと思います。
ありがとうございました、今後ともよろしくお願いします。

以上。
引用返信 編集キー/
■69374 / inTopicNo.6)  Re[2]: VB2010でERROメッセージが出て困っています・・・
□投稿者/ 高木宏樹 (3回)-(2013/12/20(Fri) 13:52:04)
No69118 (WebSurfer さん) に返信

回答ありがとうございました。
 VBは結構歴史があるので色々な言語を参照
 出来るようになっているのですね。
 便利になっている反面、初心者(私)にとっては複雑で
 戸惑ってしまいます。
 じっくりと勉強したいと思います。
  ほんとにありがとうございました。

                  高木
引用返信 編集キー/
■69375 / inTopicNo.7)  Re[2]: VB2010でERROメッセージが出て困っています・・・
□投稿者/ 高木宏樹 (4回)-(2013/12/20(Fri) 14:00:35)
No69120 (an さん) に返信
> ■No69117 (高木宏樹 さん) に返信


ご丁寧な回答ありがとうございました。
VBはなかなか奥深いことがひしひしと思い知った
感じです。
基本をもう少し鍛錬しようと思います。
                   以上

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -