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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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回答

6226閲覧

[VB.NET]datagridviewの複数行選択について

reeeo

総合スコア42

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/07 00:40

編集2017/08/07 01:09

vb.netで商品登録プログラムを作成しています。
DBと接続してデータグリットビューにテーブルを表示しています。
そこでデータグリットビューに表示している行を複数選択して削除ボタンを押下したら選択行のデータを削除したいです。

Dim result As DialogResult = MessageBox.Show(" '" & DataGridView1.SelectedRows.Count & "'件削除しますか?", _ "確認", _ MessageBoxButtons.YesNo, _ MessageBoxIcon.Warning, _ MessageBoxDefaultButton.Button1) 'はいが選択されたら If result = Windows.Forms.DialogResult.Yes Then 'SQL文 Dim delete As String = " " _ + "DELETE FROM T_ITEM " _ + " WHERE NUMBER IN('" & DataGridView1.CurrentRow.Cells("注文番号").Value & "')" Dim command As New MySqlCommand(delete, cn) For Each row As DataGridViewRow In DataGridView1.SelectedRows 'クエリ実行 command.ExecuteNonQuery() DataGridView1.Rows.RemoveAt(DataGridView1.CurrentCell.RowIndex) Next End If

SQLをforeachの中に持っていけば複数削除できるのですが、このままでSQL文を変えて複数削除したいのですが、WHEREくで複数の値を持たせるSQL文の書き方がわかりません。お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

DELETE FROM T_ITEM WHERE NUMBER IN (2,3,5)的なクエリを投げてみるとか

投稿2017/08/07 01:39

dojikko

総合スコア3939

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

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

reeeo

2017/08/07 01:45

回答ありがとうございます。そのおように条件をNUMBERで指定すれば削除できるのですが、ユーザーに選択された行を削除したいです。。。
dojikko

2017/08/07 01:50

INで指定する値を DataGridViewのSelectedRowsから取ってきてはダメなんですか?
reeeo

2017/08/07 02:10

SelectedRowsで指定しても最初の一行分しか取れていませんでした。
dojikko

2017/08/07 03:40

For EachループにSQL文を入れて正しく動作する=削除に必要なNUMBERは取得できると思うのですが..
reeeo

2017/08/07 03:52

+ " WHERE NUMBER IN('" & DataGridView1.SelectedRows(0).Cells("注文番号").Value & "',)" こう書いたのですが書き方が間違っているのでしょうか?
toro1

2017/08/07 04:23

" WHERE NUMBER IN('" & DataGridView1.SelectedRows(0).Cells("注文番号").Value & "',)" だと選択した内の一行目の注文番号しか取れていません。SelectedRowsをfor eachで回して取得してみては? Dim list as new list(of string) for each c as DataGridViewRow in DataGridView1.SelectedRows list.add( c("注文番号").value) next … + " WHERE NUMBER IN('" & string.join(",",list) & "',)"
reeeo

2017/08/07 04:33

toro1さん回答ありがとうございます。 上記のコードで試したところlist.add( c("注文番号").value)のcの箇所で既定のプロパティが無い為....とエラーが出てしまいました。
toro1

2017/08/07 04:44 編集

list.add( c("注文番号").value) ではなくて list.add(c.Cells("注文番号").value) の誤りですね。 補足ですが list(of string)のところは、c("注文番号").valueの型が質問ではわからなかったので念のため、string型にしています。型に合わせて変えて下さい。
reeeo

2017/08/07 05:04

正常に動くようになりました。 listに追加していくという考えがあるんですんね!! とても勉強になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問