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

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

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

コンボボックスによる絞り込み [1]

[トピック内 29 記事 (21 - 29 表示)]  << 0 | 1 >>

■92024 / inTopicNo.21)  Re[12]: コンボボックスによる絞り込み
  
□投稿者/ WebSurfer (1883回)-(2019/08/18(Sun) 18:16:14)
No92022 (たかし さん) に返信

誤解があるといけないので (1), (2), (3) の使い分けについて捕捉説明を書いてお
きます。

Windows Forms アプリなので、使うときに立ち上げて、使い終わったらシャットダウン
するのだと思います。

そうすると、

(1) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作

の方法を取った場合、アプリを立ち上げたときに Form.Load あたりで部署、社員テー
ブルから全レコードを取得して DataTable に格納し、それらをアプリをシャットダウ
ンするまで使す回すことになります。

部署、社員テーブルとも人事異動だけで更新するなら、半年に 1 回ぐらいしか更新さ
れないでしょうから (1) で良いかもしれません。

でも、もし、例えば、社員テーブルに会議中とか外出中などのデータも含める場合、
アプリを立ち上げたときは外出してなかったが、comboBox1 で選択したときは外出し
てしまっているかもしれません。なので、(1) ではダメで (3) にするということに
なると思います。
引用返信 編集キー/
■92025 / inTopicNo.22)  Re[13]: コンボボックスによる絞り込み
□投稿者/ たかし (11回)-(2019/08/18(Sun) 19:03:59)
>(1) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作の方法

とはつまりこういうことでしょうか?

Public Class 社員情報

    Private Sub 社員情報_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Tbl_部署TableAdapter.Fill(Me.ComboBoxSampleDataSet.tbl_部署)
        Me.Qry_社員TableAdapter.Fill(Me.ComboBoxSampleDataSet.qry_社員)
        Me.部署コードComboBox.Text = ""
        Me.部署名TextBox.Text = ""
        Me.社員コードComboBox.Text = ""
        Me.社員名TextBox.Text = ""
    End Sub

End Class

早速ですがトラブっております(ρ△;)o。
NorthwindとPubsでソリューションとダミーのフォームは作ったのですが、
デバッグが出来ません。
現在、普通ならデバッグ「開始」ボタンとなるはずの表記が「アタッチ」となっています。
Nortwindフォルダを作ってその中に
1.Form1.Designer.vb
2.Form1.vb
3.Northwind.sln
の3つが保存された状態です。
色々やってみたのですがお手上げです。
どうかお助けくださいn( _ _ )n。

引用返信 編集キー/
■92031 / inTopicNo.23)  Re[14]: コンボボックスによる絞り込み
□投稿者/ WebSurfer (1885回)-(2019/08/18(Sun) 22:14:51)
No92025 (たかし さん) に返信

前に書きましたが、No92019 で聞いた (1), (2), (3) どれにするかと、一番最初の
質問 No91943 に戻すことで OK か答えてもらってから、質問に答えます。
引用返信 編集キー/
■92036 / inTopicNo.24)  Re[15]: コンボボックスによる絞り込み
□投稿者/ たかし (13回)-(2019/08/19(Mon) 17:05:29)
WebSurferさま、ご返事が遅くなりすいません。


> 前に書きましたが、No92019 で聞いた (1), (2), (3) どれにするかと、一番最初の
> 質問 No91943 に戻すことで OK か答えてもらってから、質問に答えます。

次の方法でOKです。

>(1) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作
引用返信 編集キー/
■92037 / inTopicNo.25)  Re[16]: コンボボックスによる絞り込み
□投稿者/ WebSurfer (1886回)-(2019/08/19(Mon) 18:36:21)
No92036 (たかし さん) に返信

> 次の方法でOKです。
>
> >(1) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作

そうであれば、No92025 に書いてあった、

> Me.Tbl_部署TableAdapter.Fill(Me.ComboBoxSampleDataSet.tbl_部署)
> Me.Qry_社員TableAdapter.Fill(Me.ComboBoxSampleDataSet.qry_社員)

で、Me.ComboBoxSampleDataSet.tbl_部署 と Me.ComboBoxSampleDataSet.qry_社員 に
DataTable が取得できていると思いますので、それを使ってはいかがですか?

No91945 の魔界の仮面弁士さんの回答にあるように Relations をすれば期待した結果
が得らられるといます。

