Accessのテーブルに該当データが存在するか調べる

解決


ちゃまき  2013-01-17 10:12:15  No: 148054  IP: [192.*.*.*]

VB.NET(2010)からAccess2000に接続するプログラムなのですが、
特定のテーブルに条件に合うレコードが存在するかどうかのみを知るために
以下のようなソースにしています。

Try
  strSQL = "SELECT * FROM テーブルA WHERE 整理番号 = 999"
  (999の部分は随時変わります)

 Dim CnnK3 As String = ACstr & _
     "Data Source=" & DataMdb & ";" & ACPassS
 Dim OleConn As OleDb.OleDbConnection = New OleDb.OleDbConnection
 Dim OleDA As New OleDbDataAdapter(strSQL, CnnK3)
 Dim dtSet As DataSet = New DataSet("TABLE")
 Dim cb As New OleDbCommandBuilder(OleDA)
 Dim table As New DataTable()

 OleDA.Fill(table)
 Dim Tcnt As Integer = table.Rows.Count
Catch ex As Exception
  MessageBox.Show(ex.Message, "Access接続エラー")
  Cursor.Current = Cursors.Default 'カーソル通常
   Exit Sub
End Try

table.Rows.Countが0かどうかを見て該当レコードがあるかどうかチェックしているのですが、さらに高速に結果を知るには他によい方法はありますでしょうか?

編集 削除
ブービー  2013-01-17 14:41:26  No: 148055  IP: [192.*.*.*]

SQLのSELECT文を、

strSQL = "SELECT COUNT(*) FROM テーブルA WHERE 整理番号 = 999"

とすれば、該当レコードを全部読み込むことなく判断できると思います。

編集 削除
YuO  2013-01-17 19:38:00  No: 148056  IP: [192.*.*.*]

DataAdapterとDataSetを使うのではなく,
OleDbCommandを使うことで,SQLを実行できます。
さらに,ExecuteScalarメソッドで単一の値のみを取得できます。

編集 削除
ちゃまき  2013-01-19 09:46:08  No: 148057  IP: [192.*.*.*]

OleDbCommandを使用し、処理速度が上がりました。
SELECT COUNT 〜

SQLCm.ExecuteScalar  で該当レコード数を取得できました。
ありがとうございました。

編集 削除