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

わんくま同盟

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

C# と VB.NET の入門サイト


■91972 / )  Re[2]: コンボボックスによる絞り込み
□投稿者/ たかし (4回)-(2019/08/15(Thu) 15:44:43)
No91945 (魔界の仮面弁士 さん) に返信
> ■No91943 (たかし さん) に返信
>>の2つのテーブルがありフォーム上にはComboBox1ととComboBox2があります。
> 
> Windows Forms アプリケーションを作成していて、
> tbl_部署というのは DataTable の事で良いでしょうか。
> 
> 言語指定が無かったですが、comboBox1 ではなく ComboBox1 と書かれていたので、
> とりあえず Visual Basic と仮定して書いてみます。
> 
> 
> Public Class Form1
>   Private ds As DataSet
>   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
>     ds = CreateSample()
> 
>     ds.Relations.Add("rel_部署_社員",
>              ds.Tables("tbl_部署").Columns("部署コード"),
>              ds.Tables("tbl_社員").Columns("部署コード"))
> 
>     Me.BindingSource1.DataSource = ds
>     Me.BindingSource1.DataMember = "tbl_部署"
> 
>     Me.BindingSource2.DataSource = Me.BindingSource1
>     Me.BindingSource2.DataMember = "rel_部署_社員"
> 
>     ComboBox1.DataSource = Me.BindingSource1
>     ComboBox1.ValueMember = "部署コード"
>     ComboBox1.DisplayMember = "部署名"
>     ComboBox2.DataSource = Me.BindingSource2
>     ComboBox2.ValueMember = "社員コード"
>     ComboBox2.DisplayMember = "社員名"
>   End Sub
> 
>   Private Function CreateSample() As DataSet
>     Dim ds As New DataSet("Sample") With {.CaseSensitive = True}
>     Dim tbl1 As DataTable = ds.Tables.Add("tbl_部署")
>     Dim tbl2 As DataTable = ds.Tables.Add("tbl_社員")
> 
>     tbl1.Columns.Add("部署コード", GetType(Decimal)).AllowDBNull = False
>     tbl1.Columns.Add("部署名", GetType(String)).AllowDBNull = False
>     tbl1.PrimaryKey = New DataColumn() {tbl1.Columns("部署コード")}
> 
>     tbl2.Columns.Add("社員コード", GetType(String)).AllowDBNull = False
>     tbl2.Columns.Add("社員名", GetType(String)).AllowDBNull = False
>     tbl2.Columns.Add("部署コード", GetType(Decimal)).AllowDBNull = True
>     tbl2.PrimaryKey = New DataColumn() {tbl2.Columns("社員コード")}
> 
>     tbl1.Rows.Add(10000D, "総務部")
>     tbl1.Rows.Add(10020D, "総務部総務課")
>     tbl1.Rows.Add(12000D, "営業部")
>     tbl1.Rows.Add(12010D, "営業部営業一課")
> 
>     tbl2.Rows.Add("AX0020", "金田 一太郎", 10000D)
>     tbl2.Rows.Add("BY0112", "今西 欣治", 10020D)
>     tbl2.Rows.Add("DX0987", "有馬 貴臣", 10020D)
>     tbl2.Rows.Add("DX1024", "山口 六平太", 10020D)
>     tbl2.Rows.Add("PN0132", "緒方 賢太", 12000D)
>     tbl2.Rows.Add("PC1024", "片岡 孝夫", 12010D)
>     tbl2.Rows.Add("PC2048", "久米 広明", 12010D)
> 
>     ds.AcceptChanges()
>     Return ds
>   End Function
> End Class


魔界の仮面弁士さま、お世話になります。
ご返事が遅くなり申し訳ありません。
先日お忙しい中、わざわざご提示いただいたコードにて絞り込み検索はできました。
どうもありがとうございます。

申し訳ないのですが、もう少し質問をさせてください。
実は弊社の従業員は650人程おりまして部署の数も十数ほどあります。
退職者や新入社員、また部署の異動なども頻繁に行なわれます。
このようなことに対応するために、コード内の追加ではなく、
ListRow(VBにはないようですが)を、テーブルあるいはビューから持ってくることは出来ないものでしょうか?
ストアドプロシージャも試しましたが、WindowsFormからのパラメータ操作の仕方が難しすぎて分かりません。
何よりExcelやAccessでは簡単に実現出来るこれらの機能の説明が、
そもそもVB.NETではウェブのどこを探しても出てきません(私の探し方が悪いのかもしれませんが)。
そのようなわけでもしかしてこれは不可能なのではと思い始めています。

実はDataGridViewで目的に近いものが作成できることが分かったところなのですが、
当初の目論見通りふたつのComboBoxだけで実行する方法が何とも諦めきれません。
どうかもう少しお知恵をお借りできないでしょうか?
よろしくお願いいたします。たかし

返信 編集キー/


管理者用

- Child Tree -