質問編集履歴

2

修正後ソースの追記

2019/09/15 04:28

投稿

ICCI
ICCI

スコア14

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,69 @@
4
4
 
5
5
  削除ボタン(DelBtn)をクリックすると確認メッセージ表示後にDataGridViewのその行を削除するという仕様です。
6
6
 
7
- 削除ボタンクリックイベント内削除処理の"UPDATE mst_address SET DEL_FLG = 1"のWHERE句の指定の仕方がわからず、現在は削除ボタンをクリックすると全てのデータのDEL_FLGが1になってしまいます。WHERE句で削除ボタンをクリックした行を指定するにはどうしたら良いでしょうか
7
+ 削除ボタンクリックイベント内削除処理の"UPDATE mst_address SET DEL_FLG = 1"のWHERE句の指定の仕方がわからず、現在は削除ボタンをクリックすると全てのデータのDEL_FLGが1になってしまいます。WHERE句で削除ボタンをクリックした行を指定するにはどうしたら良いでしょうか
8
+
9
+
10
+
11
+
12
+
8
-
13
+ テーブルは以下になります。
14
+
15
+ 主キーはSEQ_NOとなっており、非表示の状態です。
16
+
17
+ 一行ごとに削除ボタンがあるDataGridViewで、ボタンを押下した行を削除するという仕様です。
18
+
9
- よろしくお願いします。
19
+ よろしくお願いします。
20
+
10
-
21
+ ```SQL
22
+
23
+
24
+
11
-
25
+ CREATE TABLE `mst_address` (
26
+
27
+ `SEQ_NO` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理番号',
28
+
29
+ `NAME1` varchar(10) NOT NULL COMMENT '氏名1',
30
+
31
+ `NAME2` varchar(10) NOT NULL COMMENT '氏名2',
32
+
33
+ `ZIP1` varchar(3) NOT NULL COMMENT '郵便番号1',
34
+
35
+ `ZIP2` varchar(4) NOT NULL COMMENT '郵便番号2',
36
+
37
+ `ADDRESS3` varchar(100) NOT NULL COMMENT '住所3',
38
+
39
+ `ADDRESS1` varchar(100) DEFAULT NULL COMMENT '住所1',
40
+
41
+ `ADDRESS2` varchar(100) DEFAULT NULL COMMENT '住所2',
42
+
43
+ `TEL` varchar(20) DEFAULT NULL COMMENT '電話番号',
44
+
45
+ `INS_USER` varchar(10) NOT NULL COMMENT '登録者',
46
+
47
+ `INS_DATETIME` datetime NOT NULL COMMENT '登録日',
48
+
49
+ `UPD_USER` varchar(10) NOT NULL COMMENT '更新者',
50
+
51
+ `UPD_DATETIME` datetime NOT NULL COMMENT '更新日',
52
+
53
+ `DEL_FLG` bit(1) NOT NULL COMMENT '削除フラグ',
54
+
55
+ PRIMARY KEY (`SEQ_NO`)
56
+
57
+ ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
58
+
59
+
60
+
61
+ ```
62
+
63
+
64
+
65
+ 追記
66
+
67
+ 主キーSEQ_NOを追加(テーブルには非表示)し、WHERE句に指定した修正後ソースコードです。
68
+
69
+ dataGridView1.CurrentRow.Cells[1].ValueでSEQ_NOの値が取得できることは確認しています。
12
70
 
13
71
 
14
72
 
@@ -44,7 +102,7 @@
44
102
 
45
103
  MySqlConnection conn = new MySqlConnection();
46
104
 
47
- conn.ConnectionString = "server=サーバ名; user id=ユーザID; Password=PW; database=address_note";
105
+ conn.ConnectionString = "server=サーバ名; user id=ID; Password=PW; database=address_note";
48
106
 
49
107
 
50
108
 
@@ -62,7 +120,7 @@
62
120
 
63
121
  //SQL文と接続情報を引数に、データアダプターを作成
64
122
 
