• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DataViewで複数条件のフィルタのやり方)

DataViewで複数条件のフィルタのやり方

このQ&Aのポイント
  • Vb2005とACCESS2003の開発環境で、データテーブルのフィルタ処理をしたい。具体的には、ふりがなに基づいてあ行、か行などの条件で抽出を行いたいが、うまくいかない。式の書き方を教えて欲しい。
  • 現在のコードでは、フリガナがアで始まる人のみを抽出しているが、複数の条件をどのようにフィルタにかければ良いかわからない。ANDや&を試したがうまくいかない。
  • データテーブルのフィルタ処理で、ふりがなに基づいて複数の条件をかける方法を教えて欲しい。

質問者が選んだベストアンサー

  • ベストアンサー
  • ppg-2
  • ベストアンサー率39% (77/193)
回答No.2

失礼しました。勘違いしていましたね。 調べてみたらleft関数は使えないようですね。申し訳ありません。 代替関数のsubstringが使えそうなので、これでどうですか? dv.RowFilter = "substring(フリガナ,1,1) in ('ア','イ','ウ','エ','オ')" またLIKEを使うのであれば dv.RowFilter = "(フリガナ LIKE 'ア%') OR ("フリガナ LIKE 'イ%')・・・ とORでつなげれば可能だと思います。 ただパフォーマンスは最初の方がいいと思います。

nanacyanyo
質問者

お礼

こんにちは、再びの回答ありがとうございました。 教えていただいたコードで、フィルタをかけることができました。 悩んでいたのですっきりできてうれしいです。 「substring」関数というのを知らなかったのでwebで見てみました。勉強になりました。 LIKE関数のつなげ方も教えていただき、ありがとうございます。 パフォーマンスが「substring」の方が良いとのことなので、こちらを使わせていただきます。本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • ppg-2
  • ベストアンサー率39% (77/193)
回答No.1

>dv.RowFilter = "フリガナ LIKE 'ア%'" dv.RowFilter = "left(フリガナ,1) in ('ア','イ','ウ','エ','オ')" これではどうですか? ちなみにLIKEはア行を抽出するのではなく、アタマとかアサガオとか抽出するものです

nanacyanyo
質問者

お礼

