- - PR -
検索結果について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-29 00:09
こんばんは。さつきです。
よろしくお願いします。 asp.netを使用しており、 テキストボックスが3つあり(ID名はTextBox1、TextBox2、TextBox3とします)ボタンをクリックすると その3つの入力内容からDB(SQLSERVER2000)にアクセスしselectで出力件数を取得したいと思っているのですが 思う様に考えている結果が返ってこなく困っております。またテキストボックスはすべてLikeを使用して ワイルドカードを実現したいと思っています。 DBの情報として @a列:1234、 b列:123456、c列:123456 Aa列:12345678、b列:598、c列:123456789 Ba列:123、b列:598、c列:2545444 が入っているとします また、 aの内容はTextBox1、bの内容はTextBox2、cの内容はTextBox3 に格納するものだとします。 この様な状況で @TextBox1だけに123を入力した場合、カウント結果は2を返す ATextBox1に123、TextBox2に59と入力した場合、カウント結果は1を返す BTextBox1に123、TextBox2に59と入力した場合、カウント結果は1を返す CTextBox1に123、TextBox2に59、TextBox3に254と入力した場合カウント結果は1を返す にしたく下記の様なソースを作っているのですがselect文がおかしいせいかうまく結果が帰ってこなくて困っております。 /////////////////////////////////////////////////////////////////////////////////////////////////////// Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Session("a") = TextBox1.Text Session("b") = TextBox2.Text Session("c") = TextBox3.Text Dim qweStr As String = 接続文字列 Dim qweDb As SqlConnection = New SqlConnection(qweStr) Dim qwe As New SqlCommand _ ("SELECT count (*) from テーブル名 WHERE a LIKE @a or b Like @b or c Like @c", qweDb) qwe.Parameters.AddWithValue("@a", Session("ORGEdit")) qwe.Parameters.AddWithValue("@b", Session("USEEdit")) qwe.Parameters.AddWithValue("@c", Session("MBGRPEdit")) qweDb.Open() Dim qweDr As Integer = CType(qweCom.ExecuteScalar, Integer) qweDbDb.Close() /////////////////////////////////////////////////////////////////////////////////////////////////////// 何卒アドバイスよろしくお願いします。 | ||||||||
|
投稿日時: 2006-08-29 00:33
の、(1)( (2)と(3)は書き間違い? )が何故そうなるのかが少し理解できません。(マル数字は機種依存文字なので括弧にします) (1)は、なぜカウント2ですか?「ワイルドカードにしたい」という文面から、カウント3だと思ったのですが。 「ワイルドカードの実現」はどこで行っていますか?提示されているコードにはそれらしいのが見当たらないようです。 「%」が0個以上の文字、「_」が任意の1文字等になります。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-08-29 00:37
http://www.wakhok.ac.jp/DB/subsection2.4.3.5.html
#1〜4の条件がおかしいですけど。。。 | ||||||||
|
投稿日時: 2006-08-29 01:17
囚人様、burton999様さっそくのお返答ありがとうございます。
引用: -------------------------------------------------------------------------------- (1)は、なぜカウント2ですか?「ワイルドカードにしたい」という文面から、カウント3だと思ったのですが。 「ワイルドカードの実現」はどこで行っていますか?提示されているコードにはそれらしいのが見当たらないようです。 -------------------------------------------------------------------------------- すいません。記述ミスです。 下記の様になります。 /////////////////////////////////////////////////////////////////////////////////////////////////////// Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Session("a") = TextBox1.Text Session("b") = TextBox2.Text Session("c") = TextBox3.Text Dim qweStr As String = 接続文字列 Dim qweDb As SqlConnection = New SqlConnection(qweStr) Dim qwe As New SqlCommand _ ("SELECT count (*) from テーブル名 WHERE a LIKE @a or b Like @b or c Like @c", qweDb) qwe.Parameters.AddWithValue("@a", Session("ORGEdit") & "%") qwe.Parameters.AddWithValue("@b", Session("USEEdit") & "%") qwe.Parameters.AddWithValue("@c", Session("MBGRPEdit") & "%") qweDb.Open() Dim qweDr As Integer = CType(qweCom.ExecuteScalar, Integer) qweDbDb.Close() /////////////////////////////////////////////////////////////////////////////////////////////////////// 引用: -------------------------------------------------------------------------------- の、(1)( (2)と(3)は書き間違い? )が何故そうなるのかが少し理解できません。(マル数字は機種依存文字なので括弧にします) -------------------------------------------------------------------------------- すいません。書き間違えです。 //////////////////////////////////////////////////////////////////////////////////// @TextBox1だけに123を入力した場合、カウント結果は3を返す ATextBox1に123、TextBox2に59と入力した場合、カウント結果は2を返す BTextBox1に123、TextBox2に59、TextBox3に254と入力した場合カウント結果は1を返す //////////////////////////////////////////////////////////////////////////////////// この状況で @、Bは希望通りの結果なのですが、Aだけカウント3をかえしてしまいます。 | ||||||||
|
投稿日時: 2006-08-29 01:37
NAL-6295です。
orで結んでいるので、どの条件でも3件返ってくる気がしますが、 (3)だけ希望通りというのが不思議ですね。 全部ANDなら確かに希望通りの結果になりそうですが。 ちなみに、ワイルドカードにしたいというのは、前方一致の事だったんですね。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ | ||||||||
|
投稿日時: 2006-08-29 02:39
同じ理由で、1で、TextBox1だけに何を入力しても、カウント結果は3を返すと思います。 どういう条件にしたいのか、日本語で書いてみるといいと思います。 #セッション変数名もマチガイですよね? [追記] あれ、3でもカウント結果は3を返すような気がします。 [ メッセージ編集済み 編集者: べる 編集日時 2006-08-29 02:53 ] |
1