65
- MySqlDataAdapter da = new MySqlDataAdapter("SELECT NAME1,NAME2,ZIP1,ZIP2,ADDRESS1,ADDRESS2,ADDRESS3,TEL FROM mst_address WHERE DEL_FLG = 0", conn);
123
+ MySqlDataAdapter da = new MySqlDataAdapter("SELECT **SEQ_NO,** NAME1,NAME2,ZIP1,ZIP2,ADDRESS1,ADDRESS2,ADDRESS3,TEL FROM mst_address WHERE DEL_FLG = 0", conn);
66
124
 
67
125
 
68
126
 
@@ -86,29 +144,35 @@
86
144
 
87
145
 
88
146
 
147
+
148
+
149
+ ** dataGridView1.Columns[1].Visible = false; //SEQ_NOを非表示にする**
150
+
89
151
  //横幅指定・削除ボタン配置
90
152
 
91
- dataGridView1.Columns[1].Width = 50;
153
+ dataGridView1.Columns[2].Width = 50;
92
-
154
+
93
- dataGridView1.Columns[2].Width = 45;
155
+ dataGridView1.Columns[3].Width = 45;
94
-
95
- dataGridView1.Columns[3].Width = 40;
96
156
 
97
157
  dataGridView1.Columns[4].Width = 40;
98
158
 
99
- dataGridView1.Columns[5].Width = 70;
159
+ dataGridView1.Columns[5].Width = 40;
160
+
100
-
161
+ dataGridView1.Columns[6].Width = 70;
162
+
101
- dataGridView1.Columns[6].Width = 42;
163
+ dataGridView1.Columns[7].Width = 42;
102
-
164
+
103
- dataGridView1.Columns[7].Width = 40;
165
+ dataGridView1.Columns[8].Width = 40;
166
+
104
-
167
+ dataGridView1.Columns[9].Width = 90;
168
+
105
- dataGridView1.Columns["DelBtn"].DisplayIndex = 8;
169
+ dataGridView1.Columns["DelBtn"].DisplayIndex = 9;
106
170
 
107
171
 
108
172
 
109
173
  //氏名昇順でソートする
110
174
 
111
- dataGridView1.Sort(dataGridView1.Columns[1], ListSortDirection.Ascending);
175
+ dataGridView1.Sort(dataGridView1.Columns[2], ListSortDirection.Ascending);
112
176
 
113
177
  }
114
178
 
@@ -152,7 +216,7 @@
152
216
 
153
217
  conn.ConnectionString = Properties.Settings.Default.address_noteConnectionString;
154
218
 
155
- MySqlCommand sqlCommand = new MySqlCommand(@"SELECT NAME1, NAME2, ZIP1, ZIP2, ADDRESS1, ADDRESS2, ADDRESS3, TEL FROM mst_address WHERE ADDRESS1 = @ADDRESS1 AND DEL_FLG = 0", conn);
219
+ 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);
156
220
 
157
221
 
158
222
 
@@ -220,7 +284,7 @@
220
284
 
221
285
  conn.ConnectionString = Properties.Settings.Default.address_noteConnectionString;
222
286
 
223
- 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);
287
+ 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);
224
288
 
225
289
 
226
290
 
@@ -316,9 +380,11 @@
316
380
 
317
381
  {
318
382
 
319
-
320
-
321
- // 削除処理
383
+ // 削除
384
+
385
+ //this.dataGridView1.Rows.RemoveAt(e.RowIndex);
386
+
387
+
322
388
 
323
389
  MySqlConnection conn = new MySqlConnection();
324
390
 
@@ -326,7 +392,7 @@
326
392
 
327
393
  conn.Open();
328
394
 
329
- MySqlCommand sqlCommand = new MySqlCommand("UPDATE mst_address SET DEL_FLG = 1", conn);
395
+ MySqlCommand sqlCommand = new MySqlCommand("UPDATE mst_address SET DEL_FLG = 1** WHERE SEQ_NO = dataGridView1.CurrentRow.Cells[1].Value**", conn);
330
396
 
331
397
  DataTable dt = new DataTable();
332
398
 
@@ -340,10 +406,10 @@
340
406
 
341
407
 
342
408
 
343
-
344
-
345
409
  MessageBox.Show("削除完了しました。");
346
410
 
411
+
412
+
347
413
  }
348
414
 
349
415
  else
@@ -362,60 +428,8 @@
362
428
 
363
429
  }
364
430
 
365
-
431
+
432
+
433
+
366
434
 