ppg-2さま、回答ありがとうございました。 >dv.RowFilter = "left(フリガナ,1) in('ア','イ','ウ','エ','オ')" で実行したところ、「left」の部分で「式に定義されていない関数呼び出し left() が含まれています。」とエラーになってしまいます。 何か他に設定が必要でしょうか? 「LIKE」ですが、ア行を抽出しようとしたのではないです。アで始まるフリガナの人を抽出しようとしました。ア行を抽出するためにdv.RowFilter = "フリガナ LIKE 'ア%'"のあとに'イ%'や'ウ%'をANDなどでくっつけるのだろうか?と思っていました。わかりにくくてすみませんでした。 「Left」関数について調べてみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Accessクエリで行を指定

    こんにちは。 アクセスに関して質問させてください。   テーブルからアで始まるレコードを抽出する場合 Like "ア*"としますよね。 これをア行・カ行・・・と抽出したい場合はどのようにしたらよいのでしょうか? 初歩的な質問ですみませんが、よろしくお願いします。

  • エクセルの関数で複数条件での抽出

    エクセルの関数を教えて欲しいです。 会員番号順に並んだ名簿を、別のシートへフリガナの「ア行」「カ行」「サ行」・・・・と フリガナ順で抽出をしたいのです。 下の図が関数でやりたいイメージです。 私自身、VBAは全く分からなく、関数なら初心者程度に分かりますので関数で 教えて下さい。 宜しくお願いします。

  • DataSetの複数テーブルをひとつのDataGridViewでまとめて出したい

    こんにちは、いつも参考にさせていただいています。 VS2005のC#で制作しているのですが、 ひとつのデータセットの中に3つのテーブルがあります。 そのテーブル全てをデータグリッドビューでだしたいのですが、 ひとつのテーブルしか上手に出ません。 3つのテーブルをひとつのグリッドビューに出す方法を教えてください。 現状は以下のコードで一つのテーブルだけ表示しています。 dv = new DataView(dataset.Tables["data"], "", "", DataViewRowState.CurrentRows); dataGridView1.DataSource = dv;

  • MS-Access2000「クエリーの抽出条件」

    クエリーの抽出条件を以下のように設定し実行しましたが、目的のレポートが作成できません。どうしてでしょうか?ご指導ください。 <条件>   名簿テーブルの「フリガナ」に対して・・・   Between "ア*" AND "ト*"   として実行しました。 <結果>   フリガナ ア~テ までしか表示されません。「ト」のつくデータもあるので  すが・・・。 以上、よろしくお願いします。

  • C#での複数フィールドの条件付き抽出について

    Visual C# 2010 Expressと.NET Framework 4.5での質問です。 Accessデータベースの複数のフィールドに対して条件をつけて検索したいと思っています。 dView = new DataView(dSet.Tables["t_" + (テーブル名)] ,"(フィールド1に対する条件式)" , "", DataViewRowState.CurrentRows); dView = new DataView(dSet.Tables["t_" + (テーブル名)] , "(フィールド2に対する条件式)", "", DataViewRowState.CurrentRows); this.dataGridView2.DataSource = dView; 参照元のテーブル名が同じであるためか、これを実行すると後半のフィールド2に対する 条件式を満たすレコードがすべてdataGridViewに表示される結果になります。 両方の条件を満たすレコードだけを表示するにはどうしたらいいでしょうか。 C#などの本でも、データベースに関してはそれほど詳しくは書いていないので困っています・・・。 どうか、よろしくお願いします。

  • DataViewの新しい行の確定の仕方

    よろしくお願いします。VB2005でWindowsアプリを勉強しながら開発しています。DataViewの取り扱い法について混乱してしまい、お力をお借りしたいと思い、投稿しました。 DataGridViewにTable1のフィルタ結果を表示させています。 Dim i As String i = ComboBox1.Text Dim dv As New DataView dv.Table = DataSet1._Table1 dv.RowFilter = "コード = '" & i & "'" DataGridView1.DataSource = dv このDataGridView1に新しい行を追加してデータを入力し、保存を行いたいのですがいまいちよくわかりません。 行の追加ボタンを押したときのコード。先頭の列に001と表示された行が追加される。  Dim i As String i = ComboBox1.Text Dim dv As New DataView dv.Table = DataSet1._Table1 dv.RowFilter = "コード = '" & i & "'" DataGridView1.DataSource = dv  Dim drv As DataRowView  drv = dv.AddNew()  drv("コード")="001" 新しい行を追加するのに、Dim drv As DataRowView 以前のコードが、フィルタを行ったときと同じコードなんですが、もっとスマートな方法はありますでしょうか? あと、ユーザーが行の追加ボタンを押した後に、Form上のDataGridView1に必要事項を入力して、保存ボタンを押すと、追加した行を確定して保存したいのですが、どのようにするのでしょうか? 参考書にはEndEditメソッドを使うとありました。 Dim drv As DataRowView drv = dv.AddNew() drv("コード")="001" drv.EndEdit() これだと、コード欄に001と入力した時点で確定になってしまうのでは?と思っています。コード欄の他にも列が10行くらいあるのですが、ユーザーが入力しおわり、保存ボタンを押したときにどのように行の追加編集を確定してテーブルに反映するのかわかりません…。参考サイトでも良いので教えてください、よろしくお願いします。

  • 【VB】データグリッドに読み込んだテーブルの変更を元のデータベースに反映させたい

    VB歴6ヶ月です。 VBのバージョンは2005です。 mdbから読み込んだデータベースをデータグリッドビューコントロールで表示しました。 CNには接続パスが入っていてmdbとの接続は確立しています。 データグリッドビューコントロールのオブジェクト名はDGVです。 読み込むテーブル名はt社員マスターです。 Private sub メンテナンス() Dim DS As DataSet = New DataSet("社員マスター") Dim SQL As String = "SELECT * FROM t社員マスター" Dim DA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(SQL, CN) DA.Fill(DS, "社員マスター") Dim DV As DataView = New DataView(DS.Tables("社員マスター")) DGV.DataSource = DV End sub これでグリッドに読み込ますことはできたのですが、 読み込んだデータをグリッド上で変更したら元のデータベースにも反映したいのですが やり方がわかりません >< 具体的なコード、やり方を教えていただけたらありがたいです。

  • Accessクエリでの複数の抽出条件設定

    Accessを利用して住所録のデータベースを作成しています。パラメータークエリを利用して複数の項目の検索結果をフォーム上に表示させたいのですが上手くいきません。 フリガナと勤務先の二つのフィールドを利用して検索結果を表示したいのですが, ・フリガナだけに条件を入力した場合 ・勤務先だけに条件を入力した場合 ・フリガナと勤務先の両方に条件を入力した場合 の3つのパターンを想定しています。 例えば,フリガナと勤務先の両方の検索結果を表示させる場合,フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" Or Is Null と入力すると,フリガナと勤務先の両方に検索条件を入力した場合, ・フリガナが該当し,かつ勤務先が該当するデータ のほかに ・フリガナが該当し,勤務先が空白のデータ が抽出されます。フリガナと勤務先の両方に検索条件をいれたときには,勤務先が空白のデータを抽出しないようにしたいのですが,どうしたら良いでしょうか。フリガナだけで検索するときには,勤務先が空白かどうかは考慮しない結果を表示させたいと思います。 ちなみに, フリガナフィールドの抽出条件に Like [フリガナを入力] & "%" 勤務先フィールドの抽出条件に Like [勤務先を入力] & "%" とすると,勤務先だけで検索したい場合に,勤務先の記載がない人のデータが出てこなくなってしまいます。 初心者ですが,よろしくお願いいたします。

  • エクセルで名簿を50音で切り分ける

    一つのシートに名簿があります。 半角カタカナでフリガナデータを持っていますが、 ア行で始まる人のシート、 カ行で始まる人のシート、・・・・ という様に切り分けたいのですが・・・ そういう事ってマクロで可能ですか とりあえず、ア行は1、カ行は2、と関数でコーディングしておき、1の範囲を新規シートにコピー、2の範囲を・・・とやっていけばいいのかなぁ・・・などとおぼろげに考えていますが・・・ ただ、現実に自分でマクロを組むことが出来ないので・・・ どうすればよいか教えていただければ幸いです。

  • 複数条件抽出(アクセス)

    F得意先マスターを作成しました。得意先CD、得意先名、フリガナ、住所、TELの項目名があります。(テーブルから作成しました) 例えば、フリガナがフで始まり、住所が神奈川で始まるものを抽出したいので、 テキストボックスを二つ作成し、コマンドボタンも作成しました。一つ目のテキストボックスにはフリガナを入力、二つ目には住所を入力します。 これを抽出するマクロを作成したいのですが、どうしてよいのか?? (また、一つ目のテキストボックスには何か条件を入れますが、二つ目にはいれないで、抽出したいというものにも対応したいと思っています)