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

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

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

GUIの一種であり、データを表の形式でみることが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

VB.NET

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

Q&A

解決済

1回答

4149閲覧

[VB.NET]データグリットビューのデータをコンボボックスに

reeeo

総合スコア42

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

VB.NET

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

0グッド

0クリップ

投稿2017/08/03 02:56

編集2017/08/03 02:59

開発環境
・Visual Studio2012
・VB.NET
・MySQL

現在、windowsフォームで商品登録プログラムを作成しています。
データグリッドビューにデータベースの内容を表示してそのデータを編集できるようにしたいです。
そこで、データグリットビューの行を選択したらその行の特定の列の値を取得してデータグリットビューの外にあるコンボボックスに表示したいのですがどうやったいいかわかりません。
コンボボックスはドロップダウンリスト限定です。
コンボボックスは追加用のやつと編集用の2つを作成していてどちらも同じ仕様にしています。
やりたいことをまとめると、
編集用のコンボボックスで、選択した行の商品が表示されるようにして、他の商品をコンボボックスの中から選べるようにしたいです。

Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged Dim Cn As New MySqlConnection(Module1.SQL) Dim sqlcm As MySqlCommand = Cn.CreateCommand Dim adapter As New MySqlDataAdapter(sqlcm) Dim table As New DataTable Try 'データ取得 Cn.Open() 'コンボボックスへ値の表示 sqlcm.CommandText = "SELECT * FROM M_ITEM WHERE ITEM_NAME = '" & DataGridView1.CurrentRow.Cells("ITEM_NAME").Value & "'" adapter.Fill(table) item_box2.DataSource = table '編集用のコンボボックス item_box2.DisplayMember = "ITEM_NAME" item_box2.ValueMember = "ITEM_ID" price_text2.Text = DataGridView1.CurrentRow.Cells("値段").Value num_text2.Text = DataGridView1.CurrentRow.Cells("個数").Value Catch ex As Exception MsgBox(ex.Message) Finally Cn.Close() End Try End Sub

このコードでコンボボックスに選択行のデータは取得できるのですが、その行の商品名しか表示されないです。。
どなたかお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。VB.netは7年前に.netFramework3.5以来触っていないものです。

ざっと見た限りですが、

VB.net

1'コンボボックスへ値の表示 2sqlcm.CommandText = "SELECT * FROM M_ITEM WHERE ITEM_NAME = '" & DataGridView1.CurrentRow.Cells("ITEM_NAME").Value & "'"

ここで WHERE"ITEM_NAME" に絞り込んでしまっているため、ほかの項目が表示されないのではと思ってしまうのですが、もしかして、何らかの理由があって絞り込んでますか?

以下、勝手な空想によるおせっかいなのですが、 SELECT * とするよりは SELECT ITEM_NAME という風に、抽出するデータは限定したほうが良いかと思います。

以上です。
私もこういうミスはしょっちゅうします。深呼吸してコードを見直すと答えがすぐに思いつくことがありますよ。

投稿2017/08/04 00:55

manzyun

総合スコア2244

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

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

reeeo

2017/08/04 05:56

深呼吸してコードを見直したらすぐ答えが見つかりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問