- PR -

GridViewのパラメータについて

1
投稿者投稿内容
花茶
会議室デビュー日: 2006/10/11
投稿数: 12
投稿日時: 2006-10-11 17:56
こちらには初めて投稿させていただきます。
ASP.NETでの開発を最近はじめた者です、宜しくお願い致します。

GridViewを使用してデータベースの内容を表示させる処理をしているのですが
Where句の文が動的に生成される場合Gridviewで実現させる場合の方法が分かりません。

例えば
GridViewのデータソースの構成から以下のようなSQL文を指定し

SELECT AAA, BBB, CCC
From dTBL
WHERE :strsql
ORDER BY AAA

WHERE句の「:strsql」にセッションで取得する条件文
(BBB = "001"など)を設定したいのですが
クエリのテスト時に型をStringに設定し実際の条件文をいれてテストすると
「関係演算子が無効です」と出てしまいます。

GridViewのデータソース機能?を使用して上記のような使い方は出来ないのでしょうか?


VB.NET VWDにて開発を行っております。
HIRO
大ベテラン
会議室デビュー日: 2002/06/21
投稿数: 109
投稿日時: 2006-10-11 21:24
パラメータクエリのことですか?

参考URL
http://msdn2.microsoft.com/ja-jp/library/system.data.oledb.oledbparameter.aspx

間違っていたらごめんなさい

_________________
--------------------------------------------
HIRO's.NET VB.NETとC#のTipsを掲載しています

[ メッセージ編集済み 編集者: HIRO 編集日時 2006-10-11 21:25 ]
花茶
会議室デビュー日: 2006/10/11
投稿数: 12
投稿日時: 2006-10-12 09:17
HIROさん、返答ありがとうございます。

なにぶん初心者なもので上記のパラメータクエリというものが
よく分からないのですが(参考先を熟読してみます)簡単に言うと
GridViewコントロールのデータソースの構成を指定するところで
パラメタを指定できると思うのですが(:aaa こんな感じで)
そのパラメタに値(BBB = "001"の"001")を設定することは出来ても
WHERE句以降の構文などを指定することは出来ないのかな?
ということなんです。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-10-12 10:31
> WHERE句以降の構文などを指定することは出来ないのかな?

構文の指定はできないですね。
SQL文の作り方等でいろいろ工夫されている方はいるようです。
もう少し具体的にこんなパターンを用意したい、という記述があると詳しい方から
フォローがあるかもしれません。
花茶
会議室デビュー日: 2006/10/11
投稿数: 12
投稿日時: 2006-10-12 10:52
どっとねっとふぁんさん、回答ありがとうございます。

やはり構文の指定は出来ないのですか・・・。

>もう少し具体的にこんなパターンを用意したい

動的に生成されるWHERE句が多岐にわたり、一定していないのです。
やはりGridViewのデータソース機能では無理があるのでしょうか。
追加の質問になってしまうのですが
幾つかの構文を用意しておき、パラメタで使用する構文を変える
ということも出来ないのですよね?

それが無理だとすると、一度コード内でSQL文を生成し、データを取得したのち
取得したデータをGridViewに反映させるやり方しかないと思うのですが
GridViewでそのような使い方をしているのあまり見たことがないので・・・。
ページングも使えないし。うーん・・・。
GridViewを使わないで何かスマートなやり方ってないのでしょうか。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-10-12 11:26
データ取得する前に
SqlDataSource.SelectCommand =
みたいにすればいいんじゃないでしょうか?

「ページングも使えないし」とはどういう意味ですか?
花茶
会議室デビュー日: 2006/10/11
投稿数: 12
投稿日時: 2006-10-12 13:21
べるさん、回答ありがとうございます。

勉強不足でした。
SelectCommandを使ってなんとか実現できそうです。
ありがとうございました。

>「ページングも使えないし」とはどういう意味ですか?

GridViewでデータソースを使用せず、生成されたデータを流し込む
ようなやり方をするとページ切り替えの数字?(1/2/3のようなやつ)が
自動で作成されないと聞いたのですが、、、
実際にやったことがないので間違っていたら、こちらの勘違いと言うことで
無視してください。申し訳ありませんでした。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-10-12 15:33
> GridViewでデータソースを使用せず、生成されたデータを流し込む
> ようなやり方をするとページ切り替えの数字?(1/2/3のようなやつ)が
> 自動で作成されないと聞いたのですが、、、

自動でページングが行われる場合、すべてのデータをDataTableに取り出すという
作業が行われています。
これは非効率ですから、あえて必要な部分のデータを取り出してページングを
行うようにプログラムを組む、ということもあります。
自動で作成されるというのはある意味メリットですが、アプリケーションの
内部的にはデメリットになっている場合もあるので、それにこだわる必要は
ないと思います。
1

スキルアップ/キャリアアップ(JOB@IT)