SQLデータベースに接続するVB.NETアプリケーションでエラーが発生します。接続は正常ですが、何らかの理由でこのエラーを修正できません。修正しようとすると、スクリプトのある部分から別の部分に移動します(どちらも昨日は機能していました)。エラーの詳細は次のとおりです。
残念ながら、この結果がどのように生成されたかを説明するのは困難です。これは、コードの複数の部分で発生したためです。これらの部分に共通するのは、Listbox1との相互作用だけです。
このエラーが発生するコードの最初の部分は次のとおりです。
Dim sqlpage As MySqlCommand = New MySqlCommand("SELECT * FROM [" & frmMain.ListBox1.SelectedItem.value & "]", con)
次に、次の場合とまったく同じエラーが発生しました。
Private Sub ListBox1_SelectedValueChanged( _
ByVal sender As Object, ByVal e As System.EventArgs) _
Handles ListBox1.SelectedValueChanged
Try
Form1.Label1.Text = ListBox1.SelectedItem
Form1.Show()
Catch myerror As MySqlException
MessageBox.Show("Error Setting Up Project Page: " & myerror.Message)
End Try
End Sub
すなわち:
Form1.Label1.Text = ListBox1.SelectedItem
そして、もう数回それを手に入れましたが、上記の例で十分だと思います。
上記の例には「ブロック変数あり」がないため、他の唯一のオプションは、オブジェクトに関連していることです。エラーに関連するオブジェクト変数を定義および再定義するさまざまな方法を試しました。ただし、結果は同じです。
Juxtapositionの回答に応えて、私の元の問題は解決されましたが、Option Strictをオンにしたために、特に2つの新しい問題が発生しました。
- 1つ目は次のとおりです。
エラー1:Option Strict Onは、遅延バインディングを許可しません。
問題のコードは次のとおりです。
Try
' Retrieving the projects list.
con.Open()
DataAdapter2.SelectCommand = sqlprojects
DataAdapter2.Fill(ds2, "projects")
ListBox1.Items.Clear()
For Each DataRow In ds2.Tables("projects").Rows
' Error occurs on the line below
ListBox1.Items.Add(DataRow("project_name"))
Next
con.Close()
Catch myerror As MySqlException
MessageBox.Show("Error Retrieving Projects List: " & myerror.Message)
End Try
- 2番目は:
エラー2:Option Strict Onは、「オブジェクト」から「文字列」への暗黙的な変換を許可しません。
問題のコードは次のとおりです。
Private Sub ListBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedValueChanged
Try
If ListBox1.SelectedItem IsNot Nothing Then
' Error occurs on the line below
Form1.Label1.Text = ListBox1.SelectedItem
End If
Form1.Show()
Catch myerror As MySqlException
MessageBox.Show("Error Setting Up Project Page: " & myerror.Message)
End Try
End Sub
うまくいきました...それで、皆さんの時間と忍耐に感謝します。