質問編集履歴
2
修正後ソースの追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,10 +1,39 @@
|
|
1
1
|
現在C#で住所録を作成しており、削除フラグを使用して論理削除するという課題に悩んでいます。
|
2
2
|
テーブルカラムにはDEL_FLG作成済みです。
|
3
3
|
削除ボタン(DelBtn)をクリックすると確認メッセージ表示後にDataGridViewのその行を削除するという仕様です。
|
4
|
-
削除ボタンクリックイベント内削除処理の"UPDATE mst_address SET DEL_FLG = 1"のWHERE句の指定の仕方がわからず、現在は削除ボタンをクリックすると全てのデータのDEL_FLGが1になってしまいます。WHERE句で削除ボタンをクリックした行を指定するにはどうしたら良いでしょうか
|
4
|
+
削除ボタンクリックイベント内削除処理の"UPDATE mst_address SET DEL_FLG = 1"のWHERE句の指定の仕方がわからず、現在は削除ボタンをクリックすると全てのデータのDEL_FLGが1になってしまいます。WHERE句で削除ボタンをクリックした行を指定するにはどうしたら良いでしょうか?
|
5
|
-
よろしくお願いします。
|
6
5
|
|
7
6
|
|
7
|
+
テーブルは以下になります。
|
8
|
+
主キーはSEQ_NOとなっており、非表示の状態です。
|
9
|
+
一行ごとに削除ボタンがあるDataGridViewで、ボタンを押下した行を削除するという仕様です。
|
10
|
+
よろしくお願い致します。
|
11
|
+
```SQL
|
12
|
+
|
13
|
+
CREATE TABLE `mst_address` (
|
14
|
+
`SEQ_NO` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理番号',
|
15
|
+
`NAME1` varchar(10) NOT NULL COMMENT '氏名1',
|
16
|
+
`NAME2` varchar(10) NOT NULL COMMENT '氏名2',
|
17
|
+
`ZIP1` varchar(3) NOT NULL COMMENT '郵便番号1',
|
18
|
+
`ZIP2` varchar(4) NOT NULL COMMENT '郵便番号2',
|
19
|
+
`ADDRESS3` varchar(100) NOT NULL COMMENT '住所3',
|
20
|
+
`ADDRESS1` varchar(100) DEFAULT NULL COMMENT '住所1',
|
21
|
+
`ADDRESS2` varchar(100) DEFAULT NULL COMMENT '住所2',
|
22
|
+
`TEL` varchar(20) DEFAULT NULL COMMENT '電話番号',
|
23
|
+
`INS_USER` varchar(10) NOT NULL COMMENT '登録者',
|
24
|
+
`INS_DATETIME` datetime NOT NULL COMMENT '登録日',
|
25
|
+
`UPD_USER` varchar(10) NOT NULL COMMENT '更新者',
|
26
|
+
`UPD_DATETIME` datetime NOT NULL COMMENT '更新日',
|
27
|
+
`DEL_FLG` bit(1) NOT NULL COMMENT '削除フラグ',
|
28
|
+
PRIMARY KEY (`SEQ_NO`)
|
29
|
+
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
|
30
|
+
|
31
|
+
```
|
32
|
+
|
33
|
+
追記
|
34
|
+
主キーSEQ_NOを追加(テーブルには非表示)し、WHERE句に指定した修正後ソースコードです。
|
35
|
+
dataGridView1.CurrentRow.Cells[1].ValueでSEQ_NOの値が取得できることは確認しています。
|
36
|
+
|
8
37
|
```C#
|
9
38
|
namespace AddressList
|
10
39
|
{
|
@@ -21,7 +50,7 @@
|
|
21
50
|
using (MySqlCommand command = new MySqlCommand())
|
22
51
|
{
|
23
52
|
MySqlConnection conn = new MySqlConnection();
|
24
|
-
conn.ConnectionString = "server=サーバ名; user id=
|
53
|
+
conn.ConnectionString = "server=サーバ名; user id=ID; Password=PW; database=address_note";
|
25
54
|
|
26
55
|
//DBとの接続オープン
|
27
56
|
conn.Open();
|
@@ -30,7 +59,7 @@
|
|
30
59
|
DataTable dt = new DataTable();
|
31
60
|
|
32
61
|
//SQL文と接続情報を引数に、データアダプターを作成
|
33
|
-
MySqlDataAdapter da = new MySqlDataAdapter("SELECT NAME1,NAME2,ZIP1,ZIP2,ADDRESS1,ADDRESS2,ADDRESS3,TEL FROM mst_address WHERE DEL_FLG = 0", conn);
|
62
|
+
MySqlDataAdapter da = new MySqlDataAdapter("SELECT **SEQ_NO,** NAME1,NAME2,ZIP1,ZIP2,ADDRESS1,ADDRESS2,ADDRESS3,TEL FROM mst_address WHERE DEL_FLG = 0", conn);
|
34
63
|
|
35
64
|
|
36
65
|
//SQL文で指定したデータをDataTableに格納
|
@@ -42,18 +71,21 @@
|
|
42
71
|
//DBとの接続クローズ
|
43
72
|
conn.Close();
|
44
73
|
|
74
|
+
|
75
|
+
** dataGridView1.Columns[1].Visible = false; //SEQ_NOを非表示にする**
|
45
76
|
//横幅指定・削除ボタン配置
|
46
|
-
dataGridView1.Columns[
|
77
|
+
dataGridView1.Columns[2].Width = 50;
|
47
|
-
dataGridView1.Columns[
|
78
|
+
dataGridView1.Columns[3].Width = 45;
|
48
|
-
dataGridView1.Columns[3].Width = 40;
|
49
79
|
dataGridView1.Columns[4].Width = 40;
|
50
|
-
dataGridView1.Columns[5].Width =
|
80
|
+
dataGridView1.Columns[5].Width = 40;
|
81
|
+
dataGridView1.Columns[6].Width = 70;
|
51
|
-
dataGridView1.Columns[
|
82
|
+
dataGridView1.Columns[7].Width = 42;
|
52
|
-
dataGridView1.Columns[
|
83
|
+
dataGridView1.Columns[8].Width = 40;
|
84
|
+
dataGridView1.Columns[9].Width = 90;
|
53
|
-
dataGridView1.Columns["DelBtn"].DisplayIndex =
|
85
|
+
dataGridView1.Columns["DelBtn"].DisplayIndex = 9;
|
54
86
|
|
55
87
|
//氏名昇順でソートする
|
56
|
-
dataGridView1.Sort(dataGridView1.Columns[
|
88
|
+
dataGridView1.Sort(dataGridView1.Columns[2], ListSortDirection.Ascending);
|
57
89
|
}
|
58
90
|
}
|
59
91
|
|
@@ -75,7 +107,7 @@
|
|
75
107
|
//MySQLへ接続
|
76
108
|
MySqlConnection conn = new MySqlConnection();
|
77
109
|
conn.ConnectionString = Properties.Settings.Default.address_noteConnectionString;
|
78
|
-
MySqlCommand sqlCommand = new MySqlCommand(@"SELECT NAME1, NAME2, ZIP1, ZIP2, ADDRESS1, ADDRESS2, ADDRESS3, TEL FROM mst_address WHERE ADDRESS1 = @ADDRESS1 AND DEL_FLG = 0", conn);
|
110
|
+
MySqlCommand sqlCommand = new MySqlCommand(@"SELECT **SEQ_NO**, NAME1, NAME2, ZIP1, ZIP2, ADDRESS1, ADDRESS2, ADDRESS3, TEL FROM mst_address WHERE ADDRESS1 = @ADDRESS1 AND DEL_FLG = 0", conn);
|
79
111
|
|
80
112
|
//データを保存するテーブル作成
|
81
113
|
DataTable dt = new DataTable();
|
@@ -109,7 +141,7 @@
|
|
109
141
|
//MySQLへ接続
|
110
142
|
MySqlConnection conn = new MySqlConnection();
|
111
143
|
conn.ConnectionString = Properties.Settings.Default.address_noteConnectionString;
|
112
|
-
MySqlCommand sqlCommand = new MySqlCommand(@"SELECT NAME1, NAME2, ZIP1, ZIP2, ADDRESS1, ADDRESS2, ADDRESS3, TEL FROM mst_address WHERE NAME1 LIKE @NAME1 AND DEL_FLG = 0", conn);
|
144
|
+
MySqlCommand sqlCommand = new MySqlCommand(@"SELECT **SEQ_NO**, NAME1, NAME2, ZIP1, ZIP2, ADDRESS1, ADDRESS2, ADDRESS3, TEL FROM mst_address WHERE NAME1 LIKE @NAME1 AND DEL_FLG = 0", conn);
|
113
145
|
|
114
146
|
//データを保存するテーブル作成
|
115
147
|
DataTable dt = new DataTable();
|
@@ -157,20 +189,21 @@
|
|
157
189
|
if (DialogResult.Yes == MessageBox.Show("削除してもよろしいですか?", "削除",
|
158
190
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question))
|
159
191
|
{
|
192
|
+
// 削除
|
193
|
+
//this.dataGridView1.Rows.RemoveAt(e.RowIndex);
|
160
194
|
|
161
|
-
// 削除処理
|
162
195
|
MySqlConnection conn = new MySqlConnection();
|
163
196
|
conn.ConnectionString = Properties.Settings.Default.address_noteConnectionString;
|
164
197
|
conn.Open();
|
165
|
-
MySqlCommand sqlCommand = new MySqlCommand("UPDATE mst_address SET DEL_FLG = 1", conn);
|
198
|
+
MySqlCommand sqlCommand = new MySqlCommand("UPDATE mst_address SET DEL_FLG = 1** WHERE SEQ_NO = dataGridView1.CurrentRow.Cells[1].Value**", conn);
|
166
199
|
DataTable dt = new DataTable();
|
167
200
|
MySqlDataReader reader = sqlCommand.ExecuteReader();
|
168
201
|
dt.Load(reader);
|
169
202
|
dataGridView1.DataSource = dt;
|
170
203
|
reader.Close();
|
171
204
|
|
205
|
+
MessageBox.Show("削除完了しました。");
|
172
206
|
|
173
|
-
MessageBox.Show("削除完了しました。");
|
174
207
|
}
|
175
208
|
else
|
176
209
|
{
|
@@ -180,32 +213,6 @@
|
|
180
213
|
}
|
181
214
|
}
|
182
215
|
}
|
183
|
-
|
184
|
-
|
216
|
+
|
185
|
-
|
186
|
-
|
217
|
+
|
187
|
-
テーブルは以下になります。
|
188
|
-
主キーはSEQ_NOとなっており、非表示の状態です。
|
189
|
-
一行ごとに削除ボタンがあるDataGridViewで、ボタンを押下した行を削除するという仕様です。
|
190
|
-
よろしくお願い致します。
|
191
|
-
```SQL
|
192
|
-
|
193
|
-
CREATE TABLE `mst_address` (
|
194
|
-
`SEQ_NO` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理番号',
|
195
|
-
`NAME1` varchar(10) NOT NULL COMMENT '氏名1',
|
196
|
-
`NAME2` varchar(10) NOT NULL COMMENT '氏名2',
|
197
|
-
`ZIP1` varchar(3) NOT NULL COMMENT '郵便番号1',
|
198
|
-
`ZIP2` varchar(4) NOT NULL COMMENT '郵便番号2',
|
199
|
-
`ADDRESS3` varchar(100) NOT NULL COMMENT '住所3',
|
200
|
-
`ADDRESS1` varchar(100) DEFAULT NULL COMMENT '住所1',
|
201
|
-
`ADDRESS2` varchar(100) DEFAULT NULL COMMENT '住所2',
|
202
|
-
`TEL` varchar(20) DEFAULT NULL COMMENT '電話番号',
|
203
|
-
`INS_USER` varchar(10) NOT NULL COMMENT '登録者',
|
204
|
-
`INS_DATETIME` datetime NOT NULL COMMENT '登録日',
|
205
|
-
`UPD_USER` varchar(10) NOT NULL COMMENT '更新者',
|
206
|
-
`UPD_DATETIME` datetime NOT NULL COMMENT '更新日',
|
207
|
-
`DEL_FLG` bit(1) NOT NULL COMMENT '削除フラグ',
|
208
|
-
PRIMARY KEY (`SEQ_NO`)
|
209
|
-
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
|
210
|
-
|
211
218
|
```
|
1
テーブル構造の追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -181,4 +181,31 @@
|
|
181
181
|
}
|
182
182
|
}
|
183
183
|
|
184
|
+
```
|
185
|
+
|
186
|
+
追記
|
187
|
+
テーブルは以下になります。
|
188
|
+
主キーはSEQ_NOとなっており、非表示の状態です。
|
189
|
+
一行ごとに削除ボタンがあるDataGridViewで、ボタンを押下した行を削除するという仕様です。
|
190
|
+
よろしくお願い致します。
|
191
|
+
```SQL
|
192
|
+
|
193
|
+
CREATE TABLE `mst_address` (
|
194
|
+
`SEQ_NO` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理番号',
|
195
|
+
`NAME1` varchar(10) NOT NULL COMMENT '氏名1',
|
196
|
+
`NAME2` varchar(10) NOT NULL COMMENT '氏名2',
|
197
|
+
`ZIP1` varchar(3) NOT NULL COMMENT '郵便番号1',
|
198
|
+
`ZIP2` varchar(4) NOT NULL COMMENT '郵便番号2',
|
199
|
+
`ADDRESS3` varchar(100) NOT NULL COMMENT '住所3',
|
200
|
+
`ADDRESS1` varchar(100) DEFAULT NULL COMMENT '住所1',
|
201
|
+
`ADDRESS2` varchar(100) DEFAULT NULL COMMENT '住所2',
|
202
|
+
`TEL` varchar(20) DEFAULT NULL COMMENT '電話番号',
|
203
|
+
`INS_USER` varchar(10) NOT NULL COMMENT '登録者',
|
204
|
+
`INS_DATETIME` datetime NOT NULL COMMENT '登録日',
|
205
|
+
`UPD_USER` varchar(10) NOT NULL COMMENT '更新者',
|
206
|
+
`UPD_DATETIME` datetime NOT NULL COMMENT '更新日',
|
207
|
+
`DEL_FLG` bit(1) NOT NULL COMMENT '削除フラグ',
|
208
|
+
PRIMARY KEY (`SEQ_NO`)
|
209
|
+
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
|
210
|
+
|
184
211
|
```
|