0

コードから次のエラーが表示されます。

次のエラーが発生しました:

System.Data.OleDb.OleDbException (0x80040E07): 条件式のデータ型が一致しません。System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult hr) で System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult (tagDBPARAMS dbParams、Object& executeResult) で System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) で System.Data. OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 動作、Object& executeResult) で System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 動作、String メソッド) で System.Data.OleDb.OleDbCommand.ExecuteScalar() で NJDataExtractExceltoAccess.Form1.FindAcctId(String x 、OleDbConnection y) の C:\Path\Form1.cs:line 158

private int FindAcctId(string x, OleDbConnection y)
{
    //try
    //{
        string[] ID = x.Split('-');

        string lookup = "Select Id from tbl_name where Col1 = '110' And Col2 = " + ID[0] + "And Col3 = " + ID[1] + "And Col4 = " + ID[2] + "And Col5 = " + ID[3] + "And Col6 = " + ID[4] + "And Col7 = " + ID[5] + "And Col7 = " + ID[6];
        OleDbCommand cmd = new OleDbCommand(lookup, y);
        Int32 result = (Int32)cmd.ExecuteScalar();  // line 158
        Return_val = (int)result;
    //}
    //catch (Exception Er)
    //{
    //    OutputBox.Text = "The following errors occurred: " + Er;
    //}
    return Return_val;
}

マイクロソフトのページには次のように書かれています。

典型的な ExecuteScalar クエリは、次の C# の例のようにフォーマットできます。

cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
Int32 count = (Int32) cmd.ExecuteScalar();

私も試しました:

int result = (int)cmd.ExecuteScalar();

object result = cmd.ExecuteScalar();

しかし、同じ行で同じデータ型エラーを受け取ります。ExecuteScalar()オブジェクトからキャストするにはどうすればよいですかOleDbCommand(接続と挿入文字列が機能します)。

4

1 に答える 1