開発マシンの次のサブがスムーズに動作する理由を誰にでも説明できますが、別のPCにインストールしてインストールするとエラーが発生します。他のコンピュータに移動した後でvb.netのオブジェクト参照メッセージ
私が手にエラーが発生しました「ので、couldntのはどれかを示します。オブジェクト参照がオブジェクトのインスタンスに設定されていません」でそれが動作開発マシン上の一方
を。 どちらもWin7を実行していましたが、msdnのdatafileとsql-ce dllの配備指示書に記載されているように、すべてのsqlファイルを除外しました。
"cmd.ExecuteNonQuery()"が問題なく実行されるため、データファイルは正常で接続は良好です。
Public Sub LoadFolders()
Dim ds As New DataSet
Dim da As SqlCeDataAdapter = New SqlCeDataAdapter()
Dim cmd As SqlCeCommand
Try
cmd = New SqlCeCommand("SELECT distinct(folder) from addressbook", connection.DbPrivate)
cmd.CommandType = Data.CommandType.Text
Catch e As Exception
Console.WriteLine("Could not execute sql: {0}", e.Message)
End Try
Try
With da
.SelectCommand = cmd
.Fill(ds, "folders")
End With
Catch e As Exception
Console.WriteLine("Unable to fill dataset: {0}", e.Message)
End Try
Try
For Each irow As DataRow In ds.Tables("folders").Rows
MsgBox(irow(0))
Next
Catch e As Exception
MsgBox("Couldnt show any because: " + e.Message) 'this is the error that pops up.
End Try
End Sub
これは、デバッガでかなり簡単に判断できるものです: 'ds'がnullであるか、* folders *というテーブルがありませんnull)、または 'irow'のfieldsコレクションがnullです。今度はIIRCの '.Rows'と' .Fields'コレクションは決してnullにならず、いくつかのオプションしか残しません。 – slugster
私の開発マシンでは、デバッガはエラーを出さない。しかし、別のマシンにインストールされている場合。そして、他のマシンのエラーウィンドウにはあまり情報がありません。 (どのように私はそのマシンでデバッグしますか?愚かなqのため申し訳ありません) – renevdkooi
明らかに、2番目のマシンのSQLCEデータベースは、devマシンのデータとは異なるデータを持っています。より多くのヌルチェックを構築してターゲットマシンに再デプロイするか、ターゲットからデータベースを取得し、デバッガでdevマシンで使用します(これはおそらく最も簡単で最速のソリューションです)。 – slugster