// カートンのディープキャンセル(カートン・パック・トレーのキャンセル日を登録し、モジュールレコードを削除する。 // PCのスーパーユーザーに権限を限定。パレットに既に登録されている場合は、処理を行わない。 private void btnDeepCancelCartonPackTray_Click(object sender, EventArgs e) { if (dgvCarton.Rows.Count <= 0) { return; } // セルの選択範囲が2列以上の場合は、メッセージの表示のみでプロシージャを抜ける if (dgvCarton.Columns.GetColumnCount(DataGridViewElementStates.Selected) >= 2) { MessageBox.Show("Please select only carton id column.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); return; } // 列名が正しい場合のみ、処理を行う if (dgvCarton.Columns[dgvCarton.CurrentCell.ColumnIndex].Name != "carton_id") { MessageBox.Show("Please select only carton id column.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); return; } // トレー積載済みカートンがないか、確認する foreach (DataGridViewCell cell in dgvCarton.SelectedCells) { if (dgvCarton["pallet_id", cell.RowIndex].Value.ToString() != string.Empty || dgvCarton["cl_user", cell.RowIndex].Value.ToString() != string.Empty) { MessageBox.Show(cell.Value.ToString() + " has been already on pallet or canceled.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2); return; } } // 本当に削除してよいか、3重で確認する。 DialogResult result1 = MessageBox.Show("Do you really want to cancel these carton, pack, tray, and module?", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); if (result1 == DialogResult.No) { return; } DialogResult result2 = MessageBox.Show("Are you sure to cancel all the carton, pack, tray, and module?" + Environment.NewLine + "Please select NO if you are not sure.", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); if (result2 == DialogResult.No) { return; } DialogResult result3 = MessageBox.Show("Are you really sure? Please select NO if you are not sure.", "Notice", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); if (result3 == DialogResult.No) { return; } // 選択セルを配列に格納、およびメッセージ用文字列を生成し、一括キャンセルSQLコマンドを実行 string[] cartonlist = { }; string message = string.Empty; int i = 0; foreach (DataGridViewCell cell in dgvCarton.SelectedCells) { if (dgvCarton["cl_user", cell.RowIndex].Value.ToString() == string.Empty) { i += 1; Array.Resize(ref cartonlist, i); cartonlist[i - 1] = cell.Value.ToString(); message = message + Environment.NewLine + cell.Value.ToString(); } } if (message == string.Empty) { MessageBox.Show("No carton ID was selected.", "Notice", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } TfSQL tf = new TfSQL(); bool res = tf.sqlMultipleDeepCancelCartonPackTray(cartonlist, txtLoginName.Text); if (res) { //本フォームのデータグリットビュー更新 dtCarton.Clear(); updateDataGridViews(dtCarton, ref dgvCarton, false); MessageBox.Show("The following " + i + " carton IDs, their packs, trays, and modules were all canceled: " + message, "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Cancel process was not successful.", "Process Result", MessageBoxButtons.OK, MessageBoxIcon.Warning); } }