環境:Visual Stadio 2008 XP データはAccessのmdb
DataRepeaterに関しての本やサイトが少ないので誰かおしえて下さい。
DataRepeater(Form2)にてテーブルのデータを表示しています。さらにボタンを追加してクリックするとその行のデータについて表示し追加でその行のデータを追加できるようにしています(Form3)。
しかし追加して戻った際、DataRepeaterは変更前の状態で表示されています。ここにフィルターをかけたいのですがこのフォーム(Form2)が開く都度、フィルターがかかった状態で表示したいのですが、コーディング方法を教えて下さい。
【例えば】
テーブルdd
a b c
1 あ
2 い
※aは自動でNoを振っている
<<Form2>>
(form3呼出ボタン)a 1 c
(form3呼出ボタン)a 2 c
※cは空白です(まだ何も登録してないから)
<<Form3>>
a 1 c か(←ここを入力)
(登録ボタン)
※「(登録ボタン)」にてcの「か」を登録してform2に
戻るのですが、以前、上のform2の状態のままです。
結果としては
<<Form2>>
(form3呼出ボタン)a 2 c
のみ表示して欲しいです。フィルターはcかnullかどうか
もしくは0かどうか?
というコーディング方法をおしえて下さい。
No.2ベストアンサー
- 回答日時:
FILTER に設定する際の NULL 判定は以下のようにしてください。
BindingSource.Filter = "商品コード IS NULL"
もしくは
BindingSource.Filter = "LEN(商品コード) = 0"
また更新した結果が FORM2 に反映されない理由は簡単です。
クラスと変数の守備範囲つまりスコープ の概念を理解する必要があります。
■ Visual Basic 中学校 > 初級講座 >第8回 もっと変数
http://homepage1.nifty.com/rucio/main/dotnet/sho …
物理的にFORM3 で入力した情報を DB に更新をかけたとしても FORM2 のデータはそのままです。
だから 更新結果を反映するコードの工夫が必要になります。
もし、現状で Form2 でDB更新処理(Update,delete,新規追加)を行っているのであれば
案1、データを読み込みしなおす。
Form3を 開く際に Form3.ShowDialog() で開き、Form3 の処理を終えるまで
Form2 側の操作をさせないようにする。
FORM3の処理終えて Form2に戻ってきたときに 再度 DBデータを読み込みしなおす。
その際、フィルター処理などもリセットされるので 元に戻す必要があります。
当然カーソル(行)も変わってしまいます。
案2、1レコード(行:Row) ごとに更新を行わない。遅延更新で対応する。
Form3 で直接的なDBを更新せず。Form2でDB更新するようにします。
具体的には Form3 で入力、もしくは指示(削除、追加、更新)された結果を
Form3から Form2に 結果1レコード(行:Row)を引き渡すようにして
FORM2の DataSet の テーブルに対して作業を行うようにします。
テーブルの RowState を手がかりにして指示(削除、追加、更新)を判定します。
もしくは何らかの内部フラグを引き渡して 判定できるようにコードを工夫します。
参考:■Visual Basic 中学校 >第4回 DataTableの利用
http://homepage1.nifty.com/rucio/main/VBdotNet/D …
参考:■DataRow.BeginEdit メソッド
http://www.weblio.jp/content/DataRow.BeginEdit+% …
最後にForm2 の TableAdapter のUpdate メソッドで 更新する。
なお、ほかにもいろいろやり方は考えられますが。 上記の案でいかがでしょうか?
この回答への補足
いい感じで更新もできてきたのですが、教えてください。
処理速度としてはForm3で登録するのと、Form2で登録するのとどちらが処理が早く後々の事を考えるとどちらがメンテしやすでしょうか?
ご提案いただきました
「案1、データを読み込みしなおす。」ですが単純にForm3を開く際、Form2は閉じて、Form3からNewで呼び出したら更新されてるのかと思ったのですが、そう簡単ではなかったんですね・・・。
「FORM3の処理終えて Form2に戻ってきたときに 再度 DBデータを読み込みしなおす」方法を伝授していただけないでしょうか。
No.1
- 回答日時:
DataRepeater であろうがDataGridView でも どちらもおなじです。
1.BindingSourceクラス
http://msdn.microsoft.com/ja-jp/library/system.w …
DataRepeater の 上に載せているものが DBなどの項目であった場合
BindingSource のコントロールを使ってフィルターができます。
BindingSource.Filter = "商品コード = 'A0003'" という具合です。
2.DATaVIEW クラスを使ってフィルター
Dim dv As DataView
dv = New DataView(Me.TESTDataSet.売上テーブル, "商品コード = 'A003'", _
"商品コード ASC", DataViewRowState.CurrentRows)
3.DataTable クラスを使ってフィルター
http://msdn.microsoft.com/ja-jp/library/det4aw50 …
====
上記1が 回答に近いとは思いますけど。
この回答への補足
ありがとうございました。
数字でも判別ができるように(なぜなったか不明)なりました。
さらに質問なのですが、
---------------<<Form3>>
a 1 c か(←ここを入力)
(登録ボタン)
※「(登録ボタン)」にてcの「か」を登録してform2に
戻るのですが、以前、上のform2の状態のままです。
結果としては
<<Form2>>
(form3呼出ボタン)a 2 c
-------------------------
の部分で、以前リストアップされたままです。
これはテーブルの情報が更新されただけではダメで、親フォームの
c部分も反映してなからダメって事でしょうか?
毎回、お世話になっております。早々にありがとうございます。昨夜からチャレンジしているのですが思ったとおりの結果が出ません。おバカ度がばれてしまいそうですが・・・。
BindingSourceのプロパティーでfilterがあったので、そこへc=nullとしてもダメで、数値へ変更してみたのですがうまくいきません。今朝ももう少しチャレンジして再度ご連絡させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
メモのコツを教えてください!
メモを取るのが苦手です。 急いでメモすると内容がごちゃごちゃになってしまったり、ひどいときには全く読めない時もあります。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
【VB.NET】DataRepeaterの使用について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
DataGrdViewに関連付けたデータ...
-
GridViewにバインドせずにデー...
-
DataGridコントロールのデータ...
-
Excelのグラフがちらつい...
-
GoogleスプレッドシートからExc...
-
ASP C# データベースから1行取得
-
【ASP.NET MVC】一覧編集画面
-
MSFlexGridのデータ表示位置の設定
-
VBAでページ番号、ページ最終行...
-
Listviewのデータを上から順番...
-
.NET SqlDataReader のレコー...
-
DataGridViewで表示に制限をつ...
-
Android用RSSリーダー開発について
-
VB.net CrystalReportでプロジ...
-
ExcelVBAを使って、値...
-
VB.NETで DataRow()を利用して...
-
テキストボックスのvalueとtext...
-
i=cells(Rows.Count, 1)とi=cel...
-
【VBA】指定したセルと同じ値で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】先頭の「0」飛び...
-
Listviewのデータを上から順番...
-
DataGrdViewに関連付けたデータ...
-
GASでスプレッドシートの一番上...
-
VBAでページ番号、ページ最終行...
-
.NET SqlDataReader のレコー...
-
MSFlexGridのデータ表示位置の設定
-
GridViewにバインドせずにデー...
-
ListViewで条件によって表示を...
-
ASP.NET DataGridの項目数(列...
-
ASP C# データベースから1行取得
-
DataGridViewで表示に制限をつ...
-
ASP.Net ObjectDataSource
-
GridViewを自動的にスクロール...
-
ACCESSのVBAで[Split]について
-
【ASP.NET MVC】一覧編集画面
-
エクセルマクロ小数点桁数
-
EXCEL2000のマクロ(ADO)にてCSV...
-
VBA ピボットテーブル自動更新
-
DataGridViewの内...
おすすめ情報