質問 |
||
| 質問者:silk_001 | SqlDataSource SelectCommand の書き方 | |
|---|---|---|
困り度:
|
はじめまして。 現在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 の内容を場合によって変更するにはどのようにしたらよいのでしょうか? よろしくお願いいたします。 |
|
質問投稿日時:08/05/13 21:24 質問番号:4020101 |
||
回答良回答20pt |
|
| 回答者:redfox63 | SqlDataSourceのSelectCommandプロパティに設定されるSQLにパラメータを追加して使用すればいいようですよ SqlDataSourceのデータソース構成ウィザードでクエリビルダを使って SELECT * FROM 台帳 WHERE 種別 LIKE @myShouhin などとパラメータつきのSQLに変更します こうして『次へ』をクリックするとパラメータの定義に移ると思います 名前:myShouhin 値: % にしてウィザードを完了させます 選択を変更したいイベントで SqlDataSource.SelectParameter(0).DefaultValue = "商品A%" GetdView1.dataBind() などを実行してみてください |
|---|---|
| 種類:回答 どんな人:専門家 自信:自信あり |
|
| |
回答日時:08/05/14 09:13 回答番号:No.1 |
|
| この回答へのお礼 | redfox63さん できました! 最初はデータソース構成ウィザードの使い方がわからずに意図したものと違う結果になっていたのですが、生成されたaspのコードをヒントに理解できて種別ごとに取得できるようになりました。 最終的にはasp側でVBを記述するのをやめて、生成された<asp:SessionParameter 〜 >に合うようにVB側でセッション変数に"商品A%"を設定して実現しました。 このようなプログラム作成は経験が浅くてデータソース構成ウィザードのことも知らなかったのでとても勉強になりました。 どうもありがとうございました! |