|
分類:[VB.NET/VB2005 以降]
いつも助けて頂き、ありがとうございます。 今回も、よろしくお願い致します。
下記の f_SQL を使用して、SELECT文の結果を加工しています。 今までは、
−−−−−−−−−−−−−−−−−−−−−−−−−−− select aaa,bbb from owrgH order by aaa desc −−−−−−−−−−−−−−−−−−−−−−−−−−−
程度のシンプルなSelect文しか実行したことがなかったのですが 今回、欲しいデータは、↓のようなSelect文を書かないと取れないと言われ、実行してみました。
−−−−−−−−−−−−−−−−−−−−−−−−−−− SELECT SUBSTRING(CONVERT(VARCHAR, HAAA, 120), 1, 16), COUNT(*) FROM HHHH1420 ( INDEX ( ID1_HHHH1420 ) ) WHERE HHAA = '1400' AND '2013/12/21 13:30:31' < HAAA AND HAAA <= '2013/12/26 13:30:31' AND HBBB = 11 AND SSSS = 'A' GROUP BY SUBSTRING(CONVERT(VARCHAR, HAAA, 120), 1, 16) ORDER BY 1 −−−−−−−−−−−−−−−−−−−−−−−−−−−
エラーが発生し(メモ失念致しました。)、いろいろなSelect文を実行してみたところ、どうやら COUNT が入っていると エラーになることが分かりました。 ちなみに、普通にプログラムからではなく、SQL Server Management Studioから動かすと正常のため 文法的な誤りはありません。
Q1. SqlDataReaderを使用するにあたり、実行不可な関数があるのでしょうか? もし、あるのであれば、その一覧が記載されているようなURLを教えて頂けるとありがたいです。 探してみましたが、見つけることができませんでした。
Q2. 例えば、COUNTの前に記述を追加すれば使えるなどありましたら、教えてください。
以上、ご教授の程よろしくお願い致します。
Public Function f_SQL(ByVal strDataSource As String, _ ByVal strUser As String, _ ByVal strPass As String, _ ByVal strInitialCatalog As String, _ ByVal dtItemConf As DataTable) As String
Dim strePN As String = My.Settings.ePN Dim stConnectionString As String = String.Empty Dim shtConf() As Short = Nothing
Dim strIntegratedSecurity As String = String.Empty
Dim intI As Integer = 0 Dim intJ As Integer = 0 Dim strErr As String = ""
stConnectionString &= "Data Source = " & strDataSource & ";" stConnectionString &= "Initial Catalog = " & strInitialCatalog & ";" stConnectionString &= "User ID=" & strUser & ";" stConnectionString &= "Password=" & strPass & ";"
' SqlConnection の新しいインスタンスを生成する (接続文字列を指定) Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString)
' データベース接続を開く Try cSqlConnection.Open() Catch ex As Exception GoTo CloseProc End Try
' 接続に成功した旨を表示する 'MessageBox.Show("Microsoft SQL Server に接続されました")
For intJ = 0 To (dtItemConf.Rows.Count - 1) Step 1
'----------------------------------- ' select文実行 '-----------------------------------
' cSqlConnection から SqlCommand のインスタンスを生成する Dim hCommand As System.Data.SqlClient.SqlCommand = cSqlConnection.CreateCommand()
' 実行する SQL コマンドを設定する hCommand.CommandText = dtItemConf(intJ)(cintC_Sql)
Dim cReader As System.Data.SqlClient.SqlDataReader = Nothing
Try ' 指定した SQL コマンドを実行して SqlDataReader を構築する cReader = hCommand.ExecuteReader()
Catch ex As Exception GoTo NextSql End Try
' hCommand を破棄する (正しくは オブジェクトの破棄を保証する を参照) hCommand.Dispose()
--------------------------- 略 ---------------------------
NextSql: ' cReader を閉じる (正しくは オブジェクトの破棄を保証する を参照) cReader.Close()
Next intJ
Return (True)
CloseProc: ' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照) cSqlConnection.Close() cSqlConnection.Dispose()
Return (strErr) End Function
|