marc2에서 마크목록생성시 색상불일치로 데이터 생성갯수가 달라진 부분 수정, 연결된 폼들때문에 addmarc2 도 수정하고 marcopyselect2 생성, marc_mklist2 생성

This commit is contained in:
2026-02-04 22:31:27 +09:00
parent ad0be3fef5
commit f9d29c7629
13 changed files with 1917 additions and 391 deletions

View File

@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2026.02.03.2240")]
[assembly: AssemblyFileVersion("2026.02.03.2240")]
[assembly: AssemblyVersion("2026.02.04.2230")]
[assembly: AssemblyFileVersion("2026.02.04.2230")]

View File

@@ -367,6 +367,12 @@
<DependentUpon>Mac_List_Add.cs</DependentUpon>
</Compile>
<Compile Include="마크\MarcBookItem.cs" />
<Compile Include="마크\MarcCopySelect2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="마크\MarcCopySelect2.Designer.cs">
<DependentUpon>MarcCopySelect2.cs</DependentUpon>
</Compile>
<Compile Include="마크\MarcCopySelect.cs">
<SubType>Form</SubType>
</Compile>
@@ -497,6 +503,12 @@
<DependentUpon>Mac_Stat_Stat.cs</DependentUpon>
</Compile>
<Compile Include="마크\Marc_Macro_Sub.cs" />
<Compile Include="마크\Marc_mkList2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="마크\Marc_mkList2.Designer.cs">
<DependentUpon>Marc_mkList2.cs</DependentUpon>
</Compile>
<Compile Include="마크\Marc_mkList.cs">
<SubType>Form</SubType>
</Compile>
@@ -1083,6 +1095,9 @@
<EmbeddedResource Include="마크\Mac_List_Add.resx">
<DependentUpon>Mac_List_Add.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="마크\MarcCopySelect2.resx">
<DependentUpon>MarcCopySelect2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="마크\MarcCopySelect.resx">
<DependentUpon>MarcCopySelect.cs</DependentUpon>
</EmbeddedResource>
@@ -1146,6 +1161,9 @@
<EmbeddedResource Include="마크\Mac_Stat_Stat.resx">
<DependentUpon>Mac_Stat_Stat.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="마크\Marc_mkList2.resx">
<DependentUpon>Marc_mkList2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="마크\Marc_mkList.resx">
<DependentUpon>Marc_mkList.cs</DependentUpon>
</EmbeddedResource>

View File

@@ -95,7 +95,7 @@ namespace UniMarc
string SearchText = tb_Search.Text;
string SearchCol = cb_SearchCol.SelectedItem.ToString();
MarcCopySelect mcs = new MarcCopySelect(this);
var mcs = new MarcCopySelect2(this);
mcs.Init(SearchCol, SearchText);
mcs.Show();
}

View File