367
435
  ```
368
-
369
-
370
-
371
- 追記
372
-
373
- テーブルは以下になります。
374
-
375
- 主キーはSEQ_NOとなっており、非表示の状態です。
376
-
377
- 一行ごとに削除ボタンがあるDataGridViewで、ボタンを押下した行を削除するという仕様です。
378
-
379
- よろしくお願い致します。
380
-
381
- ```SQL
382
-
383
-
384
-
385
- CREATE TABLE `mst_address` (
386
-
387
- `SEQ_NO` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理番号',
388
-
389
- `NAME1` varchar(10) NOT NULL COMMENT '氏名1',
390
-
391
- `NAME2` varchar(10) NOT NULL COMMENT '氏名2',
392
-
393
- `ZIP1` varchar(3) NOT NULL COMMENT '郵便番号1',
394
-
395
- `ZIP2` varchar(4) NOT NULL COMMENT '郵便番号2',
396
-
397
- `ADDRESS3` varchar(100) NOT NULL COMMENT '住所3',
398
-
399
- `ADDRESS1` varchar(100) DEFAULT NULL COMMENT '住所1',
400
-
401
- `ADDRESS2` varchar(100) DEFAULT NULL COMMENT '住所2',
402
-
403
- `TEL` varchar(20) DEFAULT NULL COMMENT '電話番号',
404
-
405
- `INS_USER` varchar(10) NOT NULL COMMENT '登録者',
406
-
407
- `INS_DATETIME` datetime NOT NULL COMMENT '登録日',
408
-
409
- `UPD_USER` varchar(10) NOT NULL COMMENT '更新者',
410
-
411
- `UPD_DATETIME` datetime NOT NULL COMMENT '更新日',
412
-
413
- `DEL_FLG` bit(1) NOT NULL COMMENT '削除フラグ',
414
-
415
- PRIMARY KEY (`SEQ_NO`)
416
-
417
- ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
418
-
419
-
420
-
421
- ```

1

テーブル構造の追記

2019/09/15 04:28

投稿

ICCI
ICCI

スコア14

test CHANGED
File without changes
test CHANGED
@@ -365,3 +365,57 @@
365
365
 
366
366
 
367
367
  ```
368
+
369
+
370
+
371
+ 追記
372
+
373
+ テーブルは以下になります。
374
+
375
+ 主キーはSEQ_NOとなっており、非表示の状態です。
376
+
377
+ 一行ごとに削除ボタンがあるDataGridViewで、ボタンを押下した行を削除するという仕様です。
378
+
379
+ よろしくお願い致します。
380
+
381
+ ```SQL
382
+
383
+
384
+
385
+ CREATE TABLE `mst_address` (
386
+
387
+ `SEQ_NO` int(11) NOT NULL AUTO_INCREMENT COMMENT '管理番号',
388
+
389
+ `NAME1` varchar(10) NOT NULL COMMENT '氏名1',
390
+
391
+ `NAME2` varchar(10) NOT NULL COMMENT '氏名2',
392
+
393
+ `ZIP1` varchar(3) NOT NULL COMMENT '郵便番号1',
394
+
395
+ `ZIP2` varchar(4) NOT NULL COMMENT '郵便番号2',
396
+
397
+ `ADDRESS3` varchar(100) NOT NULL COMMENT '住所3',
398
+
399
+ `ADDRESS1` varchar(100) DEFAULT NULL COMMENT '住所1',
400
+
401
+ `ADDRESS2` varchar(100) DEFAULT NULL COMMENT '住所2',
402
+
403
+ `TEL` varchar(20) DEFAULT NULL COMMENT '電話番号',
404
+
405
+ `INS_USER` varchar(10) NOT NULL COMMENT '登録者',
406
+
407
+ `INS_DATETIME` datetime NOT NULL COMMENT '登録日',
408
+
409
+ `UPD_USER` varchar(10) NOT NULL COMMENT '更新者',
410
+
411
+ `UPD_DATETIME` datetime NOT NULL COMMENT '更新日',
412
+
413
+ `DEL_FLG` bit(1) NOT NULL COMMENT '削除フラグ',
414
+
415
+ PRIMARY KEY (`SEQ_NO`)
416
+
417
+ ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8
418
+
419
+
420
+
421
+ ```