アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。
現在aspx側でDBから読み込んだデータをGridViewに表示するプログラムを作っています。

環境
SQL Server 2005 Express Edition
Visual Studio 2005
ASP.NET(VB)

初期表示として前の画面で選ばれた種別によってSQLが変わるので .aspxで

<%
dim s as string = "SELECT * FROM 台帳 "
select case session("kind")
case "A"
s &= "WHERE 種別 LIKE '商品A%' "
case "B"
s &= "WHERE 種別 LIKE '商品B%'"
case else
' 全種別を取得
end select
hyo_1.SelectCommand = s & "ORDER BY 種別"
%>
<asp:SqlDataSource ID="hyo_01" runat="server" ConnectionString="<%$ ConnectionStrings:ConStr %>" />
と記述してみたのですが、結果は、何も表示されませんでした。
(順序を逆にしてみてもダメでした)

この場合、<asp:SqlDataSource ~ /> で SelectCommand はクリアされてしまうのでしょうか?
<asp:SqlDataSource ~ の中で SelectCommand="SELECT ~ " としたときに変数に入れたWHERE句を途中に埋め込むことがどうやってもできなかったので苦し紛れにやってみたのですが、、、

変数 whr="'商品A%'"として <asp:SqlDataSource ~ の中で
SelectCommand="SELECT * FROM 台帳 WHERE 種別 LIKE <% = whr %> ORDER BY 種別" />
とするとエラーになってしまうし、いろいろ検索してみたのですが解決できませんでした。

SelectCommand の内容を場合によって変更するにはどのようにしたらよいのでしょうか?

よろしくお願いいたします。

A 回答 (1件)

SqlDataSourceのSelectCommandプロパティに設定されるSQLにパラメータを追加して使用すればいいようですよ



SqlDataSourceのデータソース構成ウィザードでクエリビルダを使って
SELECT * FROM 台帳 WHERE 種別 LIKE @myShouhin
などとパラメータつきのSQLに変更します
こうして『次へ』をクリックするとパラメータの定義に移ると思います
名前:myShouhin
値: %
にしてウィザードを完了させます

選択を変更したいイベントで
SqlDataSource.SelectParameter(0).DefaultValue = "商品A%"
GetdView1.dataBind()
などを実行してみてください
    • good
    • 0
この回答へのお礼

redfox63さん

できました!
最初はデータソース構成ウィザードの使い方がわからずに意図したものと違う結果になっていたのですが、生成されたaspのコードをヒントに理解できて種別ごとに取得できるようになりました。

最終的にはasp側でVBを記述するのをやめて、生成された<asp:SessionParameter ~ >に合うようにVB側でセッション変数に"商品A%"を設定して実現しました。

このようなプログラム作成は経験が浅くてデータソース構成ウィザードのことも知らなかったのでとても勉強になりました。

どうもありがとうございました!

お礼日時:2008/05/14 12:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!