@@ -1,4 +1,5 @@
using AR;
using arCtl.TinyListview;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -38,7 +39,7 @@ namespace UniMarc
Skill_Search_Text search_Text = new Skill_Search_Text();
String_Text st = new String_Text();
Mac_List ml;
BindingList<MarcBookItem> dataList = new BindingList<MarcBookItem>();
public BindingList<MarcBookItem> dataList = new BindingList<MarcBookItem>();
MacListItem pItem = null;
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
@@ -202,7 +203,8 @@ namespace UniMarc
/// </summary>
void chk_Marc()
{
for (int a = 0; a < List_Book.Rows.Count; a++)
foreach (var dr in this.dataList) // (int a = 0; a < this.dataList.Count; a++)
{
string Area =
// 0 1
@@ -215,7 +217,9 @@ namespace UniMarc
string Table = "Marc";
string[] sear_tbl = { "ISBN" };
string[] sear_col = { List_Book.Rows[a].Cells["ISBN13"].Value.ToString() };
var isbn = dr.ISBN13;//.isbn List_Book.Rows[a].Cells["ISBN13"].Value?.ToString() ?? string.Empty;
string[] sear_col = { isbn };
//if (List_Book.Rows[a].Cells["marc_idx"].Value.ToString() != "0") {//여기 조건이 이상함.. 여기 조건때문에 순서가 잘 못 뜨는 경우 발생..
// sear_tbl[0] = "idx";
@@ -229,10 +233,10 @@ namespace UniMarc
string[] Chk_Arr = Chk_Res.Split('|');
bool isMyData = true;
if (Chk_Arr.Length < 2)
if (Chk_Arr.Length < 2) //마크DB에서 데이터가 없다면?
{
List_Book.Rows[a].Cells["grade"].Value = "3";
List_Book.Rows[a].DefaultCellStyle.ForeColor = Color.Red;
dr.Grade = "3"; //List_Book.Rows[a].Cells["grade"].Value = "3";
dr.ForeColor = Color.Red;//List_Book.Rows[a].DefaultCellStyle.ForeColor = Color.Red;
continue;
}
@@ -242,31 +246,30 @@ namespace UniMarc
string[] MarcData = { Chk_Arr[2], Chk_Arr[4], Chk_Arr[6] };
string[] CheckData = { Chk_Arr[3], Chk_Arr[5], Chk_Arr[7] };
List_Book.Rows[a].DefaultCellStyle.ForeColor = SetGradeColor(Chk_Arr[8], isMyData); // Temporary, chk_Marc updates item below
List_Book.Rows[a].Cells["marc_idx"].Value = Chk_Arr[0];
List_Book.Rows[a].Cells["db_marc"].Value = MarcData[0];//NewestMarc(MarcData, CheckData);
List_Book.Rows[a].Cells["grade"].Value = Chk_Arr[8];
dr.ForeColor = SetGradeColor(Chk_Arr[8], isMyData); // Temporary, chk_Marc updates item below
dr.MarcIdx = Chk_Arr[0]; //List_Book.Rows[a].Cells["marc_idx"].Value = Chk_Arr[0];
dr.DbMarc = MarcData[0];// List_Book.Rows[a].Cells["db_marc"].Value = MarcData[0];//NewestMarc(MarcData, CheckData);
dr.Grade = Chk_Arr[8];// List_Book.Rows[a].Cells["grade"].Value = Chk_Arr[8];
// text008.Text = Chk_Arr[9];
List_Book.Rows[a].Cells["user"].Value = Chk_Arr[10];
List_Book.Rows[a].Cells["SaveDate"].Value = Chk_Arr[11];
dr.User = Chk_Arr[10];// List_Book.Rows[a].Cells["user"].Value = Chk_Arr[10];
dr.SaveDate = Chk_Arr[11];// List_Book.Rows[a].Cells["SaveDate"].Value = Chk_Arr[11];
var item = List_Book.Rows[a].DataBoundItem as MarcBookItem;
//var item = List_Book.Rows[a].DataBoundItem as MarcBookItem;
Color gradeColor = SetGradeColor(Chk_Arr[8], isMyData);
if (item != null) item.ForeColor = gradeColor;
List_Book.Rows[a].DefaultCellStyle.ForeColor = gradeColor;
dr.ForeColor = gradeColor;
//if (item != null) item.ForeColor = gradeColor;
//List_Book.Rows[a].DefaultCellStyle.ForeColor = gradeColor;
if (isMyData)
{
Color saveColor = GetSaveDateColor(Chk_Arr[11]);
if (item != null) item.BackColor = saveColor;
List_Book.Rows[a].DefaultCellStyle.BackColor = saveColor;
dr.BackColor = saveColor;
}
else
{
string FindCompCmd = string.Format("SELECT `comp_name` FROM `Comp` WHERE `idx` = {0}", Chk_Arr[1]);
List_Book.Rows[a].Cells["user"].Value = db.DB_Send_CMD_Search(FindCompCmd).Replace("|", "");
List_Book.Rows[a].DefaultCellStyle.BackColor = Color.LightGray;
if (item != null) item.BackColor = Color.LightGray;
dr.User = db.DB_Send_CMD_Search(FindCompCmd).Replace("|", "");
dr.BackColor = Color.LightGray;
}
}
}
@@ -338,6 +341,11 @@ namespace UniMarc
List_Book.Rows[e.RowIndex].DefaultCellStyle.ForeColor = item.ForeColor;
List_Book.Rows[e.RowIndex].DefaultCellStyle.BackColor = item.BackColor;
}
else
{
List_Book.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Gray;
List_Book.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.DimGray;
}
}
@@ -523,12 +531,14 @@ namespace UniMarc
private void btn_CopySelect_Click(object sender, EventArgs e)
{
//TODO: 마크 물리는쪽
int row = List_Book.CurrentCell.RowIndex;
string isbn = List_Book.Rows[row].Cells["ISBN13"].Value.ToString();
//int row = List_Book.CurrentCell.RowIndex;
//string isbn = List_Book.Rows[row].Cells["ISBN13"].Value.ToString();
//var item = List_Book.CurrentRow.DataBoundItem as MarcBookItem;
MarcCopySelect copySelect = new MarcCopySelect(this);
copySelect.MarcFormRowIndex = row;
copySelect.Init("isbn", isbn);
var dr = this.bs1.Current as MarcBookItem;
var copySelect = new MarcCopySelect2(this,dr);
copySelect.Init("isbn", dr.ISBN13);
copySelect.Show();
}
@@ -537,25 +547,21 @@ namespace UniMarc
/// </summary>
/// <param name="row"></param>
/// <param name="GridData">[0] idx, [1] compidx, [2] user, [3] date, [4] grade, [5] tag008, [6] marc </param>
public void SelectMarc_Sub(int row, string[] GridData)
public void SelectMarc_Sub(MarcBookItem row, string[] GridData)
{
List_Book.Rows[row].Cells["marc_idx"].Value = GridData[0];
List_Book.Rows[row].Cells["user"].Value = GridData[2];
List_Book.Rows[row].Cells["SaveDate"].Value = GridData[4];
List_Book.Rows[row].Cells["grade"].Value = GridData[3];
row.MarcIdx = GridData[0];
row.User= GridData[2];
row.SaveDate = GridData[4];
row.Grade= GridData[3];
// text008.Text = GridData[5];
List_Book.Rows[row].Cells["db_marc"].Value = GridData[6];
row.DbMarc= GridData[6];
mOldMarc = GridData[6];
List_Book.Rows[row].DefaultCellStyle.ForeColor = SetGradeColor(GridData[4]);
List_Book.Rows[row].DefaultCellStyle.BackColor = Color.Yellow;
var item = List_Book.Rows[row].DataBoundItem as MarcBookItem;
if (item != null)
{
item.ForeColor = List_Book.Rows[row].DefaultCellStyle.ForeColor;
item.BackColor = Color.Yellow;
}
if (List_Book.CurrentRow != null && List_Book.CurrentRow.Index == row)
row.ForeColor = SetGradeColor(row.Grade);
row.BackColor = Color.Yellow;
var currentitem = this.bs1.Current as MarcBookItem;
if (currentitem != null && currentitem == row)
{
List_Book_SelectionChanged(null, null);
}
@@ -563,99 +569,6 @@ namespace UniMarc
private void MarcEditorControl_BookSaved(object sender, MarcEditorControl.BookSavedEventArgs e)
{
/* [기존 방식: UI 직접 수정 로직 주석 처리]
string table_name = "Marc";
//데이터인덱스를 찾아서 값을 업데이트한다.
var item = this.dataList.Where(t => t.ListIdx == e.Param.ListIdx).FirstOrDefault();
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string orimarc = e.DBMarc;// st.made_Ori_marc(richTextBox1).Replace(@"\", "₩");
string Midx = List_Book.Rows[SaveRowIdx].Cells["marc_idx"].Value.ToString();
string SaveDate = List_Book.Rows[SaveRowIdx].Cells["SaveDate"].Value.ToString();
string SaveUser = List_Book.Rows[SaveRowIdx].Cells["user"].Value.ToString();
bool IsCoverDate = false;
if (SaveDate != "")
{
// 마지막 수정일로부터 2일이 지났는지, 마지막 저장자가 사용자인지 확인
TimeSpan sp = spspsp(SaveDate, date);
IsCoverDate = IsCoverData(sp.Days, SaveUser);
}
// true일 경우 INSERT, false일 경우 UPDATE
bool isNewData = Midx != "" ? false : true;
if (List_Book.Rows[SaveRowIdx].DefaultCellStyle.ForeColor == Color.Orange ||
List_Book.Rows[SaveRowIdx].DefaultCellStyle.ForeColor == Color.Red)
{
string[] Insert_tbl = {
"ISBN", "서명", "저자", "출판사",
"가격", "marc", "비고1", "비고2", "url",
"grade", "marc_chk", "user", "division", "008tag",
"date", "compidx" };
string[] Insert_col = {
e.Param.ISBN13, e.Param.BookName, e.Param.Author, e.Param.Publisher,
e.Param.Price, orimarc, e.Param.Remark1, e.Param.Remark2, e.Param.URL,
e.Param.Grade, "1", mUserName, e.Param.tag056, e.Param.text008,
date, mCompidx };
string Incmd = db.DB_INSERT(table_name, Insert_tbl, Insert_col);
PUB.log.Add("INSERT", string.Format("{0}({1},{2}) : {3}", mUserName, mCompidx, List_Book.Rows[SaveRowIdx].DefaultCellStyle.ForeColor, Incmd));
long newIdx = db.DB_Send_CMD_Insert_GetIdx(Incmd);
if (newIdx > 0)
{
Midx = newIdx.ToString();
List_Book.Rows[SaveRowIdx].Cells["marc_idx"].Value = Midx;
isNewData = true;
}
}
else
{
string[] Edit_tbl = {
"compidx", "marc", "marc_chk", "marc1", "marc_chk1", "비고1",
"비고2", "url", "division", "008tag", "date",
"user", "grade" };
string[] Edit_col = {
mCompidx, orimarc, "1", mOldMarc , "0", e.Param.Remark1,
e.Param.Remark2, e.Param.URL, e.Param.tag056,e.Param.text008, date,
mUserName, e.Param.Grade };
string[] Sear_tbl = { "idx", "compidx" };
string[] Sear_col = { Midx, mCompidx };
if (e.Param.ISBN13 == null || e.Param.ISBN13 == "")
{
MessageBox.Show("ISBN 데이터가 없습니다.");
return;
}
string U_cmd = db.More_Update(table_name, Edit_tbl, Edit_col, Sear_tbl, Sear_col);
PUB.log.Add("Update", string.Format("{0}({1},{2}) : {3}", mUserName, mCompidx, List_Book.Rows[SaveRowIdx].DefaultCellStyle.ForeColor, U_cmd.Replace("\r", " ").Replace("\n", " ")));
Helper_DB.ExcuteNonQuery(U_cmd);
isNewData = false;
}
List_Book.Rows[SaveRowIdx].Cells["grade"].Value = e.Param.Grade;
List_Book.Rows[SaveRowIdx].Cells["SaveDate"].Value = e.SaveDate;
List_Book.Rows[SaveRowIdx].Cells["user"].Value = mUserName;
List_Book.Rows[SaveRowIdx].Cells["db_marc"].Value = e.DBMarc;
List_Book.Rows[SaveRowIdx].DefaultCellStyle.ForeColor = SetGradeColor(grade.ToString());
var item = List_Book.Rows[SaveRowIdx].DataBoundItem as MarcBookItem;
if (item != null) item.ForeColor = List_Book.Rows[SaveRowIdx].DefaultCellStyle.ForeColor;
// (신규 추가 시 위에서 이미 Midx를 할당함)
string UpdateListIndex = string.Format("UPDATE `Obj_List_Book` SET `m_idx` = {0} WHERE `idx` = {1} AND 'compidx' ={2};",
Midx, List_Book.Rows[SaveRowIdx].Cells["list_idx"].Value.ToString(), mCompidx);
PUB.log.Add("MarcUpdate", string.Format("{0}({1}) : {2}", mUserName, mCompidx, UpdateListIndex));
Helper_DB.ExcuteNonQuery(UpdateListIndex);
MessageBox.Show("저장되었습니다!");
*/
// [신규 방식: 데이터 객체(Item) 중심 로직]
var item = this.dataList.Where(t => t.ListIdx == e.Param.ListIdx).FirstOrDefault();
if (item == null) return;
@@ -813,11 +726,17 @@ namespace UniMarc
private void btn_mk_marcList_Click(object sender, EventArgs e)
{
Marc_mkList mkList = new Marc_mkList(this);
var mkList = new Marc_mkList2(this);
mkList.StartPosition = FormStartPosition.CenterScreen;
mkList.Show();
}
#region _Sub
/// <summary>
/// 글자색이 빨간색이 아니라면 True 를 반환합니다.
/// </summary>
/// <param name="row"></param>
/// <returns></returns>
public bool Check_BackColor(int row)
{
if (List_Book.Rows[row].DefaultCellStyle.ForeColor != Color.Red)
@@ -825,6 +744,11 @@ namespace UniMarc
return false;
}
/// <summary>
/// ColCheck 값이 V 라면 True 를 반환합니다.
/// </summary>
/// <param name="row"></param>
/// <returns></returns>
public bool Check_List_V(int row)
{
if (List_Book.Rows[row].Cells["colCheck"].Value.ToString() == "V")
@@ -836,7 +760,7 @@ namespace UniMarc
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
bool isCheck = checkBox3.Checked;
bool isCheck = chkColCheck.Checked;
if (isCheck)
{
for (int a = 0; a < List_Book.Rows.Count; a++)

View File

@@ -69,11 +69,12 @@
this.btn_CopySelect = new System.Windows.Forms.Button();
this.btn_FilterReturn = new System.Windows.Forms.Button();
this.btn_Search = new System.Windows.Forms.Button();
this.checkBox3 = new System.Windows.Forms.CheckBox();
this.chkColCheck = new System.Windows.Forms.CheckBox();
this.tbCustName = new System.Windows.Forms.Button();
this.lbCustIDX = new System.Windows.Forms.Label();
this.btCopy = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.marcEditorControl1 = new UniMarc.MarcEditorControl();
this.panel3 = new System.Windows.Forms.Panel();
this.panel4 = new System.Windows.Forms.Panel();
this.lbl_BookList = new System.Windows.Forms.Label();
@@ -89,7 +90,6 @@
this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton();
this.marcEditorControl1 = new UniMarc.MarcEditorControl();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel();
this.lbListIdx = new System.Windows.Forms.ToolStripLabel();
@@ -491,18 +491,18 @@
this.btn_Search.UseVisualStyleBackColor = true;
this.btn_Search.Click += new System.EventHandler(this.btn_Search_Click);
//
// checkBox3
// chkColCheck
//
this.checkBox3.AutoSize = true;
this.checkBox3.BackColor = System.Drawing.Color.White;
this.checkBox3.Checked = true;
this.checkBox3.CheckState = System.Windows.Forms.CheckState.Checked;
this.checkBox3.Location = new System.Drawing.Point(511, 109);
this.checkBox3.Name = "checkBox3";
this.checkBox3.Size = new System.Drawing.Size(15, 14);
this.checkBox3.TabIndex = 227;
this.checkBox3.UseVisualStyleBackColor = false;
this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged);
this.chkColCheck.AutoSize = true;
this.chkColCheck.BackColor = System.Drawing.Color.White;
this.chkColCheck.Checked = true;
this.chkColCheck.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkColCheck.Location = new System.Drawing.Point(511, 109);
this.chkColCheck.Name = "chkColCheck";
this.chkColCheck.Size = new System.Drawing.Size(15, 14);
this.chkColCheck.TabIndex = 227;
this.chkColCheck.UseVisualStyleBackColor = false;
this.chkColCheck.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged);
//
// tbCustName
//
@@ -548,10 +548,20 @@
this.panel2.Size = new System.Drawing.Size(1083, 658);
this.panel2.TabIndex = 325;
//
// marcEditorControl1
//
this.marcEditorControl1.BackColor = System.Drawing.Color.Gray;
this.marcEditorControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.marcEditorControl1.Font = new System.Drawing.Font("돋움", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.marcEditorControl1.Location = new System.Drawing.Point(0, 0);
this.marcEditorControl1.Name = "marcEditorControl1";
this.marcEditorControl1.Size = new System.Drawing.Size(1083, 658);
this.marcEditorControl1.TabIndex = 0;
//
// panel3
//
this.panel3.BackColor = System.Drawing.Color.White;
this.panel3.Controls.Add(this.checkBox3);
this.panel3.Controls.Add(this.chkColCheck);
this.panel3.Controls.Add(this.List_Book);
this.panel3.Controls.Add(this.panel1);
this.panel3.Controls.Add(this.panel4);
@@ -701,16 +711,6 @@
this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(24, 24);
this.bindingNavigatorMoveLastItem.Text = "마지막으로 이동";
//
// marcEditorControl1
//
this.marcEditorControl1.BackColor = System.Drawing.Color.Gray;
this.marcEditorControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.marcEditorControl1.Font = new System.Drawing.Font("돋움", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.marcEditorControl1.Location = new System.Drawing.Point(0, 0);
this.marcEditorControl1.Name = "marcEditorControl1";
this.marcEditorControl1.Size = new System.Drawing.Size(1083, 658);
this.marcEditorControl1.TabIndex = 0;
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
@@ -768,7 +768,7 @@
private System.Windows.Forms.Button btn_Search;
private System.Windows.Forms.Button btn_mk_marcList;
public System.Windows.Forms.DataGridView List_Book;
private System.Windows.Forms.CheckBox checkBox3;
private System.Windows.Forms.CheckBox chkColCheck;

View File

@@ -15,9 +15,7 @@ namespace UniMarc
{
Helper_DB db = new Helper_DB();
Marc m;
Marc2 m2;
AddMarc am;
AddMarc2 am2;
CD_LP cp;
public int MarcFormRowIndex;
@@ -25,25 +23,12 @@ namespace UniMarc
{
InitializeComponent();
}
public MarcCopySelect(AddMarc2 cD)
{
InitializeComponent();
am2 = cD;
db.DBcon();
}
public MarcCopySelect(CD_LP cD)
{
InitializeComponent();
cp = cD;
db.DBcon();
}
public MarcCopySelect(Marc2 _m)
{
InitializeComponent();
m2 = _m;
db.DBcon();
}
public MarcCopySelect(Marc _m)
{
InitializeComponent();
@@ -426,8 +411,6 @@ namespace UniMarc
if (m != null)
m.SelectMarc_Sub(MarcFormRowIndex, GridData);
if(m2 != null)
m2.SelectMarc_Sub(MarcFormRowIndex, GridData);
if (am != null)
{
@@ -435,12 +418,6 @@ namespace UniMarc
string isbn = dataGridView1.Rows[row].Cells["isbn"].Value.ToString();
am.SelectMarc_Sub(Marc, isbn, GridData);
}
if (am2 != null)
{
string Marc = richTextBox1.Text;
string isbn = dataGridView1.Rows[row].Cells["isbn"].Value.ToString();
am2.SelectMarc_Sub(Marc, isbn, GridData);
}
this.Close();
}

View File

@@ -0,0 +1,224 @@
namespace UniMarc
{
partial class MarcCopySelect2
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.panel1 = new System.Windows.Forms.Panel();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.btn_Search = new System.Windows.Forms.Button();
this.tb_SearchBox = new System.Windows.Forms.TextBox();
this.cb_SearchFilter = new System.Windows.Forms.ComboBox();
this.btn_ShowDeleteMarc = new System.Windows.Forms.Button();
this.btn_Close = new System.Windows.Forms.Button();
this.btn_Delete = new System.Windows.Forms.Button();
this.panel2 = new System.Windows.Forms.Panel();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.panel3 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
this.panel3.SuspendLayout();
this.SuspendLayout();
//
// dataGridView1
//
this.dataGridView1.AllowUserToAddRows = false;
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle2.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(0, 0);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(1109, 106);
this.dataGridView1.TabIndex = 0;
this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellClick);
this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick);
this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown);
//
// panel1
//
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.progressBar1);
this.panel1.Controls.Add(this.btn_Search);
this.panel1.Controls.Add(this.tb_SearchBox);
this.panel1.Controls.Add(this.cb_SearchFilter);
this.panel1.Controls.Add(this.btn_ShowDeleteMarc);
this.panel1.Controls.Add(this.btn_Close);
this.panel1.Controls.Add(this.btn_Delete);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1109, 33);
this.panel1.TabIndex = 1;
//
// progressBar1
//
this.progressBar1.Location = new System.Drawing.Point(434, 4);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(160, 23);
this.progressBar1.TabIndex = 5;
//
// btn_Search
//
this.btn_Search.Location = new System.Drawing.Point(353, 4);
this.btn_Search.Name = "btn_Search";
this.btn_Search.Size = new System.Drawing.Size(75, 23);
this.btn_Search.TabIndex = 4;
this.btn_Search.Text = "검 색";
this.btn_Search.UseVisualStyleBackColor = true;
this.btn_Search.Click += new System.EventHandler(this.btn_Search_Click);
//
// tb_SearchBox
//
this.tb_SearchBox.Location = new System.Drawing.Point(109, 5);
this.tb_SearchBox.Name = "tb_SearchBox";
this.tb_SearchBox.Size = new System.Drawing.Size(238, 21);
this.tb_SearchBox.TabIndex = 3;
this.tb_SearchBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SearchBox_KeyDown);
//
// cb_SearchFilter
//
this.cb_SearchFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_SearchFilter.FormattingEnabled = true;
this.cb_SearchFilter.Items.AddRange(new object[] {
"도서명",
"저자",
"출판사"});
this.cb_SearchFilter.Location = new System.Drawing.Point(11, 5);
this.cb_SearchFilter.Name = "cb_SearchFilter";
this.cb_SearchFilter.Size = new System.Drawing.Size(91, 20);
this.cb_SearchFilter.TabIndex = 2;
//
// btn_ShowDeleteMarc
//
this.btn_ShowDeleteMarc.Location = new System.Drawing.Point(844, 4);
this.btn_ShowDeleteMarc.Name = "btn_ShowDeleteMarc";
this.btn_ShowDeleteMarc.Size = new System.Drawing.Size(93, 23);
this.btn_ShowDeleteMarc.TabIndex = 1;
this.btn_ShowDeleteMarc.Text = "삭제 마크 확인";
this.btn_ShowDeleteMarc.UseVisualStyleBackColor = true;
this.btn_ShowDeleteMarc.Click += new System.EventHandler(this.btn_ShowDeleteMarc_Click);
//
// btn_Close
//
this.btn_Close.Location = new System.Drawing.Point(1021, 4);
this.btn_Close.Name = "btn_Close";
this.btn_Close.Size = new System.Drawing.Size(75, 23);
this.btn_Close.TabIndex = 0;
this.btn_Close.Text = "닫 기";
this.btn_Close.UseVisualStyleBackColor = true;
this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
//
// btn_Delete
//
this.btn_Delete.Location = new System.Drawing.Point(943, 4);
this.btn_Delete.Name = "btn_Delete";
this.btn_Delete.Size = new System.Drawing.Size(75, 23);
this.btn_Delete.TabIndex = 0;
this.btn_Delete.Text = "마크 삭제";
this.btn_Delete.UseVisualStyleBackColor = true;
this.btn_Delete.Click += new System.EventHandler(this.btn_Delete_Click);
//
// panel2
//
this.panel2.Controls.Add(this.dataGridView1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 33);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1109, 106);
this.panel2.TabIndex = 2;
//
// richTextBox1
//
this.richTextBox1.BackColor = System.Drawing.Color.LightGray;
this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.richTextBox1.Font = new System.Drawing.Font("굴림체", 11.25F);
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(1109, 540);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
//
// panel3
//
this.panel3.Controls.Add(this.richTextBox1);
this.panel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel3.Location = new System.Drawing.Point(0, 139);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(1109, 540);
this.panel3.TabIndex = 3;
//
// MarcCopySelect
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1109, 679);
this.Controls.Add(this.panel3);
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.Name = "MarcCopySelect";
this.Text = "마크 선택";
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel2.ResumeLayout(false);
this.panel3.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.Button btn_Close;
private System.Windows.Forms.Button btn_Delete;
private System.Windows.Forms.Button btn_ShowDeleteMarc;
private System.Windows.Forms.ComboBox cb_SearchFilter;
private System.Windows.Forms.Button btn_Search;
private System.Windows.Forms.TextBox tb_SearchBox;
private System.Windows.Forms.ProgressBar progressBar1;
}
}

