0

以下のコードを実行すると、次のエラーが発生します。

"Additional information: Conversion from string "_01202478334" to type 'Double' is not valid."

コード:

          Using connn As New SqlClient.SqlConnection("server=inlt01\SQLEXPRESS; database=DaisyServices; integrated security=yes")
          Using cmdz As SqlClient.SqlCommand = conn.CreateCommand()

          cmdz.CommandText = "SELECT CLI, FromDate, ToDate, [Description], TotalCost, COUNT(*) as Count FROM [" + FileNameOnly + "] GROUP BY CLI, FromDate, ToDate, [Description], TotalCost HAVING COUNT(*) > 1"
          connn.Open()

          If cmdz.ExecuteScalar() > 1 Then

          'Error if name in use
          MessageBox.Show("Duplicate records exist on imported file!!")

トラブルシューティングのために CLI フィールドを削除しましたが、新しいエラーが発生しました

"Additional information: Operator '>' is not defined for type 'Date' and type 'Integer'"

別のフォームで非常によく似たコードを使用していますが、エラーなしで実行されます。

ここに私の作業コードがあります:

          Using connn As New SqlClient.SqlConnection("server=inlt01\SQLEXPRESS; database=DaisyBilling; integrated security=yes")
          Using cmdz As SqlClient.SqlCommand = conn.CreateCommand()

          cmdz.CommandText = "SELECT CustomerCLI, calldate, calltime, duration, TelephoneNumber, COUNT(*) as Count FROM [" + FileNameOnly + "] GROUP BY CustomerCLI, calldate, calltime, duration, TelephoneNumber HAVING COUNT(*) > 1"
          connn.Open()

          If cmdz.ExecuteScalar() > 1 Then

          'Error if name in use
          MessageBox.Show("Duplicate records exist on imported file!!")

コードが他のフォームでは機能するのに、このフォームでは機能しないのはなぜですか?

注意。SQLサーバーから直接クエリを実行すると、SQLは正常に実行されます

どんな助けでも大歓迎です

4

1 に答える 1

1

ExecuteScalarクエリが 1 つの値のみを返す場合を対象としています。countの最初の要素としてを配置すると、機能しますSELECT

SqlCommand.ExecuteScalar Methodのドキュメントから:

クエリを実行し、クエリによって返された結果セットの最初の行の最初の列を返します。追加の列または行は無視されます。

于 2014-08-29T18:26:36.327 に答える