Form2.cs 15.5 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Data.SqlClient;

namespace MedicalCheckInputTool
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();

            this.Text = "ロット:" + Global.lotNo + " " + Global.times + " " + "ユーザ:" + Global.inputUser;
        }

        //保存
        private void button1_Click(object sender, EventArgs e)
        {
            bool match = false;
            //入力チェック
            if("".Equals(textBox1.Text)) //必須は整理番号のみ
            {
                MessageBox.Show("整理番号が入力されていません");
                return;
            }

            //マッチングチェック
            if("2回目".Equals(Global.times))
            {
                //1回目と比較
                //一致しない場合、エラー表示はするが保存は実行してしまう
            }

            //保存処理
            SaveData sv = makeSaveData();
            if(match)
            {
                sv.done = "1";  //マッチングOKの場合、完了フラグを立てる
            }
            bool res = doSave(sv);
            
        }

        private SaveData makeSaveData()
        {
            SaveData sv = new SaveData();

            sv.lotNo = int.Parse(Global.lotNo);            //ロット番号
            sv.adminCode = textBox3.Text.PadLeft(6,'0');        //行政区コード
            sv.adminName = "";        //行政区名称
            sv.healthArea = "";       //保健区
            sv.serialNo = textBox1.Text.PadLeft(10,'0');         //整理番号
            sv.houseNo = textBox2.Text.PadLeft(10,'0');          //世帯番号
            sv.healthCheck = textBox6.Text;      //健康診査
            sv.lungCancer = textBox7.Text;       //結核肺がん
            sv.stomachCancer = textBox8.Text;    //胃がん
            sv.colorectalCancer = textBox9.Text; //大腸がん
            sv.prostateCancer = textBox10.Text;   //前立腺がん
            sv.osteoporosis = textBox11.Text;     //骨粗鬆症
            sv.dental = textBox12.Text;           //成人歯科
            sv.cervicalCancer = textBox13.Text;   //子宮頸がん
            sv.breastCancer = textBox14.Text;     //乳がん
            sv.place = textBox15.Text;            //希望場所
            sv.handicapped = "".Equals(textBox16.Text) ? "" : "8";      //身体不自由
            sv.phone = textBox4.Text;            //電話番号
            sv.mobilePhone = textBox5.Text;      //携帯番号
            sv.inputDate = null;        //入力日
            sv.inputUser = null;        //入力者
            sv.updateDate = null;       //修正日
            sv.updateUser = null;       //修正者
            sv.done = null;             //完了

            return sv;
        }

        private bool doSave(SaveData sv)
        {
            bool err = false;

            MySqlConnection conn;
            string connstr = System.Configuration.ConfigurationManager.AppSettings["Conn"];
            conn = new MySqlConnection(connstr);
            conn.Open();

            bool isExist = isExistData(sv, Global.times, conn);
//            bool isExist = false;
            if (isExist)
            {
                sv.updateUser = Global.inputUser;
                err = updateData(sv, Global.times, conn);
            }
            else
            {
                sv.inputUser = Global.inputUser;
                err = insertData(sv, Global.times, conn);
            }
            conn.Close();
            return err;
        }

        private bool isExistData(SaveData sv, string tableName, MySqlConnection conn)
        {
            bool isExist = false;
//                new MySqlCommand("select exists (select 1 from @tableName where `整理番号` = @serialNo)", conn);
            // パラメータ設定
//            cmd.Parameters.Add(new MySqlParameter("tableName", tableName));
            MySqlCommand cmd = new MySqlCommand("select * from `" + tableName + "` where `整理番号` = @serialNo ", conn);
            // パラメータ設定

            cmd.Parameters.Add(new MySqlParameter("serialNo", sv.serialNo));

            try
            {
                // 実行
                MySqlDataReader reader = cmd.ExecuteReader();
                if (reader.HasRows)
                {
                    isExist = true;
                }
                reader.Close();
//                reader.Read();
//                isExist = reader.GetBoolean(0);
//                reader.Close();
            }
            catch (SqlException ex)
            {
            }

            return isExist;
        }

        private bool insertData(SaveData sv, string tableName, MySqlConnection conn)
        {
            bool err = false;
            // コマンドを作成
            MySqlCommand cmd =
                new MySqlCommand("insert into `" + tableName + "` (`ロット番号`,"
                                                                  + "`行政区コード`,"
                                                                  + "`行政区名称`,"
                                                                  + "`保健区`,"
                                                                  + "`整理番号`,"
                                                                  + "`世帯番号`,"
                                                                  + "`健康診査`,"
                                                                  + "`結核肺がん`,"
                                                                  + "`胃がん`,"
                                                                  + "`大腸がん`,"
                                                                  + "`前立腺がん`,"
                                                                  + "`骨粗鬆症`,"
                                                                  + "`成人歯科`,"
                                                                  + "`子宮頸がん`,"
                                                                  + "`乳がん`,"
                                                                  + "`希望場所`,"
                                                                  + "`身体不自由`,"
                                                                  + "`電話番号`,"
                                                                  + "`携帯番号`,"
                                                                  + "`入力日`,"
                                                                  + "`入力者`,"
                                                                  + "`修正日`,"
                                                                  + "`修正者`,"
                                                                  + "`完了`) "
                                                          + "values (@lotNo,"
                                                                  + "@adminCode, "
                                                                  + "@adminName, "
                                                                  + "@healthArea, "
                                                                  + "@serialNo, "
                                                                  + "@houseNo,"
                                                                  + "@healthCheck,"
                                                                  + "@lungCancer,"
                                                                  + "@stomachCancer,"
                                                                  + "@colorectalCancer,"
                                                                  + "@prostateCancer,"
                                                                  + "@osteoporosis,"
                                                                  + "@dental,"
                                                                  + "@cervicalCancer,"
                                                                  + "@breastCancer,"
                                                                  + "@place,"
                                                                  + "@handicapped,"
                                                                  + "@phone,"
                                                                  + "@mobilePhone,"
                                                                  + "@inputDate,"
                                                                  + "@inputUser,"
                                                                  + "@updateDate,"
                                                                  + "@updateUser,"
                                                                  + "@done)", conn);
            // パラメータ設定
            cmd.Parameters.Add(new MySqlParameter("lotNo", sv.lotNo));
            cmd.Parameters.Add(new MySqlParameter("adminCode", sv.adminCode));
            cmd.Parameters.Add(new MySqlParameter("adminName", sv.adminName));
            cmd.Parameters.Add(new MySqlParameter("healthArea", sv.healthArea));
            cmd.Parameters.Add(new MySqlParameter("serialNo", sv.serialNo));
            cmd.Parameters.Add(new MySqlParameter("houseNo", sv.houseNo));
            cmd.Parameters.Add(new MySqlParameter("healthCheck", sv.healthCheck));
            cmd.Parameters.Add(new MySqlParameter("lungCancer", sv.lungCancer));
            cmd.Parameters.Add(new MySqlParameter("stomachCancer", sv.stomachCancer));
            cmd.Parameters.Add(new MySqlParameter("colorectalCancer", sv.colorectalCancer));
            cmd.Parameters.Add(new MySqlParameter("prostateCancer", sv.prostateCancer));
            cmd.Parameters.Add(new MySqlParameter("osteoporosis", sv.osteoporosis));
            cmd.Parameters.Add(new MySqlParameter("dental", sv.dental));
            cmd.Parameters.Add(new MySqlParameter("cervicalCancer", sv.cervicalCancer));
            cmd.Parameters.Add(new MySqlParameter("breastCancer", sv.breastCancer));
            cmd.Parameters.Add(new MySqlParameter("place", sv.place));
            cmd.Parameters.Add(new MySqlParameter("handicapped", sv.handicapped));
            cmd.Parameters.Add(new MySqlParameter("phone", sv.phone));
            cmd.Parameters.Add(new MySqlParameter("mobilePhone", sv.mobilePhone));
            cmd.Parameters.Add(new MySqlParameter("inputDate", DateTime.Now));
            cmd.Parameters.Add(new MySqlParameter("inputUser", sv.inputUser));
            cmd.Parameters.Add(new MySqlParameter("updateDate", sv.updateDate));
            cmd.Parameters.Add(new MySqlParameter("updateUser", sv.updateUser));
            cmd.Parameters.Add(new MySqlParameter("done", sv.done));

            try
            {
                // 実行
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                // 例外処理
                MessageBox.Show("例外発生:" + ex.Message);
                return true;
            }

            return err;
        }

        private bool updateData(SaveData sv, string tableName, MySqlConnection conn)
        {
            bool err = false;
            string sql = "update `" + tableName + "` set `ロット番号` = @lotNo,"
                                                      + "`行政区コード` = @adminCode,"
                                                      + "`行政区名称` = @adminName,"
                                                      + "`保健区` = @healthArea,"
                                                      + "`整理番号` = @serialNo,"
                                                      + "`世帯番号` = @houseNo,"
                                                      + "`健康診査` = @healthCheck,"
                                                      + "`結核肺がん` = @lungCancer,"
                                                      + "`胃がん` = @stomachCancer,"
                                                      + "`大腸がん` = @colorectalCancer,"
                                                      + "`前立腺がん` = @prostateCancer,"
                                                      + "`骨粗鬆症` = @osteoporosis,"
                                                      + "`成人歯科` = @dental,"
                                                      + "`子宮頸がん` = @cervicalCancer,"
                                                      + "`乳がん` = @breastCancer,"
                                                      + "`希望場所` = @place,"
                                                      + "`身体不自由` = @handicapped,"
                                                      + "`電話番号` = @phone,"
                                                      + "`携帯番号` = @mobilePhone,"
                                                      + "`修正日` = @updateDate,"
                                                      + "`修正者` = @updateUser,"
                                                      + "`完了` = @done "
                                                      + "where `整理番号` = @serialNo";

            // コマンドを作成
            MySqlCommand cmd = new MySqlCommand(sql, conn);

            // パラメータ設定
            cmd.Parameters.Add(new MySqlParameter("lotNo", sv.lotNo));
            cmd.Parameters.Add(new MySqlParameter("adminCode", sv.adminCode));
            cmd.Parameters.Add(new MySqlParameter("adminName", sv.adminName));
            cmd.Parameters.Add(new MySqlParameter("healthArea", sv.healthArea));
            cmd.Parameters.Add(new MySqlParameter("serialNo", sv.serialNo));
            cmd.Parameters.Add(new MySqlParameter("houseNo", sv.houseNo));
            cmd.Parameters.Add(new MySqlParameter("healthCheck", sv.healthCheck));
            cmd.Parameters.Add(new MySqlParameter("lungCancer", sv.lungCancer));
            cmd.Parameters.Add(new MySqlParameter("stomachCancer", sv.stomachCancer));
            cmd.Parameters.Add(new MySqlParameter("colorectalCancer", sv.colorectalCancer));
            cmd.Parameters.Add(new MySqlParameter("prostateCancer", sv.prostateCancer));
            cmd.Parameters.Add(new MySqlParameter("osteoporosis", sv.osteoporosis));
            cmd.Parameters.Add(new MySqlParameter("dental", sv.dental));
            cmd.Parameters.Add(new MySqlParameter("cervicalCancer", sv.cervicalCancer));
            cmd.Parameters.Add(new MySqlParameter("breastCancer", sv.breastCancer));
            cmd.Parameters.Add(new MySqlParameter("place", sv.place));
            cmd.Parameters.Add(new MySqlParameter("handicapped", sv.handicapped));
            cmd.Parameters.Add(new MySqlParameter("phone", sv.phone));
            cmd.Parameters.Add(new MySqlParameter("mobilePhone", sv.mobilePhone));
            cmd.Parameters.Add(new MySqlParameter("updateDate", DateTime.Now));
            cmd.Parameters.Add(new MySqlParameter("updateUser", sv.updateUser));
            cmd.Parameters.Add(new MySqlParameter("done", sv.done));

            try
            {
                // 実行
                cmd.ExecuteNonQuery();
            }
            catch (SqlException ex)
            {
                // 例外処理
                MessageBox.Show("例外発生:" + ex.Message);
                return true;
            }

            return err;

        }
    }
}