C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.5337 の関連記事表示

<< 0 >>
■5337  Re[1]: マウスの左クリックを押した状態かそうでないかを判断したい
□投稿者/ も -(2006/08/07(Mon) 17:29:45)

    分類:[C#] 

    No5336に返信(らんさんの記事)
    > はじめまして。らんと申します。
    >
    > マウスの左クリックを押した状態かそうでないかを判断したいのですが、
    > どうやったらとれるでしょうか?
    >
    > よろしくお願い致します。
    MouseDownイベント/MouseUpイベントで、マウスのボタンの状態を把握する構造にしてみては?
    ※「右クリックを押した状態」というのがイマイチわかりませんがw;
     …勝手にマウスの右クリック用のボタンが押された状態と判断しました。
記事No.5336 のレス /0過去ログ5より / 関連記事表示
削除チェック/

■5337  DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/10(Tue) 21:07:05)

    分類:[ASP.NET (C#)] 

    2007/07/11(Wed) 16:15:14 編集(投稿者)
    2007/07/11(Wed) 12:37:29 編集(投稿者)
    2007/07/11(Wed) 03:47:38 編集(投稿者)

    <pre><pre>ご質問お願い致します。
    C#を使用しております。
    t_transmitはSQLのカラムで、bit型です。0又は1が入ります。
    下記コードから(case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmitではなくt_transmitならば0または1で検索すれば表示
    されますが、下記コードのように送信未処理、送信済みに変換すると検索結果が表示されませんでした。
    いろいろ試したのですがどのようにしたら送信未処理、送信済みで検索できるようになるのかご教授お願いできますでしょうか。
    お願い致します。
    Key[0]は検索文字列です。

    string sql = "select (case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmit from tb_customer order by iden desc";

    SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["sqlConnectionString"]);
    SqlDataAdapter da = new SqlDataAdapter(sql,cn);
    DataSet ds = new DataSet();
    da.Fill(ds,"test");
    datagrid.DataSource = ds.Tables["test"];


    string filter = "";
    filter += "(t_transmit LIKE '%"+Key[0]+"%' )";

    dv = new DataView(ds.Tables["test"]);
    dv.RowFilter =filter;
    datagrid.DataSource=dv;//データグリッド
    datagrid.DataBind();//データグリッドへバインド</pre></pre>
親記事 /過去ログ15より / 関連記事表示
削除チェック/

■5338  Re[1]: DATAVIEWのROWFILTERでの検索
□投稿者/ じゃかるた -(2007/07/10(Tue) 22:20:35)
    No5337 (C#初心者 さん) に返信
    Key[0]の値は何?
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5343  Re[2]: DATAVIEWのROWFILTERでの検索
□投稿者/ じゃかるた -(2007/07/11(Wed) 10:30:29)
    > ■No5337 (C#初心者 さん) に返信

    >Key[0]は検索文字列です。
    編集で更新されると気づかないことが多いです...返信してください。

    それとまったく回答になっていません。

    filter += "(t_transmit LIKE '%"+Key[0]+"%' )";
    dv = new DataView(ds.Tables["test"]);
    dv.RowFilter =filter;

    これが何してるかは理解できてます?
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5350  Re[3]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/11(Wed) 12:43:55)
    No5343 (じゃかるた さん) に返信
    >>■No5337 (C#初心者 さん) に返信
    >
    > >Key[0]は検索文字列です。
    > 編集で更新されると気づかないことが多いです...返信してください。
    >
    > それとまったく回答になっていません。
    >
    > filter += "(t_transmit LIKE '%"+Key[0]+"%' )";
    > dv = new DataView(ds.Tables["test"]);
    > dv.RowFilter =filter;
    >
    > これが何してるかは理解できてます?
    >
    回答になっていませんか?
    Key[0]は文字が入ります。その文字からt_transmit LIKE '%"+Key[0]+"%' で
    一致するものをデータグリッドに表示させようとしています。
    datatableをdataviewにいれ、dvのメソッドでフィルターを書けデータグリッドにバインドしているものと
    思います。
    "(t_transmit LIKE '%"+Key[0]+"%' )";のt_transmitを
    (case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmitにしても

    case t_transmit when 0 then '送信未処理' else '送信済み' endにしても
    エラーになりました。

    お願い致します。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5354  Re[4]: DATAVIEWのROWFILTERでの検索
□投稿者/ じゃかるた -(2007/07/11(Wed) 13:06:41)
    No5350 (C#初心者 さん) に返信
    >t_transmit LIKE '%"+Key[0]+"%'
    t_transmit LIKE '%0%'
    t_transmit LIKE '%1%'

    t_transmit LIKE '%送信済み%'
    t_transmit LIKE '%送信未処理%'

    Key[0]の値によって表示が変わるのはお分かりでしょうか?

    送信未処理、送信済みで表示したいのであれば
    Key[0]に"送信済み"、又は"送信未処理"が入ってきてますか?ということを確認しています。

記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5355  Re[5]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/11(Wed) 13:09:14)
    No5354 (じゃかるた さん) に返信
    > ■No5350 (C#初心者 さん) に返信
    > >t_transmit LIKE '%"+Key[0]+"%'
    > t_transmit LIKE '%0%'
    > t_transmit LIKE '%1%'
    >
    > t_transmit LIKE '%送信済み%'
    > t_transmit LIKE '%送信未処理%'
    >
    > Key[0]の値によって表示が変わるのはお分かりでしょうか?
    >
    > 送信未処理、送信済みで表示したいのであれば
    > Key[0]に"送信済み"、又は"送信未処理"が入ってきてますか?ということを確認しています。
    >
    大変すみません。そうですね。送信済みなどで検索をかけても表示されません。
    0と1ならば検索結果が表示されます。
    テキストボックスからの入力で結果を返すので文字は何でもいれれます。一致していれば表示します。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5360  Re[6]: DATAVIEWのROWFILTERでの検索
□投稿者/ 魔界の仮面弁士 -(2007/07/11(Wed) 13:25:44)
    2007/07/11(Wed) 13:31:21 編集(投稿者)

    個人的には、Key[0] の値よりも、それを設定した後の
    filter の値がどうなっているかの方が気になります。
    (filter の内容を、実際に確認されていますか?)

    # というか、今回の内容だけみれば、SQL 自体で WHERE してしまえば良いような気も。


    > string filter = "";
    > filter += "(t_transmit LIKE '%"+Key[0]+"%' )";

    なぜ「+=」なのかという突っ込みも入れたいのですが、そもそも、Key[0] って、
    > テキストボックスからの入力で結果を返すので文字は何でもいれれます。
    なのですよね。
    であれば、シングルクォート(')、ワイルドカード文字(*,%)、角括弧([,])といった
    特殊文字が入力された場合への対応も必要でしょう。


    > datagrid.DataBind();//データグリッドへバインド
    System.Windows.Forms.DataGrid や、
    System.Windows.Forms.DataGridView に、DataBind メソッドは無いような。

    もしかして、最初の質問時に
    > 分類:[C#]
    を選択されていましたが……実際には [ASP.NET (C#)] なのではありませんか?
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5362  Re[7]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/11(Wed) 13:34:13)
    No5360 (魔界の仮面弁士 さん) に返信
    > 個人的には、Key[0] の値よりも、それを設定した後の
    > filter の値がどうなっているかの方が気になります。
    >
    >>string filter = "";
    >>filter += "(t_transmit LIKE '%"+Key[0]+"%' )";
    >
    > なぜ「+=」なのかという突っ込みも入れたいのですが、そもそも、Key[0] って、
    >>テキストボックスからの入力で結果を返すので文字は何でもいれれます。一致していれば表示します。
    > なのですよね。であれば、シングルクォートやワイルドカード文字への対応が 必須 かと。
    どういうことでしょうか?シングルでは囲んでいますけど。というか検索結果は他のt_transmit以外の列名を入れれば表示はされるので
    問題はROWFILTER内で(case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmitなどを書くことが制限により?
    出来ないということです。なので解決策を伺っているしだいです。
    >
    >>datagrid.DataBind();//データグリッドへバインド
    > System.Windows.Forms.DataGrid や、
    > System.Windows.Forms.DataGridView に、DataBind メソッドは無いような。
    >
    > もしかして、最初の質問時に
    >>分類:[C#]
    > を選択されていましたが……実際には [ASP.NET (C#)] なのではありませんか?
    はい・・・申し訳ありません。
    ASP.NETのC#です。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5368  Re[8]: DATAVIEWのROWFILTERでの検索
□投稿者/ 魔界の仮面弁士 -(2007/07/11(Wed) 14:30:17)
    # あえて、解決チェックを外した状態で投稿。
    
    
    ■No5362 (C#初心者 さん) に返信
    > どういうことでしょうか?シングルでは囲んでいますけど。
    
    そういうことではありません。テキストボックスに特殊文字が入力されていた場合の話です。
    具体的な例を挙げてみれば、たとえば
     filter = "(t_transmit LIKE '%送信%' )";      // 「送信」を検索
    のような内容であれば良いのですが、
     filter = "(t_transmit LIKE '%送*信%' )";     // 「送*信」を検索 → エラー
     filter = "(t_transmit LIKE '%送]信%' )";     // 「送]信」を検索 → エラー
    といった文字列だと、DataView の処理がエラーになってしまう、ということです。
    
    ですから、TextBox からそうした特殊な文字列が入ってきた場合に備え、
    それぞれの特殊文字に対して適切なエスケープ処理を施したさなければなりません。
    
    たとえば上記の例でいえば、処理後のフィルタの内容は、
     filter = "(t_transmit LIKE '%送[*]信%' )";     // 「送*信」を検索
     filter = "(t_transmit LIKE '%送[]]信%' )";     // 「送]信」を検索
    などといった結果になるでしょう。
    
    これらの特殊文字については、ヘルプで DataColumn クラスの Expression プロパティを調べると載っています。
    
    
    > はい・・・申し訳ありません。
    > ASP.NETのC#です。
    分類の修正をお願いします。>投稿者 or 管理人s
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5376  Re[9]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/11(Wed) 16:37:40)
    No5368 (魔界の仮面弁士 さん) に返信
    > # あえて、解決チェックを外した状態で投稿。
    >
    >
    > ■No5362 (C#初心者 さん) に返信
    >>どういうことでしょうか?シングルでは囲んでいますけど。
    >
    > そういうことではありません。テキストボックスに特殊文字が入力されていた場合の話です。
    > 具体的な例を挙げてみれば、たとえば
    >  filter = "(t_transmit LIKE '%送信%' )"; // 「送信」を検索
    > のような内容であれば良いのですが、
    >  filter = "(t_transmit LIKE '%送*信%' )"; // 「送*信」を検索 → エラー
    >  filter = "(t_transmit LIKE '%送]信%' )"; // 「送]信」を検索 → エラー
    > といった文字列だと、DataView の処理がエラーになってしまう、ということです。
    >
    > ですから、TextBox からそうした特殊な文字列が入ってきた場合に備え、
    > それぞれの特殊文字に対して適切なエスケープ処理を施したさなければなりません。
    >
    > たとえば上記の例でいえば、処理後のフィルタの内容は、
    >  filter = "(t_transmit LIKE '%送[*]信%' )"; // 「送*信」を検索
    >  filter = "(t_transmit LIKE '%送[]]信%' )"; // 「送]信」を検索
    > などといった結果になるでしょう。
    >
    > これらの特殊文字については、ヘルプで DataColumn クラスの Expression プロパティを調べると載っています。
    >
    >
    >>はい・・・申し訳ありません。
    >>ASP.NETのC#です。
    > 分類の修正をお願いします。>投稿者 or 管理人s

    分類修正いたしました。申し訳ありません
    そういうことでしたか、なるほど調べてみます。ご教授ありがとうございます。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5390  Re[9]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/11(Wed) 21:01:36)
    No5368 (魔界の仮面弁士 さん) に返信
    > # あえて、解決チェックを外した状態で投稿。
    >
    >
    > ■No5362 (C#初心者 さん) に返信
    >>どういうことでしょうか?シングルでは囲んでいますけど。
    >
    > そういうことではありません。テキストボックスに特殊文字が入力されていた場合の話です。
    > 具体的な例を挙げてみれば、たとえば
    >  filter = "(t_transmit LIKE '%送信%' )"; // 「送信」を検索
    > のような内容であれば良いのですが、
    >  filter = "(t_transmit LIKE '%送*信%' )"; // 「送*信」を検索 → エラー
    >  filter = "(t_transmit LIKE '%送]信%' )"; // 「送]信」を検索 → エラー
    > といった文字列だと、DataView の処理がエラーになってしまう、ということです。
    >
    > ですから、TextBox からそうした特殊な文字列が入ってきた場合に備え、
    > それぞれの特殊文字に対して適切なエスケープ処理を施したさなければなりません。
    >
    > たとえば上記の例でいえば、処理後のフィルタの内容は、
    >  filter = "(t_transmit LIKE '%送[*]信%' )"; // 「送*信」を検索
    >  filter = "(t_transmit LIKE '%送[]]信%' )"; // 「送]信」を検索
    > などといった結果になるでしょう。
    >
    > これらの特殊文字については、ヘルプで DataColumn クラスの Expression プロパティを調べると載っています。
    >
    >
    >>はい・・・申し訳ありません。
    >>ASP.NETのC#です。
    > 分類の修正をお願いします。>投稿者 or 管理人s


    試したところ filter = "(t_transmit LIKE '%送[]]信%' )"; // 「送]信」を検索
    ではエラーになりませんでした。
    filter = "(t_transmit LIKE '%送[*]信%' )"; // 「送*信」を検索
    だとエラーになりました。
    エスケープ文字は列名に入るとエラーが返るそうです
    ワイルドカードの場合エラーが出ていました。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5393  Re[10]: DATAVIEWのROWFILTERでの検索
□投稿者/ 魔界の仮面弁士 -(2007/07/11(Wed) 22:28:47)
    No5390 (C#初心者 さん) に返信
    > filter = "(t_transmit LIKE '%送[*]信%' )";     // 「送*信」を検索
    > だとエラーになりました。
    
    正確なエラーの内容まで明記していただけますか?
    あと、.NET Framework のバージョンも教えてください。
    
    
    こちらとしては、v1.1 および v2.0 環境で、下記のソースを (csc.exeで)コンパイルして、
    「送*信」を含む文字列が表示されることまで動作確認したうえで投稿していましたので、
    問題は無いと思っていたのですけれど……何か環境依存するような部分があるのかも知れませんね。
    
    
    using System;
    using System.Windows.Forms;
    using System.Data;
    
    public class Form1 : Form
    {
        public static void Main() { Application.Run(new Form1()); }
    
        public Form1()
        {
            DataGrid dataGrid1 = new DataGrid();
            dataGrid1.Dock = DockStyle.Fill;
            Controls.Add(dataGrid1);
    
            DataTable tbl = new DataTable();
            tbl.Columns.Add("t_transmit");
            tbl.Rows.Add(new object[] { "a送信b" });
            tbl.Rows.Add(new object[] { "a送*信b" });   // この行のみが表示されればOK
            tbl.Rows.Add(new object[] { "a送%信b" });
            tbl.Rows.Add(new object[] { "a送[信b" });
            tbl.Rows.Add(new object[] { "a送]信b" });
            tbl.Rows.Add(new object[] { "a送'信b" });
            tbl.Rows.Add(new object[] { "a送#信b" });
    
            string filter = "(t_transmit LIKE '%送[*]信%' )";
    
            DataView dv = new DataView(tbl);
            dv.RowFilter = filter;
    
            dataGrid1.DataSource = dv;
        }
    }
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5351  Re[4]: DATAVIEWのROWFILTERでの検索
□投稿者/ ぽぴ王子 -(2007/07/11(Wed) 13:00:56)
>
    No5350 (C#初心者 さん) に返信
    
    > 回答になっていませんか?
    > Key[0]は文字が入ります。その文字からt_transmit LIKE '%"+Key[0]+"%' で
    > 一致するものをデータグリッドに表示させようとしています。
    
    たぶん、私が回答したとしても同じような流れになると思うので。
    「Key[0]は文字が入ります。」はいいのですよ。ソースからだいたい想像がつきますし。
    問題は
    
    な か み
    
    だと思うのですね。
    > Key[0]の値は何?
    という、じゃかるたさんの質問に
    > Key[0]は検索文字列です。
    と返されても、じゃあその検索文字列って何が入ってるのさ?という話になるわけで。
    
    元々の質問が「検索結果が表示されない」ということで、それを聞いておられるわけ
    ですから、もしかすると検索条件がマズいんじゃないかな〜?と思って、じゃかるた
    さんも聞かれたのではないかと勝手に推測しちゃうのですけど。
    # まあ「だったらちゃんと聞け!」という話ももちろんなのですが
    
    で、改めて私も知りたいのですが
    Key[0] にはどんな「文字列」が入っているでしょうか。原因はそこじゃない可能性も
    ありますが、よろしくお願いします。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5353  Re[5]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/11(Wed) 13:04:53)
    2007/07/11(Wed) 13:07:37 編集(投稿者)

    No5351 (ぽぴ王子 さん) に返信
    > ■No5350 (C#初心者 さん) に返信
    >
    >>回答になっていませんか?
    >>Key[0]は文字が入ります。その文字からt_transmit LIKE '%"+Key[0]+"%' で
    >>一致するものをデータグリッドに表示させようとしています。
    >
    > たぶん、私が回答したとしても同じような流れになると思うので。
    > 「Key[0]は文字が入ります。」はいいのですよ。ソースからだいたい想像がつきますし。
    > 問題は
    >
    > な か み
    >
    > だと思うのですね。
    >>Key[0]の値は何?
    > という、じゃかるたさんの質問に
    >>Key[0]は検索文字列です。
    > と返されても、じゃあその検索文字列って何が入ってるのさ?という話になるわけで。
    >
    > 元々の質問が「検索結果が表示されない」ということで、それを聞いておられるわけ
    > ですから、もしかすると検索条件がマズいんじゃないかな〜?と思って、じゃかるた
    > さんも聞かれたのではないかと勝手に推測しちゃうのですけど。
    > # まあ「だったらちゃんと聞け!」という話ももちろんなのですが
    >
    > で、改めて私も知りたいのですが
    > Key[0] にはどんな「文字列」が入っているでしょうか。原因はそこじゃない可能性も
    > ありますが、よろしくお願いします。

    ありがとうございます。すみません。
    中身はテキストボックスからの入力すべてなので
    あああ、いいい、aaa、1などいろいろです。
    t_transmitにLINKで一致している文字がある場合出したいんです。。
    回答になっていますでしょうか?

    とりあえず上記の
    string sql = "select (case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmit from tb_customer order by iden desc";

    SqlConnection cn = new SqlConnection(ConfigurationSettings.AppSettings["sqlConnectionString"]);
    SqlDataAdapter da = new SqlDataAdapter(sql,cn);
    DataSet ds = new DataSet();
    da.Fill(ds,"test");
    datagrid.DataSource = ds.Tables["test"];


    string filter = "";
    filter += "(t_transmit LIKE '%"+Key[0]+"%' )";

    dv = new DataView(ds.Tables["test"]);
    dv.RowFilter =filter;
    datagrid.DataSource=dv;//データグリッド
    datagrid.DataBind();//データグリッドへバインド
    を実行すればエラーはでず検索は出来ますがt_transmitに実際SQLには言っているものが
    0と1なのでそれで検索を掛けないと表示されません
    送信未処理、送信済みで検索し表示したいんです。

    お願い致します。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5356  Re[6]: DATAVIEWのROWFILTERでの検索
□投稿者/ じゃかるた -(2007/07/11(Wed) 13:12:22)
    No5353 (C#初心者 さん) に返信
    > ■No5351 (ぽぴ王子 さん) に返信

    ># まあ「だったらちゃんと聞け!」という話ももちろんなのですが

    念のため
    >Key[0]の値は何?
    と始めから聞いています。型は聞いていませんが^^;

    ぽぴ王子さんの推測どおりです。ちなみに原因の特定もできていませんので。
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/

■5365  Re[7]: DATAVIEWのROWFILTERでの検索
□投稿者/ じゃかるた -(2007/07/11(Wed) 13:45:49)
    2007/07/11(Wed) 13:48:06 編集(投稿者)

    No5356 (じゃかるた さん) に返信
    > ■No5353 (C#初心者 さん) に返信
    >問題はROWFILTER内で(case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmitなどを書くことが制限により?

    とりあえずコードはこのままですよ。
    >string sql = "select (case t_transmit when 0 then '送信未処理' else '送信済み' end)as t_transmit from tb_customer order by iden desc";

    >string filter = "";
    >filter += "(t_transmit LIKE '%"+Key[0]+"%' )";

    ROWFILTER内ってどっちのこと「sql」?「filter」?

    #済みですね。
記事No.5337 のレス / END /過去ログ15より / 関連記事表示
削除チェック/

■5364  Re[7]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 -(2007/07/11(Wed) 13:44:31)
    出来ました。ありがとうございました。
記事No.5337 のレス / END /過去ログ15より / 関連記事表示
削除チェック/

■5394  Re[8]: DATAVIEWのROWFILTERでの検索
□投稿者/ じゃかるた -(2007/07/12(Thu) 09:23:49)
    No5364 (C#初心者 さん) に返信
    >送信未処理、送信済みに変換すると検索結果が表示されませんでした。
    >出来ました。ありがとうございました

    ついでで。
    結局、原因はなんだったのでしょう?
記事No.5337 のレス /過去ログ15より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -