質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

2回答

3784閲覧

VB.NETのDataGridViewのComboboxのリストにない項目を表示するにはどうすればよろしいでしょうか?

ritsuki071727

総合スコア0

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/07/26 09:05

編集2020/07/26 09:08

前提・実現したいこと

現在、VB.NETで開発を行っており、以下の要件を達成したいのですが、実現方法がわかりません。。
何卒、お力添えいただけると幸いです。。

<要件>
DataGridViewのComboboxにテーブルBをデータセットしておく、Button1(テーブルCを検索し、選択する画面に遷移するボタンになります。)から値を受け取った際にテーブルB以外のデータの場合でもComboboxに表示するようにしたい。

(テーブルA)                  

社員ID(主キー)社員名

(テーブルB)

社員ID(主キー)業務NO(主キー)業務名

(テーブルC)

業務NO(主キー)業務名

発生している問題・エラーメッセージ

テーブルBの値であれば、Comboboxに表示されるのですが、テーブルB以外の値だと表示されたいため、表示するように実装したいです。

試したこと

Button1を押すとComboboxのデータセットをクリアして、テーブルCセットするようにしたのですが、テーブルBのデータは残したいため、この方法はやめました。

補足情報(FW/ツールのバージョンなど)

Visual Studio2019,SQLServer

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ritsuki071727

2020/07/26 09:45

ご多忙の中、ご返信頂き、誠にありがとうございます。 一点、ご質問なのですが、 「たんにフォームの初期化のタイミングでそのリスト値を読み出しといて、当該ComboBoxにセットするだけです」 こちらの方法がわからないため、ご教授いただくことは可能でしょうか?
YAmaGNZ

2020/07/26 09:58

その時は表示できたとして、次にそのデータを表示するときはどうするのですか?
ritsuki071727

2020/07/26 10:03

確かに、再度表示するときに困りますね。。 この要件を実現することは難しいのでしょうか?
YAmaGNZ

2020/07/26 11:00

テーブルAが社員マスタ、テーブルCが業務マスタ、テーブルBが各社員がどの業務担当かを示すデータのテーブルなのだと思います。 通常、業務マスタに存在しないデータは入力できないという仕様で、存在しない業務の場合は業務マスタに追加した後、入力するという形だと思います。 今回の場合、存在しない業務の場合、得られる情報が業務名だけなのか業務コードと業務名のセットなのか、名称だけの場合はデータベースへ保存するときの業務コードはどうするのか 存在しないデータをデータベースへ登録した場合、他の画面では大丈夫なのか等いろいろ考えないとダメなのではないかと思いますが、貴方がどのようなシステムを作成しているのかは分かりませんのでなんとも言えません。
ritsuki071727

2020/07/26 11:16

仕様では、必ず業務マスタに登録した上で各画面の操作を行っていただく流れです。 ですので、テーブルBにはなく、かつテーブルCには存在している値を表示するにはどうすれば良いのでしょうか?
YAmaGNZ

2020/07/26 11:27

DataGridViewのある列にあるComboBoxで業務を選択するのですよね? そうなると、ComboBoxのDataSourceに設定するのは業務マスタなのではないのですか?
ritsuki071727

2020/07/26 11:43

初めは、業務マスタを設定していたのですが、全ての業務がコンボボックスに表示されるよりテーブルBを表示したいとの要望が上がりまして。。
YAmaGNZ

2020/07/26 14:47

マスタなのに全ての業務が入っていない時点でおかしいのではないですか? 貴方も「仕様では、必ず業務マスタに登録した上で各画面の操作を行っていただく流れです。」って言っていますよね?
ritsuki071727

2020/07/26 21:46

では、コンボボックスに業務マスタをセットしつつ、テーブルBに登録されている業務のみを表示などは可能なのでしょうか?
退会済みユーザー

退会済みユーザー

2020/07/27 02:41

