SQLクエリを使用してテーブル内の最後のIDを取得し、結果をTextBox値(文字列)とともに追加しようとしています:
Dim searchforID = New OleDbCommand("select ID from [table1] where ID = (select max(id) from [table1])", con)
Dim variable1 = searchforID + TextBox1.Text
しかし、それはこのエラーをスローします:
コンパイラ エラー メッセージ: BC30452: 型 'System.Data.OleDb.OleDbCommand' および 'String' に対して演算子 '+' が定義されていません。
それを修正しようとしています
-- それで、返されたレコード ID を次のように変換しようとしました。Dim variable1 = Convert.ToString(searchforID) + TextBox1.Text
現在はエラーは発生していませんが、残念ながら、次の例のように、"System.Data.OleDb.OleDb" + テキスト ボックスの値が返されます:
System.Data.OleDb.OleDbtest
-- 私も、返されたレコード ID を整数に変換するとエラーがスローされると考えました。
例外の詳細: System.InvalidCastException: タイプ 'System.Data.OleDb.OleDbCommand' のオブジェクトをタイプ 'System.IConvertible' にキャストできません。
では、最後のレコード ID の取得が失敗するのはなぜでしょうか? SQL クエリが間違っている可能性はありますか?
ありがとうございました。
誰かが役に立つと思うなら、問題の簡単な解決策:
Dim searchforID = New OleDbCommand("select MAX(ID) from [table1]", con)
Dim variable1 = searchforID.ExecuteScalar() & TextBox1.Text
また、以下の回答とコメントには有用な情報があります。