ただし、SQL Server のテーブルに FK 制約が設定されていれば、自動的に設定される
はずなので、魔界の仮面弁士さんのコードの ds.Relations.Add("rel_部署_社員",..
は不要だと思います。

分からない点がありましたら質問してください。

引用返信 編集キー/
■92040 / inTopicNo.26)  Re[5]: コンボボックスによる絞り込み
□投稿者/ 大谷刑部 (5回)-(2019/08/20(Tue) 10:01:06)
No91988 (たかし さん) に返信
>
> >退職者(過去データ)や入社予定者(未来データ)も出力するとしたら、
> >部署の統合・分割・廃止・名称変更については、どのように表現されるのでしょうか?
>
> そうなんです。そこが問題でまだ解決していないのです。
> とりあえず在職者のデータだけを入力しています。
> おそらく部署の履歴を取ることも必要になると思いますが、それはまだ先の課題となります。
> 現時点では上書き変更で対処しようと思っております。
> Accessのサブフォームのような機能がVBにもあるとよいのですが。

Accessのサブフォームを持ち出すということは、
画面の入力即DB更新のデータ連結コントロールのようなことを想定してらっしゃいますか?
であれば、.netでのコーディングで手軽にというのはあきらめた方がいいですね。

サブフォームでマスタのデータを画面上で即更新しておいて、そのままバッチ処理的ボタン処理実行

みたいなAccessである意味完結しているシステムをSQL-Serverにリプレースする提案をお客さんにしていた時に、
機能劣化せずに、移植する方法がなくて困った記憶があります。
バッチ処理部分はSSISで代替できるが、SSMSでマスタを直接いじらせるのはちょっと的な話


Datatableを経由して、Gridにバインドすれば似たようなことはできますが厳密にはDBと違うオブジェクトを介在しているので微妙に違います。
どんな機能を優先的に実装するかによりますが、
「画面からDBに即時更新」を優先したいなら、たとえDBがSQL-Serverであっても画面はAccessというのでもいい気はしますよ。
ODBC経由に必然的になるので遅いですが、無駄なコードは書かずに済みます。
社員が1000人以上いる会社だったら現実的じゃないですが、数部門、100人程度の社員管理だけしたいんだったら、Access+ODBCで十分です。
無理に.Netでハードコーディングすることにこだわる必要はありません。
もっと言えばサブフォームの概念は唯一Accessが他のDBツールより確実に上回ってる機能といっても過言でない気はします。

(VB).Netで実装することに意味があるのなら、他の方がおっしゃるようにADO.netの機能フル活用が無難です。
要は質問者さん自身がどうしたいかです。


引用返信 編集キー/
■92065 / inTopicNo.27)  Re[14]: コンボボックスによる絞り込み
□投稿者/ WebSurfer (1888回)-(2019/08/22(Thu) 15:02:07)
No92025 (たかし さん) に返信

No92037 で回答したのですが・・・

前にもお願いしましたがレスをもらったらフィードバックを返してください。

読んだ/読まなかった、役に立った/立たなかったぐらいは言ってもらっても良い
と思うのですけど。
引用返信 編集キー/
■92368 / inTopicNo.28)  Re[6]: コンボボックスによる絞り込み
□投稿者/ たかし (14回)-(2019/09/15(Sun) 15:38:59)
WebSurferさま、レスが遅くなって誠にすみません。
一段落ついたところでご報告申し上げたいと思います。
あれから主にふたつの課題に取り組んでおりました。

(1)コンボボックスによる絞り込み
(2)社員の部署・役職等の履歴を、Accessのサブフォームのように表示出来ないか?

そして(1)は「不可能」という結論に達しました。
少なくとも現在の私のスキルではどうしようもないと確信しました。
ちなみにWebの解説を色々探し回っても、
例えば「りんご、みかん、バナナ」などの説明に終止する例題ばかりで、
SQLサーバー上のテーブルをCmboBoxのDataSourceとするような汎用的・実用的な説明はひとつもありません。
結局DataGridViewを、あたかもComboBoxのように使う方法が手っ取り早いということが分かりました。
以前に「次善の策」として紹介した私のコードです。

次に(2)ですが、こちらの方は意外にも比較的簡単に作ることが出来ました。
内容については別の機会にご紹介したいと思いますが、
DataGridViewをAccessのサブフォームのように画面に表示するのです。
なお、大谷刑部さまの書き込みは興味深く拝見いたしました、ありがとうございます。
あいにくAccessではなくVB.NETで作り始めてしまっているものですから、
このままでいくしかありません。

ということで、一応「解決」のボタンを押させていただきます。
お手を煩わせた皆様には心から感謝申し上げます。
また分からないことが出てきたときにはご質問させていただきたいと思いますので、
そのときにはよろしくお願い申し上げます。たかし

解決済み
引用返信 編集キー/
■92369 / inTopicNo.29)  Re[7]: コンボボックスによる絞り込み
□投稿者/ WebSurfer (1912回)-(2019/09/15(Sun) 22:37:33)
No92368 (たかし さん) に返信

一番最初の質問 No91943 の「コンボボックスによる絞り込み」は解決したわけではなくて
諦めたということのように思えますが、そういうことと理解して良いですか?
引用返信 編集キー/

このトピックをツリーで一括表示

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