どうも、あおです。
SQLServerでつくったSQL文をVB.NETに反映したい時のメモ。
まず、SQLServer側のサンプルSQL
SELECT ID ,NAME ,ADDRESS ,TEL ,BIKOU FROM MstKojin
これをExcelなどで以下に編集
stSQL = "" stSQL = stSQL & "SELECT " & vbCrLf stSQL = stSQL & " ID " & vbCrLf stSQL = stSQL & " ,NAME " & vbCrLf stSQL = stSQL & " ,ADDRESS " & vbCrLf stSQL = stSQL & " ,TEL " & vbCrLf stSQL = stSQL & " ,BIKOU " & vbCrLf stSQL = stSQL & " FROM MstKojin"
EXCELは今回以下のようにしています。
1)D2セルに固定値「stSQL = “”」をセット
2)B3セルにSQLServerのSQL構文をそのまま貼付け
3)D3セルに以下のExcel関数をセットして、対象行までドラッグ
=IF(B3<>””,”stSQL = stSQL & “”” & B3 & “”” & vbCrLf”,””)
これをVB.NET側に貼り付けます。(以下サンプル、中ほどの箇所)
Dim con As New SqlConnection Dim com As New SqlClient.SqlCommand Dim adapter As SqlDataAdapter Dim stSQL As String Dim dtSelect As New dsSelect.dtKojinDataTable con = New SqlConnection() '--- 接続文字列の設定 --- con.ConnectionString = "Data Source=.\SQLEXPRESS;" & "AttachDbFilename=" & """C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\xxx.mdf"";" & "Integrated Security=True;" & "Connect Timeout=30;" & "User Instance=True" 'DBを開く con.Open() com.Connection = con stSQL = "" stSQL = stSQL & "SELECT " & vbCrLf stSQL = stSQL & " ID" & vbCrLf stSQL = stSQL & " ,NAME" & vbCrLf stSQL = stSQL & " ,ADDRESS" & vbCrLf stSQL = stSQL & " ,TEL" & vbCrLf stSQL = stSQL & " ,BIKOU" & vbCrLf stSQL = stSQL & " FROM MstKojin" & vbCrLf adapter = New SqlDataAdapter() adapter.SelectCommand = New SqlCommand(stSQL, con) adapter.SelectCommand.CommandType = CommandType.Text adapter.Fill(dtSelect) dtSelect.Dispose() con.Close()
上記で使用しているデータテーブルは、
SQLで抽出するテーブルに合わせて作成しています。
SQL抽出結果をデータテーブルにセットしたい場合、
事前にデータテーブルを作成してください。