> テーブルBにはなく、かつテーブルCには存在している値を表示するにはどうすれば良いのでしょうか? テーブルBとテーブルCをunionで結合すればよいのではないでしょうか
guest

回答2

0

はっきりいって仰っていることがイメージできません。

例
このような感じでDataGridViewに表示するのはテーブルBでComboBoxの選択肢にはテーブルCという感じでなないのですか?
違うのであれば、具体的にどのような画面なのか図を掲載してください。

例にあげたようなことだったとしても、社員のほうは手打ちなのかなど疑問はありますけどね。

投稿2020/07/26 22:17

YAmaGNZ

総合スコア10489

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ritsuki071727

2020/07/26 22:28

テーブルCの社員はログイン情報から受け取っており、コンボボックスにはログイン時の社員IDからテーブルCの業務IDをコンボボックスにセットする予定です。。 >>このような感じでDataGridViewに表示するのはテーブルBでComboBoxの選択肢にはテーブルCという感じでなないのですか? 満たしたい要件は上記の通りになります。 社員IDは既に保持していて社員ごとに選択肢をテーブルCをセットしたいです。。
YAmaGNZ

2020/07/26 22:59

すみません。言葉を間違えると伝えたいことが伝わりません。 質問であげられたテーブル例のテーブルCに社員情報はありません。 ある程度具体的なデータを提示して、そこからComboBoxに表示したいデータを示してください。また、画面イメージもあったほうがいいのかもしれません。 現状日本語だけでは伝わっていないです。
ritsuki071727

2020/07/26 23:05

申し訳ございません。 テーブルCではなくテーブルBになります。 テーブルBの社員ごとに登録されている業務NOをリストとして表示したく思います。
YAmaGNZ

2020/07/27 00:25

例えばテーブルBに 社員A,業務A 社員A,業務C 社員B,業務B 社員C,業務D とあって、ログイン画面から社員Aとしてログインしたから、業務を選択するComboBoxには Select 業務 From テーブルB Where 社員 = 社員A の結果の 業務A,業務C を表示したいということですか? そして、「リストにない項目」とはテーブルBにその社員が担当とは登録していないけどテーブルCの業務マスタには存在する業務を別画面にて指定し、戻ってきた時に画面には反映したいがその情報は決定されていないからデータベースにはまだ反映したくないということでしょうか? どのみち、現在どのようにComboBoxにデータを設定しているのか提示して貰わないとアドバイスもできないかと思います。 ただ、一人のデータを表示するのにDataGridViewを使う必要があるのかが疑問ではありますが・・・
guest

0

そのComboBoxに設定しようとする値を追加しとけば表示できます

投稿2020/07/26 09:10

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ritsuki071727

2020/07/26 09:14

ご多忙の中、ご回答いただき、誠にありがとうございます。 よろしければ詳しく説明していただくことは可能でしょうか? 大変恐縮ですが、よろしくお願いいたします。
y_waiwai

2020/07/26 22:27

ComboBoxのリストにない項目は設定できません。 なら、その設定したい項目を、ComboBoxのリストに追加して、それを選択すればいいというはなしとなります
ritsuki071727

2020/07/26 22:52

テーブルCに一度登録してから表示、選択するという認識でよろしいでしょうか?
y_waiwai

2020/07/26 23:11

まあ、そういうことになりますね
ritsuki071727

2020/07/26 23:13

例えばですが、テーブルCをセットして、テーブルBに該当する業務のみを表示などは可能なのでしょうか?
y_waiwai

2020/07/26 23:18

もともとのテーブルをいじらなくても、そのComboBoxのItemsを直接いじるとかすればいいんでは
ritsuki071727

2020/07/26 23:26

申し訳ございません。 具体的なやり方を教えて頂く事は可能でしょうか?
Zuishin

2020/07/27 00:37

質問が具体的でないのに回答に具体性を求めるのは無理があるのではないでしょうか。聞かれたことくらいには全部(答えたいところだけ選ぶのではなく)答え、しろと言われたことはしてみたらどうでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問