View File

@@ -0,0 +1,496 @@
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 static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace UniMarc
{
public partial class MarcCopySelect2 : Form
{
Helper_DB db = new Helper_DB();
Marc2 m2;
AddMarc2 am2;
MarcBookItem item;
public MarcCopySelect2()
{
InitializeComponent();
}
public MarcCopySelect2(AddMarc2 cD)
{
InitializeComponent();
am2 = cD;
db.DBcon();
}
public MarcCopySelect2(Marc2 _m,MarcBookItem _item)
{
InitializeComponent();
m2 = _m;
this.item = _item;
db.DBcon();
}
private void tb_SearchBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
btn_Search_Click(null, null);
}
private void btn_Search_Click(object sender, EventArgs e)
{
if (cb_SearchFilter.SelectedIndex < 0) return;
dataGridView1.Rows.Clear();
richTextBox1.Text = "";
string search_Col = "";
string search_Target = tb_SearchBox.Text;
switch (cb_SearchFilter.SelectedIndex)
{
case 0:
search_Col = "ISBN";
break;
case 1:
search_Col = "서명";
break;
case 2:
search_Col = "저자";
break;
case 3:
search_Col = "출판사";
break;
}
Init(search_Col, search_Target);
}
public void Init(string search_col, string search_Target, string CD_LP)
{
SettingGrid_CDLP();
btn_ShowDeleteMarc.Visible = false;
btn_Delete.Visible = false;
if (search_Target == "") return;
string Area = "`idx`, `Code`, `user`, `date`, `Marc`";
string Table = "DVD_Marc";
string Query = string.Format("SELECT {0} FROM {1} WHERE `{2}` = \"{3}\"", Area, Table, search_col, search_Target);
string Result = db.DB_Send_CMD_Search(Query);
string[] GridData = Result.Split('|');
InputGrid_CDLP(GridData);
}
private void SettingGrid_CDLP()
{
DataGridView dgv = dataGridView1;
dgv.Columns.Add("idx", "idx");
dgv.Columns.Add("code", "CODE");
dgv.Columns.Add("user", "수정자");
dgv.Columns.Add("date", "수정시각");
dgv.Columns.Add("marc", "Marc");
dgv.Columns["idx"].Visible = false;
dgv.Columns["user"].Width = 120;
dgv.Columns["date"].Width = 120;
dgv.Columns["marc"].Width = 300;
}
private void InputGrid_CDLP(string[] Value)
{
progressBar1.Value = 0;
progressBar1.Maximum = Value.Length / 5;
string[] Grid = { "", "", "", "", "" };
for (int a = 0; a < Value.Length; a++)
{
if (a % 5 == 0) Grid[0] = Value[a]; // idx
if (a % 5 == 1) Grid[1] = Value[a]; // CODE
if (a % 5 == 2) Grid[2] = Value[a]; // user
if (a % 5 == 3) Grid[3] = Value[a]; // date
if (a % 5 == 4)
{
Grid[4] = Value[a]; // marc
dataGridView1.Rows.Add(Grid);
progressBar1.Value += 1;
}
}
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
string savedate = dataGridView1.Rows[a].Cells["date"].Value.ToString();
SaveDataCheck(savedate, a);
}
}
public void Init(string search_col, string search_Target)
{
SettingGrid_Book();
if (search_Target == "") return;
// 0 1 2 3 4
string Area = "`idx`, `compidx`, `ISBN`, `서명`, `저자`, " +
// 5 6 7 8 9
"`출판사`, `user`, `date`, `grade`, `008tag`, " +
// 10 11 12 13 14 15
"`marc`, `marc_chk`, `marc1`, `marc_chk1`, `marc2`, `marc_chk2`";
string Table = "Marc";
string Query = string.Format("SELECT {0} FROM {1} WHERE `{2}` like \"%{3}%\";", Area, Table, search_col, search_Target);
string Result = db.DB_Send_CMD_Search(Query);
string[] GridData = Result.Split('|');
InputGrid(GridData);
}
private void SettingGrid_Book()
{
DataGridView dgv = dataGridView1;
dgv.Columns.Add("idx", "idx");
dgv.Columns.Add("compidx", "compidx");
dgv.Columns.Add("isbn", "ISBN");
dgv.Columns.Add("Title", "서명");
dgv.Columns.Add("Author", "저자");
dgv.Columns.Add("Comp", "출판사");
dgv.Columns.Add("user", "수정자");
dgv.Columns.Add("date", "수정시각");
dgv.Columns.Add("grade", "등급");
dgv.Columns.Add("tag008", "008Tag");
dgv.Columns.Add("marc", "Marc");
dgv.Columns["idx"].Visible = false;
dgv.Columns["compidx"].Visible = false;
dgv.Columns["user"].Width = 120;
dgv.Columns["date"].Width = 120;
dgv.Columns["grade"].Width = 60;
dgv.Columns["tag008"].Width = 150;
dgv.Columns["marc"].Width = 200;
}
private void InputGrid(string[] Value)
{
progressBar1.Value = 0;
progressBar1.Maximum = Value.Length / 16;
string[] Grid = {
"", "", "", "", "",
"", "", "", "", "",
"" };
string[] MarcData = { "", "", "", "", "", "" };
for (int a = 0; a < Value.Length; a++)
{
if (a % 16 == 0) Grid[0] = Value[a]; // idx
if (a % 16 == 1) Grid[1] = Value[a]; // compidx
if (a % 16 == 2) Grid[2] = Value[a]; // isbn
if (a % 16 == 3) Grid[3] = Value[a]; // 서명
if (a % 16 == 4) Grid[4] = Value[a]; // 저자
if (a % 16 == 5) Grid[5] = Value[a]; // 출판사
if (a % 16 == 6) Grid[6] = Value[a]; // user
if (a % 16 == 7) Grid[7] = Value[a]; // date
if (a % 16 == 8) Grid[8] = ChangeGrade(Value[a]); // grade
if (a % 16 == 9) Grid[9] = Value[a]; // 008tag
if (a % 16 == 10) MarcData[0] = Value[a]; // marc
if (a % 16 == 11) MarcData[1] = Value[a]; // marc_chk
if (a % 16 == 12) MarcData[2] = Value[a]; // marc1
if (a % 16 == 13) MarcData[3] = Value[a]; // marc_chk1
if (a % 16 == 14) MarcData[4] = Value[a]; // marc2
if (a % 16 == 15) { MarcData[5] = Value[a]; // marc_chk2
Grid[10] = RealMarc(MarcData);
dataGridView1.Rows.Add(Grid);
progressBar1.Value += 1;
}
}
for (int a = 0; a < dataGridView1.Rows.Count; a++)
{
string compidx = dataGridView1.Rows[a].Cells["compidx"].Value.ToString();
string grade = dataGridView1.Rows[a].Cells["grade"].Value.ToString();
string savedate = dataGridView1.Rows[a].Cells["date"].Value.ToString();
bool isMyData = true;
if (compidx != PUB.user.CompanyIdx) {
isMyData = false;
string FindCompCmd = string.Format("SELECT `comp_name` FROM `Comp` WHERE `idx` = {0}", compidx);
dataGridView1.Rows[a].Cells["user"].Value = db.DB_Send_CMD_Search(FindCompCmd).Replace("|", "");
dataGridView1.Rows[a].DefaultCellStyle.BackColor = Color.LightGray;
}
dataGridView1.Rows[a].DefaultCellStyle.ForeColor = SetGradeColor(grade, isMyData);
SaveDataCheck(savedate, a);
}
}
private string ChangeGrade(string Grade)
{
switch (Grade)
{
case "0":
return "A";
case "1":
return "B";
case "2":
return "C";
case "3":
return "D";
case "A":
return "0";
case "B":
return "1";
case "C":
return "2";
case "D":
return "3";
default:
return "D";
}
}
private Color SetGradeColor(string Grade, bool isMyData = true)
{
if (!isMyData)
return Color.Orange;
switch (Grade)
{
case "A":
return Color.Blue;
case "B":
return Color.Black;
case "C":
return Color.Gray;
case "D":
return Color.Red;
default:
return Color.Black;
}
}
private void SaveDataCheck(string Date, int row)
{
DateTime SaveDate = DateTime.ParseExact(Date, "yyyy-MM-dd HH:mm:ss",
System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
DateTime TargetDate = DateTime.Today.AddDays(-14);
int result = DateTime.Compare(SaveDate, TargetDate);
if (result >= 0) // SaveDate가 같거나 큼
dataGridView1.Rows[row].DefaultCellStyle.BackColor = Color.Yellow;
else // TargetDate가 큼
dataGridView1.Rows[row].DefaultCellStyle.BackColor = Color.White;
}
private string RealMarc(string[] MarcData)
{
string result = "";
if (MarcData[1] == "1")
result = MarcData[0];
if (MarcData[3] == "1")
result = MarcData[2];
if (MarcData[5] == "1")
result = MarcData[4];
return result;
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
String_Text st = new String_Text();
int row = e.RowIndex;
if (row < 0) return;
view_Marc(row);
st.Color_change("▼", richTextBox1);
st.Color_change("▲", richTextBox1);
}
/// <summary>
/// 마크데이터가 있는지 확인하고 메모장으로 출력
/// </summary>
/// <param name="row">해당 데이터의 row값</param>
/// <returns></returns>
void view_Marc(int row)
{
// 마크 데이터
string Marc_data = dataGridView1.Rows[row].Cells["marc"].Value.ToString();
if (Marc_data.Length < 3) return;
string result = string.Empty;
List<string> TagNum = new List<string>(); // 태그번호
List<string> field = new List<string>(); // 가변길이필드 저장
// 특수기호 육안으로 확인하기 쉽게 변환
Marc_data = Marc_data.Replace("", "▼");
Marc_data = Marc_data.Replace("", "▲");
Marc_data = Marc_data.Replace("₩", "\\");
// string leader = Marc_data.Substring(0, 24);
int startidx = 0;
string[] data = Marc_data.Substring(24).Split('▲'); // 리더부를 제외한 디렉터리, 가변길이필드 저장
// List에 필요한 데이터 집어넣는 작업.
for (int a = 1; a < data.Length - 1; a++)
{
TagNum.Add(data[0].Substring(startidx, 3));
startidx += 12;
field.Add(data[a] + "▲");
}
// List에 들어간 데이터를 메모장에 출력시키는 작업.
for (int a = 0; a < TagNum.Count; a++)
{
string res = TagNum[a];
if (field[a].IndexOf("▼") == -1)
{
res += "\t \t" + field[a];
}
else
{
string temp = field[a].Insert(2, "\t");
res += "\t" + temp;
}
result += res + "\n";
}
richTextBox1.Text = result;
return;
}
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
int row = e.RowIndex;
SelectMarc(row);
}
void SelectMarc(int row)
{
string[] GridData = {
dataGridView1.Rows[row].Cells["idx"].Value.ToString(),
dataGridView1.Rows[row].Cells["compidx"].Value.ToString(),
dataGridView1.Rows[row].Cells["user"].Value.ToString(),
ChangeGrade(dataGridView1.Rows[row].Cells["grade"].Value.ToString()),
dataGridView1.Rows[row].Cells["date"].Value.ToString(),
dataGridView1.Rows[row].Cells["tag008"].Value.ToString(),
dataGridView1.Rows[row].Cells["marc"].Value.ToString()
};
if(m2 != null)
{
m2.SelectMarc_Sub(this.item, GridData);
}
if (am2 != null)
{
string Marc = richTextBox1.Text;
string isbn = dataGridView1.Rows[row].Cells["isbn"].Value.ToString();
am2.SelectMarc_Sub(Marc, isbn, GridData);
}
this.Close();
}
private void btn_Close_Click(object sender, EventArgs e)
{
this.Close();
}
private void btn_Delete_Click(object sender, EventArgs e)
{
if (dataGridView1.CurrentCell.RowIndex < -1)
return;
int row = dataGridView1.CurrentCell.RowIndex;
string idx = dataGridView1.Rows[row].Cells["idx"].Value.ToString();
string User = PUB.user.UserName;
string compidx = PUB.user.CompanyIdx;
string NowDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string SelectArea = "`compidx`, `grade`, `ISBN`, `서명`, `총서명`, " +
"`저자`, `출판사`, `출판년월`, `가격`, `008tag`, " +
"`division`, `user`, `비고1`, `비고2`, `url`, " +
"`marc`, `marc_chk`, `marc1`, `marc_chk1`, `marc2`, `marc_chk2`";
string SelectCMD = string.Format("SELECT {0} FROM {1} WHERE `idx` = {2};", SelectArea, "Marc", idx);
string SelectRes = db.self_Made_Cmd(SelectCMD);
string[] SelectAry = SelectRes.Split('|');
if (SelectAry[0] != compidx)
{
MessageBox.Show("해당 마크를 삭제할 권한이 없습니다.", "삭제");
return;
}
if (MessageBox.Show("삭제하시겠습니까?", "삭제!", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
return;
string[] InsertCol = {
"compidx", "grade", "ISBN", "서명", "총서명",
"저자", "출판사", "출판년월", "가격", "008tag",
"division", "user", "비고1", "비고2", "url",
"date", "user_Del", "marc"
};
string marc = "";
if (SelectAry[16] == "1")
marc = SelectAry[15];
else if (SelectAry[18] == "1")
marc = SelectAry[17];
else if (SelectAry[20] == "1")
marc = SelectAry[19];
string[] InsertData = {
SelectAry[0], SelectAry[1], SelectAry[2], SelectAry[3], SelectAry[4],
SelectAry[5], SelectAry[6], SelectAry[7], SelectAry[8], SelectAry[9],
SelectAry[10], SelectAry[11], SelectAry[12], SelectAry[13], SelectAry[14],
NowDate, User, marc
};
string InsertCmd = db.DB_INSERT("Marc_Del", InsertCol, InsertData);
Helper_DB.ExcuteNonQuery(InsertCmd);
string DeleteCmd = string.Format("DELETE FROM `Marc` WHERE `idx` = {0};", idx);
Helper_DB.ExcuteNonQuery(DeleteCmd);
dataGridView1.Rows.Remove(dataGridView1.Rows[row]);
}
private void btn_ShowDeleteMarc_Click(object sender, EventArgs e)
{
ShowDeleteMarc showDeleteMarc = new ShowDeleteMarc();
showDeleteMarc.Show();
}
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (dataGridView1.CurrentCell.RowIndex < 0)
return;
int row = dataGridView1.CurrentCell.RowIndex;
SelectMarc(row);
}
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -18,12 +18,6 @@ namespace UniMarc
Marc marc;
CD_LP cp;
Helper_DB db = new Helper_DB();
Marc2 marc2;
public Marc_mkList(Marc2 _mae)
{
InitializeComponent();
marc2 = _mae;
}
public Marc_mkList(Marc _marc)
{
@@ -203,186 +197,8 @@ namespace UniMarc
if (marc != null)
ExportOld();
else if (marc2 != null)
ExportNew();
}
void ExportNew()
{
String_Text st = new String_Text();
var marccnt1 = marc2?.List_Book.RowCount ?? 0;
if (marccnt1 < 1)
{
UTIL.MsgE("마크데이터 목록이 존재하지 않습니다");
return;
}
string listName = tb_listName.Text;
string Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string outnum = tb_outnum.Text + "차";
string user = PUB.user.UserName;// Properties.Settings.Default.User;
var marc = this.marc2;
bool isAuthor = false;
bool isBook = false;
if (cb_FirstAuthor.SelectedIndex == 0)
isAuthor = true;
if (cb_FirstBook.SelectedIndex == 0)
isBook = true;
bool[] isType = { isAuthor, isBook };
// 시방서 목록 DB에 들어갈 것들.
string[] insert_list_col = {
"compidx", "work_list", "date", "state", "gu",
"first_Author", "symbol_Author","symbol_AuthorE", "book_Author", "divType", "divNum",
"etc", "user"
};
string[] insert_list_data = {
PUB.user.CompanyIdx, listName, Time, "진행", cb_listType.Text,
cb_FirstAuthor.Text, cb_authorTypeK.Text, cb_authorTypeE.Text, cb_FirstBook.Text, cb_divType.Text, cb_divNum.Text,
rtb_etc.Text, user
};
string cmdByList = db.DB_INSERT("Specs_List", insert_list_col, insert_list_data);
// 시방서 마크 DB에 들어갈 것들.
string[] insert_marc_col = {
"compidx", "work_list", "date", "ISBN", "book_name",
"s_book_name1", "s_book_num1", "author", "book_comp", "pubdate",
"price", "tag008", "class_symbol", "author_symbol", "marc",
"imageURL", "count", "num", "out_num", "midx",
"editDate", "user"
};
string[] insert_marc_data = {
PUB.user.CompanyIdx, listName, Time, "", "",
"", "", "", "", "",
"", "", "", "", "",
"", "", "", "", "",
Time, user
}; // 마크에서 추출 ( 3 ~ 12 )
int[] row = checkGridRow();
int num = 0;
progressBar1.Maximum = row.Length + 1;
string cmdByMarc = string.Format("INSERT INTO {0} {1} value", "Specs_Marc", db.DB_INSERT_SUB("", insert_marc_col));
bool CountSplit = chk_countSplit.Checked;
int listCount = 1;
int addCount = 1;
// 필터링하여 DB에 집어넣는 작업
for (int a = 0; a < row.Length; a++)
{
if (Convert.ToString(marc.List_Book.Rows[row[a]].Cells["db_marc"].Value) == "")
continue;
num += 1;
int.TryParse(Convert.ToString(marc.List_Book.Rows[row[a]].Cells["count"].Value), out listCount);
// ISBN, book_name, s_book_name1, s_book_num1, author, book_comp, pubdate, price, tag008, class_symbol
string[] Search = { "020a", "245a", "440a", "440v", "245d", "260b", "260c", "950b", "008", "056a" };
insert_marc_data[14] = Convert.ToString(marc.List_Book.Rows[row[a]].Cells["db_marc"].Value);
insert_marc_data[15] = Convert.ToString(marc.List_Book.Rows[row[a]].Cells["url"].Value);
insert_marc_data[16] = addCount.ToString();
if (rb_basicNum.Checked)
insert_marc_data[17] = Convert.ToString(marc.List_Book.Rows[row[a]].Cells["num"].Value);
else
insert_marc_data[17] = num.ToString();
insert_marc_data[18] = outnum;
insert_marc_data[19] = Convert.ToString(marc.List_Book.Rows[row[a]].Cells["marc_idx"].Value);
insert_marc_data[20] = Convert.ToString(marc.List_Book.Rows[row[a]].Cells["SaveDate"].Value);
insert_marc_data[21] = Convert.ToString(marc.List_Book.Rows[row[a]].Cells["user"].Value);
string[] Marc = st.Take_Tag(insert_marc_data[14], Search);
string[] Author = { "", Marc[1] }; // 저자, 도서명
// 100, 110, 111태그중 한개라도 있으면 저자로 인식.
string[] Author_Search = { "100a", "110a", "111a", "245d" };
string[] Author_res = st.Take_Tag(insert_marc_data[14], Author_Search);
if (Author_res[0].Length > 1) Author[0] = Author_res[0];
if (Author_res[1].Length > 1) Author[0] = Author_res[1];
if (Author_res[2].Length > 1) Author[0] = Author_res[2];
if (chk_CompSymbol.Checked)
if (Author_res[3].IndexOf("[외]") > -1)
Author[0] = Marc[5];
string tmp_ViewMarc = st.ConvertMarcType(insert_marc_data[14], out string errmessage);
// 마크에서 추출한 데이터 DB에 적용하기 위한 반복문
for (int b = 0; b < Marc.Length; b++)
{
insert_marc_data[b + 3] = Marc[b];
// 분류기호 설정값적용대로 가져오기.
if (b == 9)
{
string class_symbol = st.TakeTag_ConditionContent(tmp_ViewMarc, "056a", "056" + cb_divNum.Text);
if (class_symbol != "")
insert_marc_data[b + 3] = class_symbol;
}
}
// 22.10.24 740태그 삭제
tmp_ViewMarc = st.RemoveTagNumber(tmp_ViewMarc, "740");
// 마크 분류기호 설정값대로 적용
tmp_ViewMarc = st.RemoveTagNumber(tmp_ViewMarc, "056");
tmp_ViewMarc = st.AddTagInMarc(string.Format("056\t \t▼a{0}▼2{1}▲", insert_marc_data[12], cb_divNum.Text), tmp_ViewMarc);
insert_marc_data[14] = st.made_Ori_marc(tmp_ViewMarc);
if (Author[0].Length < 1)
{
MessageBox.Show(row[a] + "번째의 저자를 확인해주세요. \n (100a, 110a, 111a 중 1개 필수)");
return;
}
Author[0] = Regex.Replace(Author[0], @"[^a-zA-Z0-9가-힣_]", "", RegexOptions.Singleline);
Author[1] = st.RemoveWordInBracket(Author[1]);
Author[1] = Regex.Replace(Author[1], @"[^a-zA-Z0-9가-힣_]", "", RegexOptions.Singleline);
AuthorSymbol.Symbol sb = new AuthorSymbol.Symbol();
string authorTypeK = cb_authorTypeK.SelectedItem.ToString();
string authorTypeE = cb_authorTypeE.SelectedItem.ToString();
string res_Author = "";
if (chk_CompSymbol.Checked == false || cmb_author_four.Text == "출판사+서명")
res_Author = sb.SymbolAuthor(Author[0], Author[1], authorTypeK, authorTypeE, isType);
else //서명+출판사는 뒤집어서 입력한다 251110
res_Author = sb.SymbolAuthor(Author[1], Author[0], authorTypeK, authorTypeE, isType);
insert_marc_data[13] = res_Author;
cmdByMarc += db.DB_INSERT_SUB("value", insert_marc_data) + ",";
if (CountSplit && listCount > addCount)
{
a--;
addCount++;
continue;
}
else
{
addCount = 1;
progressBar1.PerformStep();
}
}
cmdByMarc = cmdByMarc.TrimEnd(',');
cmdByMarc += ";";
Helper_DB.ExcuteNonQuery(cmdByList);
Helper_DB.ExcuteNonQuery(cmdByMarc);
progressBar1.PerformStep();
if (progressBar1.Value == progressBar1.Maximum)
{
label2.Text = "완료되었습니다!";
}
}
void ExportOld()
{
String_Text st = new String_Text();
@@ -555,7 +371,7 @@ namespace UniMarc
if (progressBar1.Value == progressBar1.Maximum)
{
label2.Text = "완료되었습니다!";
label2.Text = $"완료되었습니다!({row.Length}건)";
}
}
@@ -569,7 +385,7 @@ namespace UniMarc
for (int a = 0; a < marc.List_Book.Rows.Count; a++)
{
bool isSuccess = true;
if (!marc.Check_BackColor(a) && marc.Check_List_V(a))
if (marc.Check_BackColor(a) == false && marc.Check_List_V(a))
isSuccess = false;
if (isSuccess)
@@ -577,18 +393,6 @@ namespace UniMarc
}
}
else if(marc2 != null)
{
for (int a = 0; a < marc2.List_Book.Rows.Count; a++)
{
bool isSuccess = true;
if (!marc2.Check_BackColor(a) && marc2.Check_List_V(a))
isSuccess = false;
if (isSuccess)
GridRow.Add(a);
}
}
int[] Result = GridRow.ToArray();
return Result;

