前提・実現したいこと
VB.NETでOleDbCommandクラスを使用するSELECT分を実行時に”指定されたキャストは有効ではありません”のエラーになります。
発生している問題・エラーメッセージ
指定されたキャストは有効ではありません
該当のソースコード
Imports System.Data.SqlClient Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim prov As String = "****" Dim serverName As String = "*****" Dim dataBase As String = "******" Dim userid As String = "****" Dim pwd As String = "" Dim dread As OleDb.OleDbDataReader Dim str As String = String.Empty Try Using conn As New OleDb.OleDbConnection() conn.ConnectionString = " Provider = " & prov & ";Data Source = " & serverName & ";Initial Catalog = " & dataBase & ";User ID = " & userid & ";Password =" & pwd conn.Open() Using cmd As New OleDb.OleDbCommand() cmd.Connection = conn cmd.CommandText = "SELECT * " & ControlChars.NewLine & "FROM [dbo].**** " & ControlChars.NewLine & "WHERE ****** BETWEEN ? AND ? " & ControlChars.NewLine & "ORDER BY ******* " & ControlChars.NewLine cmd.Parameters.Add("@CYUUMON_BANGOU_St", OleDb.OleDbType.Integer).Value = ***** cmd.Parameters.Add("@CYUUMON_BANGOU_End", OleDb.OleDbType.Integer).Value = ****** dread = cmd.ExecuteReader() Do While dread.Read() Dim iIdx1 As Integer, iIdx2 As Integer iIdx1 = dread.GetOrdinal("******") iIdx2 = dread.GetOrdinal("******") str &= "CYUUMON_BANGOU:" & dread.GetInt32(iIdx1) & Space(6) & "SEIZOU_LINE_NO:" & dread.GetString(iIdx2) & ControlChars.NewLine Loop End Using Label1.Text = str End Using Catch ex As Exception Label1.Text = Err.Description End Try End Sub End Class
試したこと
接続は正常に出来ているのを確認しています。
補足情報(FW/ツールのバージョンなど)
Visual studio 2019
あなたの回答
tips
プレビュー