vb.netでとあるプログラムを作成しています。
dbと接続してデータグリットビューに表示しています。
'データグリッドに表示 Dim myselect As String = " " _ + "SELECT NUMBER,USER_ID,T_ITEM.ITEM_ID,ITEM_NAME,ITEM_PRICE,COUNT,ITEM_PRICE * COUNT AS sum" _ + " FROM M_ITEM JOIN T_ITEM ON M_ITEM.ITEM_ID = T_ITEM.ITEM_ID" _ + " WHERE registTIME BETWEEN '" & DateTimePicker1.Text & "' AND '" & DateTimePicker2.Text & "'" _ + " AND USER_ID = '" & LoginForm1.userid & "'" _ + " ORDER BY NUMBER " adapter = New MySqlDataAdapter(myselect, cn) Dim ds As New DataSet adapter.Fill(ds) DataGridView1.DataSource = ds.Tables(0)
上記のSQLの箇所をこのプログラムでは何回も使用しているので関数にしてコードをスッキリさせていと考えています。
自分なりに調べて書いてみたのですが呼び出すところで「式は値を生成しません」とエラーが出てしまいます。
・関数作成
Private Sub sqlsel(ByVal arg1 As String, ByVal arg2 As String, ByVal arg3 As String) 'arg1 = DateTimePicker1.Text 'arg2 = DateTimePicker2.Text 'arg3 = LoginForm1.userid Dim sqlsel As String = " " _ + "SELECT NUMBER,USER_ID,T_ITEM.ITEM_ID,ITEM_NAME,ITEM_PRICE,COUNT,ITEM_PRICE * COUNT AS sum" _ + " FROM M_ITEM JOIN T_ITEM ON M_ITEM.ITEM_ID = T_ITEM.ITEM_ID" _ + " WHERE registTIME BETWEEN '" & arg1 & "' AND '" & arg2 & "'" _ + " AND USER_ID = '" & arg3 & "'" _ + " ORDER BY NUMBER " End Sub
・呼び出すとき
'データグリッドに表示 adapter = New MySqlDataAdapter(sqlsel(DateTimePicker1.Text, DateTimePicker2.Text, LoginForm1.userid), cn) Dim ds As New DataSet adapter.Fill(ds) DataGridView1.DataSource = ds.Tables(0) ``` 呼び出し方がおかしいのでしょうか? また、式は値を生成しませんとはどういう意味ですか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/08 04:59