From 405c1d9c46c8cb88c7584d8f567bbde84408046f Mon Sep 17 00:00:00 2001 From: chiDT Date: Tue, 19 Aug 2025 22:51:02 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B5=AC=EB=91=90=EC=A0=90=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C=EC=84=A0:=20?= =?UTF-8?q?=E2=96=BCd/=E2=96=BCe=20=ED=95=84=EB=93=9C=20=EC=84=B8=EB=AF=B8?= =?UTF-8?q?=EC=BD=9C=EB=A1=A0=20=EC=A0=81=EC=9A=A9=20=EA=B7=9C=EC=B9=99=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- unimarc/.vscode/settings.json | 4 ++++ unimarc/NuGet.Config | 19 +++++++++++++++ unimarc/unimarc/Properties/AssemblyInfo.cs | 4 ++-- unimarc/unimarc/UniMarc.sln | 24 +++++++++++++++++++ unimarc/unimarc/개발자용/fDevDB.cs | 4 ++++ unimarc/unimarc/마크/Marc_Macro_Sub.cs | 28 +++++++++++++++++++--- 6 files changed, 78 insertions(+), 5 deletions(-) create mode 100644 unimarc/.vscode/settings.json create mode 100644 unimarc/NuGet.Config create mode 100644 unimarc/unimarc/UniMarc.sln diff --git a/unimarc/.vscode/settings.json b/unimarc/.vscode/settings.json new file mode 100644 index 0000000..4189e5f --- /dev/null +++ b/unimarc/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "dotnet.preferCSharpExtension": true, + "dotnet.defaultSolution": "unimarc.sln" +} \ No newline at end of file diff --git a/unimarc/NuGet.Config b/unimarc/NuGet.Config new file mode 100644 index 0000000..ca33861 --- /dev/null +++ b/unimarc/NuGet.Config @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/unimarc/unimarc/Properties/AssemblyInfo.cs b/unimarc/unimarc/Properties/AssemblyInfo.cs index 5ab1c6c..369fb3d 100644 --- a/unimarc/unimarc/Properties/AssemblyInfo.cs +++ b/unimarc/unimarc/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 // 기본값으로 할 수 있습니다. // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2025.08.14.2300")] -[assembly: AssemblyFileVersion("2025.08.14.2300")] +[assembly: AssemblyVersion("2025.08.19.2250")] +[assembly: AssemblyFileVersion("2025.08.19.2250")] diff --git a/unimarc/unimarc/UniMarc.sln b/unimarc/unimarc/UniMarc.sln new file mode 100644 index 0000000..489fafa --- /dev/null +++ b/unimarc/unimarc/UniMarc.sln @@ -0,0 +1,24 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniMarc", "UniMarc.csproj", "{4FCAFD58-3A8E-4E08-85E2-05329866193A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4FCAFD58-3A8E-4E08-85E2-05329866193A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4FCAFD58-3A8E-4E08-85E2-05329866193A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4FCAFD58-3A8E-4E08-85E2-05329866193A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4FCAFD58-3A8E-4E08-85E2-05329866193A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FA0A3E60-8B04-4285-947B-DE3CCCCDEB3B} + EndGlobalSection +EndGlobal diff --git a/unimarc/unimarc/개발자용/fDevDB.cs b/unimarc/unimarc/개발자용/fDevDB.cs index 40e8f24..1dbaff9 100644 --- a/unimarc/unimarc/개발자용/fDevDB.cs +++ b/unimarc/unimarc/개발자용/fDevDB.cs @@ -33,6 +33,10 @@ namespace UniMarc.개발자용 var sql = $"select * from {cmbTables.Text}"; var cn = db.CreateConnection(); var da = new MySql.Data.MySqlClient.MySqlDataAdapter(sql, cn); + var cb = new MySql.Data.MySqlClient.MySqlCommandBuilder(da); + da.UpdateCommand = cb.GetUpdateCommand(); + da.InsertCommand = cb.GetInsertCommand(); + da.DeleteCommand = cb.GetDeleteCommand(); var cnt = da.Update(dt); UTIL.MsgI($"P{cnt}"); cn.Dispose(); diff --git a/unimarc/unimarc/마크/Marc_Macro_Sub.cs b/unimarc/unimarc/마크/Marc_Macro_Sub.cs index ffae550..bea317c 100644 --- a/unimarc/unimarc/마크/Marc_Macro_Sub.cs +++ b/unimarc/unimarc/마크/Marc_Macro_Sub.cs @@ -591,12 +591,34 @@ namespace UniMarc.마크 //아래 1보다 작다로 인해 a가 미처리되는 현상이 있어 위에다가 붙인다 2508014 if (idx == "113" && (TMP[a].StartsWith("d") || TMP[a].StartsWith("e"))) { + // 새로운 구두점 적용 로직 (2024년 수정) var subfieldata = TMP[a].Trim(); var endsignal = subfieldata.EndsWith("▲"); if (endsignal) subfieldata = subfieldata.Substring(0, subfieldata.Length - 1); - if (subfieldata.EndsWith(",") == false && subfieldata.EndsWith(";") == false) - subfieldata += ";"; - subfieldata = subfieldata.Replace(",;", ";"); //두개붙은건 세미쿨론으로 + + // 현재 필드가 ,로 끝나지 않는 경우에만 ; 적용 검토 + if (!subfieldata.EndsWith(",") && !subfieldata.EndsWith(";")) + { + // 다음 필드가 d나 e인지 확인 + bool hasNextDE = false; + for (int nextIdx = a + 1; nextIdx < TMP.Count; nextIdx++) + { + if (!TMP[nextIdx].isEmpty() && (TMP[nextIdx].StartsWith("d") || TMP[nextIdx].StartsWith("e"))) + { + hasNextDE = true; + break; + } + } + + // 다음에 d나 e 필드가 있으면 ; 적용 + if (hasNextDE) + { + subfieldata += ";"; + } + } + + // ,; 문자가 있다면 ;로 변경 + subfieldata = subfieldata.Replace(",;", ";"); if (endsignal) subfieldata += "▲"; TMP[a] = subfieldata; }