unote 書けば書くほどに

20230313

参考にさせていただきます。

SET YMD=%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2,2%

SET HMS=%TIME: =0%
SET HMS=%HMS:~0,2%%HMS:~3,2%%HMS:~6,2%

ECHO %YMD% %HMS%

PAUSE

バッチファイルで年月日時分秒を取得 - 一人情シス入門

入門講義【第6章】 ファイル名に日付を加える



private void button1_Click_1(object sender, EventArgs e)
{
//strSQL = strSQL_SEL + selTN;
DataTable dtNouki = new DataTable();//全ての項目テーブル
DataTable dtZaiko = new DataTable();//検索対象(NAME ALL)

Console.WriteLine("実行...");

//全ての項目テーブル
strSQL = "select * from NOUKI";
Console.WriteLine(strSQL);
dtNouki = OraTableSelect(strSQL);

//検索対象(NAME ALL)
strSQL = "select * from ZAIKO";
Console.WriteLine(strSQL);
dtZaiko = OraTableSelect(strSQL);

//word列追加する
dtNouki.Columns.Add("X");
dtNouki.Columns.Add("word");
dtNouki.Columns.Add("aimai");
dtNouki.Columns.Add("hantei");
dtNouki.Columns.Add("LOT");
dtNouki.Columns.Add("SNOUKI");
dtNouki.Columns.Add("BIKOU");

int noukiCnt = dtNouki.Rows.Count;

string strWord;
string strWordBF;

string strAimai;
string strLot;

string str;
string target = "-";
int tgtidx;
int X=0;
int buf=0;

//検索ワード作成→★WordCreate
for (int m = 0; m < noukiCnt; m++)
{
str = dtNouki.Rows[m]["NOUZUBAN"].ToString();
tgtidx = str.IndexOf(target);

if (tgtidx == -1)
{
dtNouki.Rows[m]["word"] = str.Substring(tgtidx, -6);
}
else
{
dtNouki.Rows[m]["word"] = str.Substring(tgtidx, str.Length - tgtidx);
}

}

dtNouki.Rows[0]["X"] = 0;

//--- 検索部分 ----
for (int count = 0; count < dtNouki.Rows.Count; count++)
{

//行数がXを超えたらループ抜け
if (dtNouki.Rows.Count <= X)
{
break;
}

strWord = dtNouki.Rows[X]["word"].ToString();
dtNouki.Rows[X]["X"] = X;

//1つ前の行と図番確認用
if (X == 0)
{
strWordBF = dtNouki.Rows[0]["word"].ToString();
}
else if (X > 0 && buf == 0)
{
strWordBF = dtNouki.Rows[X - 1]["word"].ToString();
}
else
{
strWordBF = dtNouki.Rows[X - buf]["word"].ToString();
buf = 0;//bufをリセット
}

//対象図番(納期)
string tgtZUBAN = dtNouki.Rows[X]["NOUZUBAN"].ToString();

//あいまいデータ
var aimai =
dtZaiko.AsEnumerable().Where(i => i["ZAIZUBAN"].ToString().Contains(strWord));

//完全一致データ
var kanzen =
dtZaiko.AsEnumerable().Where(i => i["ZAIZUBAN"].ToString().Contains(tgtZUBAN));

//デフォルト:完全一致方式
var temp = kanzen;

//あいまい検索スイッチ
int aimaiSW = 1;

if (aimaiSW == 1)
{
temp = aimai;
}

if (temp.Any())
{
DataTable dt = temp.CopyToDataTable();
int rowCNT = dt.Rows.Count;

//1件目
strAimai = dt.Rows[0]["ZAIZUBAN"].ToString();
dtNouki.Rows[X]["aimai"] = strAimai;

if (strAimai == tgtZUBAN)//一致確認
{
dtNouki.Rows[X]["hantei"] = "完全一致";
}
else
{
dtNouki.Rows[X]["hantei"] = "部分一致";
}

//★for(j=0 J++){AdddtZaioko(,j)}
//dtNouki.Rows[X + ar]["aimai"] = strAimai;

//2件目以降
if (rowCNT >= 2 && strWord != strWordBF)
{
//dtNouki.Rows[X]["hantei1"] = "複数ロット";
int Y = X;//行を追加する前の行数を保持

for (int ar = 1; ar < rowCNT; ar++)
{
strAimai = dt.Rows[ar]["ZAIZUBAN"].ToString(); //あいまいword

DataRow addrw = dtNouki.NewRow();
dtNouki.Rows.InsertAt(addrw, X + ar);//行追加(対象行,開始位置)

//★for(j=0 J++){AdddtZaioko(,j)}
dtNouki.Rows[X + ar]["aimai"] = strAimai;

if (strAimai == tgtZUBAN)//一致確認
{
dtNouki.Rows[X + ar]["hantei"] = "完全一致";
}
else
{
dtNouki.Rows[X + ar]["hantei"] = "部分一致";
}

}

X = Y + rowCNT;//次の行位置
buf = rowCNT;
}

//rowCNTが1件のみ場合の後処理
else
{
//dtNouki.Rows[X]["hantei"] = "単一ロット";

if (strAimai == tgtZUBAN)//一致確認
{
dtNouki.Rows[X + ar]["hantei"] = "完全一致";
}
else
{
dtNouki.Rows[X + ar]["hantei"] = "部分一致";
}


X++;
}
}

else//部分一致もない場合
{
dtNouki.Rows[X]["hantei"] = "なし";
X++;
}

}
dataGridView1.DataSource = dtNouki;//テーブル表示

}