View File

@@ -0,0 +1,437 @@
namespace UniMarc
{
partial class Marc_mkList2
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.rb_autoNum = new System.Windows.Forms.RadioButton();
this.rb_basicNum = new System.Windows.Forms.RadioButton();
this.cb_listType = new System.Windows.Forms.ComboBox();
this.panel2 = new System.Windows.Forms.Panel();
this.chk_countSplit = new System.Windows.Forms.CheckBox();
this.btn_mkList = new System.Windows.Forms.Button();
this.btn_Close = new System.Windows.Forms.Button();
this.panel3 = new System.Windows.Forms.Panel();
this.chk_CompSymbol = new System.Windows.Forms.CheckBox();
this.cb_authorTypeK = new System.Windows.Forms.ComboBox();
this.cb_divType = new System.Windows.Forms.ComboBox();
this.cb_divNum = new System.Windows.Forms.ComboBox();
this.cb_FirstBook = new System.Windows.Forms.ComboBox();
this.cb_FirstAuthor = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.panel4 = new System.Windows.Forms.Panel();
this.tb_listName = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.progressBar1 = new System.Windows.Forms.ProgressBar();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.rtb_etc = new System.Windows.Forms.RichTextBox();
this.tb_outnum = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.chkPijunja = new System.Windows.Forms.CheckBox();
this.cb_authorTypeE = new System.Windows.Forms.ComboBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.cmb_author_four = new System.Windows.Forms.ComboBox();
this.panel1.SuspendLayout();
this.panel2.SuspendLayout();
this.panel3.SuspendLayout();
this.panel4.SuspendLayout();
this.groupBox1.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel1.Controls.Add(this.rb_autoNum);
this.panel1.Controls.Add(this.rb_basicNum);
this.panel1.Controls.Add(this.cb_listType);
this.panel1.Location = new System.Drawing.Point(12, 6);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(234, 30);
this.panel1.TabIndex = 0;
//
// rb_autoNum
//
this.rb_autoNum.AutoSize = true;
this.rb_autoNum.Location = new System.Drawing.Point(88, 6);
this.rb_autoNum.Name = "rb_autoNum";
this.rb_autoNum.Size = new System.Drawing.Size(71, 16);
this.rb_autoNum.TabIndex = 0;
this.rb_autoNum.TabStop = true;
this.rb_autoNum.Text = "자동연번";
this.rb_autoNum.UseVisualStyleBackColor = true;
//
// rb_basicNum
//
this.rb_basicNum.AutoSize = true;
this.rb_basicNum.Location = new System.Drawing.Point(11, 6);
this.rb_basicNum.Name = "rb_basicNum";
this.rb_basicNum.Size = new System.Drawing.Size(71, 16);
this.rb_basicNum.TabIndex = 0;
this.rb_basicNum.TabStop = true;
this.rb_basicNum.Text = "기존연번";
this.rb_basicNum.UseVisualStyleBackColor = true;
//
// cb_listType
//
this.cb_listType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_listType.FormattingEnabled = true;
this.cb_listType.Location = new System.Drawing.Point(165, 4);
this.cb_listType.Name = "cb_listType";
this.cb_listType.Size = new System.Drawing.Size(61, 20);
this.cb_listType.TabIndex = 1;
//
// panel2
//
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel2.Controls.Add(this.chk_countSplit);
this.panel2.Location = new System.Drawing.Point(252, 6);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(76, 30);
this.panel2.TabIndex = 0;
//
// chk_countSplit
//
this.chk_countSplit.AutoSize = true;
this.chk_countSplit.Location = new System.Drawing.Point(5, 7);
this.chk_countSplit.Name = "chk_countSplit";
this.chk_countSplit.Size = new System.Drawing.Size(72, 16);
this.chk_countSplit.TabIndex = 0;
this.chk_countSplit.Text = "수량분리";
this.chk_countSplit.UseVisualStyleBackColor = true;
//
// btn_mkList
//
this.btn_mkList.Location = new System.Drawing.Point(425, 10);
this.btn_mkList.Name = "btn_mkList";
this.btn_mkList.Size = new System.Drawing.Size(75, 23);
this.btn_mkList.TabIndex = 1;
this.btn_mkList.Text = "목록생성";
this.btn_mkList.UseVisualStyleBackColor = true;
this.btn_mkList.Click += new System.EventHandler(this.btn_mkList_Click);
//
// btn_Close
//
this.btn_Close.Location = new System.Drawing.Point(506, 10);
this.btn_Close.Name = "btn_Close";
this.btn_Close.Size = new System.Drawing.Size(75, 23);
this.btn_Close.TabIndex = 1;
this.btn_Close.Text = "닫 기";
this.btn_Close.UseVisualStyleBackColor = true;
this.btn_Close.Click += new System.EventHandler(this.btn_Close_Click);
//
// panel3
//
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel3.Controls.Add(this.cmb_author_four);
this.panel3.Controls.Add(this.label6);
this.panel3.Controls.Add(this.label5);
this.panel3.Controls.Add(this.cb_authorTypeE);
this.panel3.Controls.Add(this.chkPijunja);
this.panel3.Controls.Add(this.chk_CompSymbol);
this.panel3.Controls.Add(this.cb_authorTypeK);
this.panel3.Controls.Add(this.cb_divType);
this.panel3.Controls.Add(this.cb_divNum);
this.panel3.Controls.Add(this.cb_FirstBook);
this.panel3.Controls.Add(this.cb_FirstAuthor);
this.panel3.Controls.Add(this.label1);
this.panel3.Location = new System.Drawing.Point(12, 42);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(569, 91);
this.panel3.TabIndex = 2;
//
// chk_CompSymbol
//
this.chk_CompSymbol.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.chk_CompSymbol.AutoSize = true;
this.chk_CompSymbol.Location = new System.Drawing.Point(11, 65);
this.chk_CompSymbol.Name = "chk_CompSymbol";
this.chk_CompSymbol.Size = new System.Drawing.Size(242, 16);
this.chk_CompSymbol.TabIndex = 2;
this.chk_CompSymbol.Text = "4인 이상 저자시 출판사로 저자기호 생성";
this.chk_CompSymbol.UseVisualStyleBackColor = true;
this.chk_CompSymbol.CheckedChanged += new System.EventHandler(this.chk_CompSymbol_CheckedChanged);
//
// cb_authorTypeK
//
this.cb_authorTypeK.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_authorTypeK.FormattingEnabled = true;
this.cb_authorTypeK.Location = new System.Drawing.Point(136, 4);
this.cb_authorTypeK.Name = "cb_authorTypeK";
this.cb_authorTypeK.Size = new System.Drawing.Size(171, 20);
this.cb_authorTypeK.TabIndex = 1;
//
// cb_divType
//
this.cb_divType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_divType.FormattingEnabled = true;
this.cb_divType.Location = new System.Drawing.Point(464, 4);
this.cb_divType.Name = "cb_divType";
this.cb_divType.Size = new System.Drawing.Size(88, 20);
this.cb_divType.TabIndex = 1;
this.cb_divType.SelectedIndexChanged += new System.EventHandler(this.cb_divType_SelectedIndexChanged);
//
// cb_divNum
//
this.cb_divNum.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_divNum.FormattingEnabled = true;
this.cb_divNum.Location = new System.Drawing.Point(464, 30);
this.cb_divNum.Name = "cb_divNum";
this.cb_divNum.Size = new System.Drawing.Size(88, 20);
this.cb_divNum.TabIndex = 1;
//
// cb_FirstBook
//
this.cb_FirstBook.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_FirstBook.FormattingEnabled = true;
this.cb_FirstBook.Location = new System.Drawing.Point(336, 4);
this.cb_FirstBook.Name = "cb_FirstBook";
this.cb_FirstBook.Size = new System.Drawing.Size(61, 20);
this.cb_FirstBook.TabIndex = 1;
//
// cb_FirstAuthor
//
this.cb_FirstAuthor.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_FirstAuthor.FormattingEnabled = true;
this.cb_FirstAuthor.Location = new System.Drawing.Point(68, 4);
this.cb_FirstAuthor.Name = "cb_FirstAuthor";
this.cb_FirstAuthor.Size = new System.Drawing.Size(61, 20);
this.cb_FirstAuthor.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(9, 8);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(53, 12);
this.label1.TabIndex = 1;
this.label1.Text = "저자기호";
//
// panel4
//
this.panel4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel4.Controls.Add(this.tb_listName);
this.panel4.Controls.Add(this.label3);
this.panel4.Location = new System.Drawing.Point(12, 139);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(569, 30);
this.panel4.TabIndex = 2;
//
// tb_listName
//
this.tb_listName.Location = new System.Drawing.Point(68, 4);
this.tb_listName.Name = "tb_listName";
this.tb_listName.Size = new System.Drawing.Size(496, 21);
this.tb_listName.TabIndex = 2;
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(9, 8);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(49, 12);
this.label3.TabIndex = 1;
this.label3.Text = "목 록 명";
//
// label2
//
this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("굴림", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
this.label2.Location = new System.Drawing.Point(134, 189);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(345, 13);
this.label2.TabIndex = 1;
this.label2.Text = "저장된 마크만 반출됩니다. 저자기호를 확인해주세요.";
//
// progressBar1
//
this.progressBar1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.progressBar1.Location = new System.Drawing.Point(10, 411);
this.progressBar1.Name = "progressBar1";
this.progressBar1.Size = new System.Drawing.Size(570, 23);
this.progressBar1.Step = 1;
this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
this.progressBar1.TabIndex = 3;
//
// groupBox1
//
this.groupBox1.Controls.Add(this.rtb_etc);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.groupBox1.Location = new System.Drawing.Point(10, 224);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(570, 187);
this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "비 고 란";
//
// rtb_etc
//
this.rtb_etc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.rtb_etc.Dock = System.Windows.Forms.DockStyle.Fill;
this.rtb_etc.Location = new System.Drawing.Point(3, 17);
this.rtb_etc.Name = "rtb_etc";
this.rtb_etc.Size = new System.Drawing.Size(564, 167);
this.rtb_etc.TabIndex = 0;
this.rtb_etc.Text = "";
//
// tb_outnum
//
this.tb_outnum.Location = new System.Drawing.Point(340, 11);
this.tb_outnum.Name = "tb_outnum";
this.tb_outnum.Size = new System.Drawing.Size(31, 21);
this.tb_outnum.TabIndex = 5;
this.tb_outnum.Text = "0";
this.tb_outnum.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(377, 15);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(17, 12);
this.label4.TabIndex = 3;
this.label4.Text = "차";
//
// chkPijunja
//
this.chkPijunja.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.chkPijunja.AutoSize = true;
this.chkPijunja.Enabled = false;
this.chkPijunja.Location = new System.Drawing.Point(468, 65);
this.chkPijunja.Name = "chkPijunja";
this.chkPijunja.Size = new System.Drawing.Size(84, 16);
this.chkPijunja.TabIndex = 3;
this.chkPijunja.Text = "피전자적용";
this.chkPijunja.UseVisualStyleBackColor = true;
//
// cb_authorTypeE
//
this.cb_authorTypeE.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_authorTypeE.FormattingEnabled = true;
this.cb_authorTypeE.Location = new System.Drawing.Point(136, 30);
this.cb_authorTypeE.Name = "cb_authorTypeE";
this.cb_authorTypeE.Size = new System.Drawing.Size(171, 20);
this.cb_authorTypeE.TabIndex = 4;
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(313, 8);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(17, 12);
this.label5.TabIndex = 6;
this.label5.Text = "한";
//
// label6
//
this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(313, 33);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(17, 12);
this.label6.TabIndex = 7;
this.label6.Text = "영";
//
// cmb_author_four
//
this.cmb_author_four.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmb_author_four.FormattingEnabled = true;
this.cmb_author_four.Location = new System.Drawing.Point(259, 63);
this.cmb_author_four.Name = "cmb_author_four";
this.cmb_author_four.Size = new System.Drawing.Size(138, 20);
this.cmb_author_four.TabIndex = 8;
//
// Marc_mkList
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(590, 444);
this.Controls.Add(this.label4);
this.Controls.Add(this.tb_outnum);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.progressBar1);
this.Controls.Add(this.panel4);
this.Controls.Add(this.label2);
this.Controls.Add(this.panel3);
this.Controls.Add(this.btn_Close);
this.Controls.Add(this.btn_mkList);
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.Name = "Marc_mkList";
this.Padding = new System.Windows.Forms.Padding(10);
this.Text = "마크목록생성";
this.Load += new System.EventHandler(this.Marc_mkList_Load);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.panel3.ResumeLayout(false);
this.panel3.PerformLayout();
this.panel4.ResumeLayout(false);
this.panel4.PerformLayout();
this.groupBox1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.ComboBox cb_listType;
private System.Windows.Forms.RadioButton rb_autoNum;
private System.Windows.Forms.RadioButton rb_basicNum;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.CheckBox chk_countSplit;
private System.Windows.Forms.Button btn_mkList;
private System.Windows.Forms.Button btn_Close;
private System.Windows.Forms.Panel panel3;
private System.Windows.Forms.ComboBox cb_authorTypeK;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox cb_FirstBook;
private System.Windows.Forms.ComboBox cb_FirstAuthor;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.TextBox tb_listName;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.ProgressBar progressBar1;
private System.Windows.Forms.ComboBox cb_divType;
private System.Windows.Forms.ComboBox cb_divNum;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RichTextBox rtb_etc;
private System.Windows.Forms.TextBox tb_outnum;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.CheckBox chk_CompSymbol;
private System.Windows.Forms.CheckBox chkPijunja;
private System.Windows.Forms.ComboBox cb_authorTypeE;
private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.ComboBox cmb_author_four;
}
}

