0

selectステートメントの実行中に次のエラーが発生します(OleDbCommandを使用)。

私の質問は

SELECT CME 
  FROM Personnel 
 WHERE CME = '11349D'

objOleDbCom.ExecuteScalar()>0の場合

上記のステートメントを実行すると、このエラーが発生しました

文字列「11349D」からタイプ「Double」への変換は無効です。

私のフィールドCMEデータ型はテキストです

私のデータベースはAccess2007です

データベース内で直接クエリを実行してみましたが、正常に実行されています。

提案してください。

ありがとう。

4

4 に答える 4

1

ExecuteScalar は、SQL によって返されたテーブルの列 0、行 0 フィールドを返すだけです。あなたが本当に求めているのは

SELECT COUNT(1) FROM Personnel WHERE CME = '11349D'
于 2010-03-23T07:14:59.333 に答える
0

double は数値 (CME はそのタイプのようです) で、'11249D' は文字列です。それらを比較することはできません。

試してみるとどうなりますか:

SELECT CME 
  FROM Personnel 
 WHERE CME = 11349
于 2010-03-23T07:11:51.260 に答える
0

WHERE CME = '11349D'

する必要があります

ここで CME = 11349

いいえ '

于 2010-03-23T07:13:42.957 に答える
0

実際に試してみたところ、レコードの存在を確認する方法が間違っていました。

objOleDbCom.ExecuteScalar() を実行し、if ステートメントで一致させることで、レコードの数を期待していました。

「objOleDbCom.ExecuteScalar() > 0 の場合」

今私は使用しています

Dim _strSelectCME As String = "SELECT CME FROM Personnel WHERE CME = '"
Public Function IsPersonnelExits(ByVal p_strCME As String) As Boolean
Dim objOleDbCom As 
    New OleDbCommand(_strSelectCME & p_strCME & "'"
                     , DBRelated.GetDBConnection()
                    )

Dim objObject As Object = objOleDbCom.ExecuteScalar()
If Not IsNothing(objObject) Then
  Return True    
  Exit Function    
End If
Return False
End Function

問題が解決しました

于 2010-03-23T09:25:33.337 に答える