View File

@@ -0,0 +1,406 @@
using AR;
using Org.BouncyCastle.Pkcs;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace UniMarc
{
public partial class Marc_mkList2 : Form
{
Helper_DB db = new Helper_DB();
Marc2 marc2;
public Marc_mkList2(Marc2 _mae)
{
InitializeComponent();
marc2 = _mae;
}
private void Marc_mkList_Load(object sender, EventArgs e)
{
db.DBcon();
#region panel1 set
rb_basicNum.Checked = true;
rb_autoNum.Enabled = false;
string[] type = { "정리" };
cb_listType.Items.AddRange(type);
cb_listType.SelectedIndex = 0;
#endregion
#region panel2 set // 분류기호
AuthorSymbol.Symbol symbol = new AuthorSymbol.Symbol();
// 저자기호
string[] First = symbol.authorBook;
cb_FirstAuthor.Items.AddRange(First);
cb_FirstAuthor.SelectedIndex = 0;
string[] authorType = symbol.authorType;
cb_authorTypeK.Items.AddRange(authorType);
cb_authorTypeK.SelectedIndex = 0;
cb_authorTypeE.Items.AddRange(authorType);
cb_authorTypeE.SelectedIndex = 0;
string[] Book = symbol.authorBook;
cb_FirstBook.Items.AddRange(Book);
cb_FirstBook.SelectedIndex = 0;
// 분류기호
string[] divType = { "KDC", "DDC" };
cb_divType.Items.AddRange(divType);
cb_divType.SelectedIndex = 0;
//4인이상저장
string[] author_four = { "출판사+서명", "서명+출판사" };
cmb_author_four.Items.AddRange(author_four);
cb_divType.SelectedIndex = 0;
#endregion
if (marc2 != null)
{
//customer idx 값이 있다면 그것을 사용한다.
if (int.TryParse(marc2.lbCustIDX.Text, out int custidx) == true && custidx > 0)
{
//string mCompidx = PUB.user.CompanyIdx;
var dt = Helper_DB.GetDT("Client", "c_sangho,c_author_first,c_author_typeK,c_author_typeE,c_author_firstbook,c_author_divtype,c_author_divnum,c_author_four,c_pijunja,c_author_four_use", $"campanyidx = {PUB.user.CompanyIdx} AND idx = {custidx}");
if (dt != null && dt.Rows.Count > 0)
{
var row = dt.Rows[0];
// 저자기호 첫글자 설정 (c_author_first)
if (!string.IsNullOrEmpty(row["c_author_first"].ToString()))
{
int idx = cb_FirstAuthor.FindStringExact(row["c_author_first"].ToString());
if (idx >= 0) cb_FirstAuthor.SelectedIndex = idx;
}
// 저자기호 타입 설정 (c_author_typeK 또는 c_author_typeE)
if (!string.IsNullOrEmpty(row["c_author_typeK"].ToString()))
{
int idx = cb_authorTypeK.FindStringExact(row["c_author_typeK"].ToString());
if (idx >= 0) cb_authorTypeK.SelectedIndex = idx;
}
// 저자기호 타입 설정 (c_author_typeE 또는 c_author_typeE)
if (!string.IsNullOrEmpty(row["c_author_typeE"].ToString()))
{
int idx = cb_authorTypeE.FindStringExact(row["c_author_typeE"].ToString());
if (idx >= 0) cb_authorTypeE.SelectedIndex = idx;
}
// 도서기호 첫글자 설정 (c_author_firstbook)
if (!string.IsNullOrEmpty(row["c_author_firstbook"].ToString()))
{
int idx = cb_FirstBook.FindStringExact(row["c_author_firstbook"].ToString());
if (idx >= 0) cb_FirstBook.SelectedIndex = idx;
}
// 분류기호 타입 설정 (c_author_divtype)
if (!string.IsNullOrEmpty(row["c_author_divtype"].ToString()))
{
int idx = cb_divType.FindStringExact(row["c_author_divtype"].ToString());
if (idx >= 0) cb_divType.SelectedIndex = idx;
}
// 분류기호 자릿수 설정 (c_author_divnum)
if (!string.IsNullOrEmpty(row["c_author_divnum"].ToString()))
{
int idx = cb_divNum.FindStringExact(row["c_author_divnum"].ToString());
if (idx >= 0) cb_divNum.SelectedIndex = idx;
}
// 4인이상 저장(c_author_four)
if (!string.IsNullOrEmpty(row["c_author_four"].ToString()))
{
int idx = cmb_author_four.FindStringExact(row["c_author_four"].ToString());
if (idx >= 0) cmb_author_four.SelectedIndex = idx;
}
// 피전자적용
if (!string.IsNullOrEmpty(row["c_pijunja"].ToString()))
{
string chkvalue = row["c_pijunja"].ToString().Trim();
chkPijunja.Checked = (chkvalue == "1" || chkvalue.ToUpper() == "Y" || chkvalue.ToUpper() == "TRUE");
}
else
{
chkPijunja.Checked = false;
}
// 4인이상저자(사용여부)
if (!string.IsNullOrEmpty(row["c_author_four_use"].ToString()))
{
string chkvalue = row["c_author_four_use"].ToString().Trim();
chk_CompSymbol.Checked = (chkvalue == "1" || chkvalue.ToUpper() == "Y" || chkvalue.ToUpper() == "TRUE");
}
else
{
chk_CompSymbol.Checked = false;
}
}
}
}
}
private void cb_divType_SelectedIndexChanged(object sender, EventArgs e)
{
cb_divNum.Items.Clear();
if (((ComboBox)sender).SelectedIndex == 0)
{
string[] divNum = { "4", "5", "6" };
cb_divNum.Items.AddRange(divNum);
}
else
{
string[] divNum = { "21", "22", "23" };
cb_divNum.Items.AddRange(divNum);
}
cb_divNum.SelectedIndex = 0;
}
private void btn_mkList_Click(object sender, EventArgs e)
{
if (tb_listName.Text == "")
{
UTIL.MsgE("목록명을 입력해주세요!");
return;
}
if (tb_outnum.Text == "")
{
UTIL.MsgE("차수가 비어있습니다.");
return;
}
if (marc2 != null)
ExportNew();
}
void ExportNew()
{
String_Text st = new String_Text();
var marccnt1 = marc2?.List_Book.RowCount ?? 0;
if (marccnt1 < 1)
{
UTIL.MsgE("마크데이터 목록이 존재하지 않습니다");
return;
}
string listName = tb_listName.Text;
string Time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
string outnum = tb_outnum.Text + "차";
string user = PUB.user.UserName;// Properties.Settings.Default.User;
var marc = this.marc2;
bool isAuthor = false;
bool isBook = false;
if (cb_FirstAuthor.SelectedIndex == 0)
isAuthor = true;
if (cb_FirstBook.SelectedIndex == 0)
isBook = true;
bool[] isType = { isAuthor, isBook };
// 시방서 목록 DB에 들어갈 것들.
string[] insert_list_col = {
"compidx", "work_list", "date", "state", "gu",
"first_Author", "symbol_Author","symbol_AuthorE", "book_Author", "divType", "divNum",
"etc", "user"
};
string[] insert_list_data = {
PUB.user.CompanyIdx, listName, Time, "진행", cb_listType.Text,
cb_FirstAuthor.Text, cb_authorTypeK.Text, cb_authorTypeE.Text, cb_FirstBook.Text, cb_divType.Text, cb_divNum.Text,
rtb_etc.Text, user
};
string cmdByList = db.DB_INSERT("Specs_List", insert_list_col, insert_list_data);
// 시방서 마크 DB에 들어갈 것들.
string[] insert_marc_col = {
"compidx", "work_list", "date", "ISBN", "book_name",
"s_book_name1", "s_book_num1", "author", "book_comp", "pubdate",
"price", "tag008", "class_symbol", "author_symbol", "marc",
"imageURL", "count", "num", "out_num", "midx",
"editDate", "user"
};
string[] insert_marc_data = {
PUB.user.CompanyIdx, listName, Time, "", "",
"", "", "", "", "",
"", "", "", "", "",
"", "", "", "", "",
Time, user
}; // 마크에서 추출 ( 3 ~ 12 )
var row = checkGridRow();
int num = 0;
progressBar1.Maximum = row.Count + 1;
string cmdByMarc = string.Format("INSERT INTO {0} {1} value", "Specs_Marc", db.DB_INSERT_SUB("", insert_marc_col));
bool CountSplit = chk_countSplit.Checked;
int listCount = 1;
int addCount = 1;
// 필터링하여 DB에 집어넣는 작업
for(int a = 0; a < row.Count; a++)
{
var dr = row[a];
progressBar1.PerformStep();
if (dr.DbMarc.isEmpty()) continue;//
num += 1;
int.TryParse(Convert.ToString(dr.Count), out listCount);
// ISBN, book_name, s_book_name1, s_book_num1, author, book_comp, pubdate, price, tag008, class_symbol
string[] Search = { "020a", "245a", "440a", "440v", "245d", "260b", "260c", "950b", "008", "056a" };
insert_marc_data[14] = dr.DbMarc;// Convert.ToString(marc.List_Book.Rows[row[a]].Cells["db_marc"].Value);
insert_marc_data[15] = dr.Url;// Convert.ToString(marc.List_Book.Rows[row[a]].Cells["url"].Value);
insert_marc_data[16] = addCount.ToString();
if (rb_basicNum.Checked)
insert_marc_data[17] = dr.Num;// Convert.ToString(marc.List_Book.Rows[row[a]].Cells["num"].Value);
else
insert_marc_data[17] = num.ToString();
insert_marc_data[18] = outnum;
insert_marc_data[19] = dr.MarcIdx;// Convert.ToString(marc.List_Book.Rows[row[a]].Cells["marc_idx"].Value);
insert_marc_data[20] = dr.SaveDate;// Convert.ToString(marc.List_Book.Rows[row[a]].Cells["SaveDate"].Value);
insert_marc_data[21] = dr.User;// Convert.ToString(marc.List_Book.Rows[row[a]].Cells["user"].Value);
string[] Marc = st.Take_Tag(insert_marc_data[14], Search);
string[] Author = { "", Marc[1] }; // 저자, 도서명
// 100, 110, 111태그중 한개라도 있으면 저자로 인식.
string[] Author_Search = { "100a", "110a", "111a", "245d" };
string[] Author_res = st.Take_Tag(insert_marc_data[14], Author_Search);
if (Author_res[0].Length > 1) Author[0] = Author_res[0];
if (Author_res[1].Length > 1) Author[0] = Author_res[1];
if (Author_res[2].Length > 1) Author[0] = Author_res[2];
if (chk_CompSymbol.Checked)
if (Author_res[3].IndexOf("[외]") > -1)
Author[0] = Marc[5];
string tmp_ViewMarc = st.ConvertMarcType(insert_marc_data[14], out string errmessage);
// 마크에서 추출한 데이터 DB에 적용하기 위한 반복문
for (int b = 0; b < Marc.Length; b++)
{
insert_marc_data[b + 3] = Marc[b];
// 분류기호 설정값적용대로 가져오기.
if (b == 9)
{
string class_symbol = st.TakeTag_ConditionContent(tmp_ViewMarc, "056a", "056" + cb_divNum.Text);
if (class_symbol != "")
insert_marc_data[b + 3] = class_symbol;
}
}
// 22.10.24 740태그 삭제
tmp_ViewMarc = st.RemoveTagNumber(tmp_ViewMarc, "740");
// 마크 분류기호 설정값대로 적용
tmp_ViewMarc = st.RemoveTagNumber(tmp_ViewMarc, "056");
tmp_ViewMarc = st.AddTagInMarc(string.Format("056\t \t▼a{0}▼2{1}▲", insert_marc_data[12], cb_divNum.Text), tmp_ViewMarc);
insert_marc_data[14] = st.made_Ori_marc(tmp_ViewMarc);
if (Author[0].Length < 1)
{
MessageBox.Show( $"{a}번 줄,인덱스({dr.ListIdx})의 저자를 확인해주세요(ISBN:{dr.ISBN13}). \n (100a, 110a, 111a 중 1개 필수)");
return;
}
Author[0] = Regex.Replace(Author[0], @"[^a-zA-Z0-9가-힣_]", "", RegexOptions.Singleline);
Author[1] = st.RemoveWordInBracket(Author[1]);
Author[1] = Regex.Replace(Author[1], @"[^a-zA-Z0-9가-힣_]", "", RegexOptions.Singleline);
AuthorSymbol.Symbol sb = new AuthorSymbol.Symbol();
string authorTypeK = cb_authorTypeK.SelectedItem.ToString();
string authorTypeE = cb_authorTypeE.SelectedItem.ToString();
string res_Author = "";
if (chk_CompSymbol.Checked == false || cmb_author_four.Text == "출판사+서명")
res_Author = sb.SymbolAuthor(Author[0], Author[1], authorTypeK, authorTypeE, isType);
else //서명+출판사는 뒤집어서 입력한다 251110
res_Author = sb.SymbolAuthor(Author[1], Author[0], authorTypeK, authorTypeE, isType);
insert_marc_data[13] = res_Author;
cmdByMarc += db.DB_INSERT_SUB("value", insert_marc_data) + ",";
if (CountSplit && listCount > addCount)
{
a--;
addCount++;
continue;
}
else
{
addCount = 1;
}
}
cmdByMarc = cmdByMarc.TrimEnd(',');
cmdByMarc += ";";
Helper_DB.ExcuteNonQuery(cmdByList);
Helper_DB.ExcuteNonQuery(cmdByMarc);
progressBar1.PerformStep();
if (progressBar1.Value == progressBar1.Maximum)
{
label2.Text = $"완료되었습니다!({row.Count})";
}
}
#region mkList_Sub
List<MarcBookItem> checkGridRow()
{
List<MarcBookItem> GridRow = new List<MarcBookItem>();
if (marc2 != null)
{
foreach (MarcBookItem item in marc2.dataList) // for (int a = 0; a < marc2.List_Book.Rows.Count; a++)
{
bool isSuccess = true;
if (item.ForeColor == Color.Red && item.ColCheck=="V")// marc2.Check_List_V(a)) //빨간색이고 체크된거는 제외?
isSuccess = false;
if (isSuccess)
GridRow.Add(item);
}
}
return GridRow;
}
#endregion
private void btn_Close_Click(object sender, EventArgs e)
{
this.Close();
}
private void chk_CompSymbol_CheckedChanged(object sender, EventArgs e)
{
cmb_author_four.Enabled = chk_CompSymbol.Checked;
}
}
}

View File

@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>