feat: DLS 복본조사 개선 및 개발자용 DB 편집 기능 추가

- 전남교육청 도서관 검색 기능 추가 (JunnamEduSearcher)
- 개발자용 데이터베이스 편집 도구 추가 (디버그 모드에서만 표시)
- UI 개선: 브라우저 표시 옵션, 검색 결과 표시 개선
- Helper_DB에 CreateConnection 메서드 추가
- URL 처리 개선 (따옴표 자동 추가)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Arin(asus)
2025-08-13 15:22:50 +09:00
parent e7c7bc2b36
commit 0c190e112f
19 changed files with 1325 additions and 241 deletions

View File

@@ -0,0 +1,9 @@
{
"permissions": {
"allow": [
"Bash(git add:*)"
],
"deny": [],
"ask": []
}
}

1
.gitignore vendored
View File

@@ -36,3 +36,4 @@ OutPutMarc/
GolfTicketing/
*.msi
/unimarc/PatchList/~$유니막 수정내역2.pptx

View File

@@ -68,6 +68,34 @@ namespace WindowsFormsApp1
}
}
}
public MySql.Data.MySqlClient.MySqlConnection CreateConnection()
{
PasswordConnectionInfo connectionInfo = new PasswordConnectionInfo(ServerData[0], port, ServerData[1], ServerData[2]);
connectionInfo.Timeout = TimeSpan.FromSeconds(30);
using (var client = new SshClient(connectionInfo))
{
if (conn != null)
{
conn.Close();
conn.Dispose();
}
client.Connect();
if (client.IsConnected)
{
string strConnection = string.Format(
"Server={0};" +
"Port={1};" +
"Database=unimarc;" +
"uid={2};" +
"pwd={3};", ServerData[0], DBData[0], DBData[1], DBData[2]);
return new MySqlConnection(strConnection);
}
}
return null;
}
/// <summary>
/// 국중DB를 사용하고 싶을 때 미리 저장된 DB의 기본 접속정보를 이용하여 DB에 접근한다.
/// </summary>

View File

@@ -71,6 +71,7 @@
this. = new System.Windows.Forms.ToolStripMenuItem();
this. = new System.Windows.Forms.ToolStripMenuItem();
this.1 = new System.Windows.Forms.ToolStripMenuItem();
this.2 = new System.Windows.Forms.ToolStripMenuItem();
this.iSBN조회 = new System.Windows.Forms.ToolStripMenuItem();
this.dVDCDLPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this. = new System.Windows.Forms.ToolStripMenuItem();
@@ -133,7 +134,7 @@
this.IPText = new System.Windows.Forms.ToolStripLabel();
this.lblStatus = new System.Windows.Forms.ToolStripLabel();
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
this.2 = new System.Windows.Forms.ToolStripMenuItem();
this.btDevDb = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.panel1.SuspendLayout();
this.toolStrip1.SuspendLayout();
@@ -172,28 +173,28 @@
// 사업체정보
//
this..Name = "사업체정보";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(175, 22);
this..Text = "사업체 정보";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 사용자관리
//
this..Name = "사용자관리";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(175, 22);
this..Text = "사용자 관리";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 납품거래처관리
//
this..Name = "납품거래처관리";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(175, 22);
this..Text = "납품 / 거래처 관리";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 주문처관리
//
this..Name = "주문처관리";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(175, 22);
this..Text = "주문처 관리";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -201,14 +202,14 @@
//
this..Enabled = false;
this..Name = "비밀번호변경";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(175, 22);
this..Text = "비밀번호 변경";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 도서정보관리
//
this..Name = "도서정보관리";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(175, 22);
this..Text = "도서정보 관리";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -216,7 +217,7 @@
//
this..Enabled = false;
this..Name = "사용대장";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(175, 22);
this..Text = "사용대장";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -237,49 +238,49 @@
// 목록등록
//
this..Name = "목록등록";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(166, 22);
this..Text = "물품등록";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 목록조회
//
this..Name = "목록조회";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(166, 22);
this..Text = "목록조회";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 목록집계
//
this..Name = "목록집계";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(166, 22);
this..Text = "목록집계";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 주문입력
//
this..Name = "주문입력";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(166, 22);
this..Text = "주문입력";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 입고작업
//
this..Name = "입고작업";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(166, 22);
this..Text = "입고작업";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 재고입력및조회
//
this..Name = "재고입력및조회";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(166, 22);
this..Text = "재고입력 및 조회";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 반품처리
//
this..Name = "반품처리";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(166, 22);
this..Text = "반품처리";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -298,14 +299,14 @@
// 송금내역조회
//
this..Name = "송금내역조회";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "송금 내역 조회";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 송금등록
//
this..Name = "송금등록";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "송금 등록";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -316,7 +317,7 @@
this.,
this.ToolStripMenuItem});
this..Name = "매입";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "매입";
//
// 매입집계
@@ -349,7 +350,7 @@
this.,
this.});
this..Name = "매출";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "매출";
//
// 매출입력
@@ -383,7 +384,7 @@
// 파트타임관리
//
this..Name = "파트타임관리";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "파트타임 관리";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -409,13 +410,13 @@
this.,
this.});
this..Name = "마크설정";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(156, 22);
this..Text = "설정";
//
// 단축키설정
//
this..Name = "단축키설정";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(138, 22);
this..Text = "단축키";
this..Visible = false;
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
@@ -423,14 +424,14 @@
// 매크로문구
//
this..Name = "매크로문구";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(138, 22);
this..Text = "매크로 문구";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 불용어
//
this..Name = "불용어";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(138, 22);
this..Text = "불용어";
this..Visible = false;
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
@@ -438,7 +439,7 @@
// 작업지시서
//
this..Name = "작업지시서";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(138, 22);
this..Text = "작업지시서";
this..Visible = false;
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
@@ -454,48 +455,55 @@
this.2,
this.iSBN조회});
this..Name = "마크작업";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(156, 22);
this..Text = "마크 작업";
//
// 마크작성
//
this..Name = "마크작성";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "마크 작성";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 마크목록
//
this..Name = "마크목록";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "마크 목록";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 소장자료검색
//
this..Name = "소장자료검색";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "소장자료검색";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 마크정리
//
this..Name = "마크정리";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(154, 22);
this..Text = "마크 정리";
this..Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 복본조사1
//
this.1.Name = "복본조사1";
this.1.Size = new System.Drawing.Size(180, 22);
this.1.Size = new System.Drawing.Size(154, 22);
this.1.Text = "복본조사";
this.1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
//
// 복본조사2
//
this.2.Name = "복본조사2";
this.2.Size = new System.Drawing.Size(154, 22);
this.2.Text = "복본조사(New)";
this.2.Click += new System.EventHandler(this.2_Click);
//
// iSBN조회
//
this.iSBN조회.Name = "iSBN조회";
this.iSBN조회.Size = new System.Drawing.Size(180, 22);
this.iSBN조회.Size = new System.Drawing.Size(154, 22);
this.iSBN조회.Text = "ISBN 조회";
this.iSBN조회.Click += new System.EventHandler(this.iSBN조회ToolStripMenuItem_Click);
//
@@ -505,7 +513,7 @@
this.,
this.});
this.dVDCDLPToolStripMenuItem.Name = "dVDCDLPToolStripMenuItem";
this.dVDCDLPToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.dVDCDLPToolStripMenuItem.Size = new System.Drawing.Size(156, 22);
this.dVDCDLPToolStripMenuItem.Text = "DVD / CD / LP";
//
// 목록
@@ -529,7 +537,7 @@
this.,
this.});
this..Name = "반입및반출";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(156, 22);
this..Text = "반입 및 반출";
//
// 마크반입
@@ -554,7 +562,7 @@
this.,
this.});
this..Name = "부가기능";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(156, 22);
this..Text = "부가기능";
//
// 마크수집
@@ -595,7 +603,7 @@
this.DLS조회,
this.dLS복본조사});
this.DLS.Name = "DLS";
this.DLS.Size = new System.Drawing.Size(180, 22);
this.DLS.Size = new System.Drawing.Size(156, 22);
this.DLS.Text = "DLS";
//
// DLS조회
@@ -619,7 +627,7 @@
this.,
this.});
this..Name = "마크기타";
this..Size = new System.Drawing.Size(180, 22);
this..Size = new System.Drawing.Size(156, 22);
this..Text = "기타";
//
// 서류작성
@@ -754,7 +762,8 @@
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.ToolStripMenuItem,
this.ToolStripMenuItem});
this.ToolStripMenuItem,
this.btDevDb});
this.ToolStripMenuItem.Name = "마스터ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(55, 20);
this.ToolStripMenuItem.Text = "마스터";
@@ -764,7 +773,7 @@
this.ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem});
this.ToolStripMenuItem.Name = "이용자관리ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(178, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.ToolStripMenuItem.Text = "이용자 관리";
//
// 신규사업자등록ToolStripMenuItem
@@ -777,35 +786,35 @@
// 공지발송ToolStripMenuItem1
//
this.ToolStripMenuItem1.Name = "공지발송ToolStripMenuItem1";
this.ToolStripMenuItem1.Size = new System.Drawing.Size(178, 22);
this.ToolStripMenuItem1.Size = new System.Drawing.Size(202, 22);
this.ToolStripMenuItem1.Text = "공지 발송";
this.ToolStripMenuItem1.Click += new System.EventHandler(this.ToolStripMenuItem1_Click);
//
// 매출내역ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "매출내역ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(178, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.ToolStripMenuItem.Text = "매출내역";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 이용자거래처조회ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "이용자거래처조회ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(178, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.ToolStripMenuItem.Text = "이용자 거래처 조회";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 마크설정ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "마크설정ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(178, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.ToolStripMenuItem.Text = "마크설정";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 일괄처리관리ToolStripMenuItem
//
this.ToolStripMenuItem.Name = "일괄처리관리ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(178, 22);
this.ToolStripMenuItem.Size = new System.Drawing.Size(202, 22);
this.ToolStripMenuItem.Text = "일괄처리 관리";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
@@ -1067,12 +1076,14 @@
this.lblStatus.Size = new System.Drawing.Size(27, 22);
this.lblStatus.Text = "WD";
//
// 복본조사2
// btDevDb
//
this.2.Name = "복본조사2";
this.2.Size = new System.Drawing.Size(180, 22);
this.2.Text = "복본조사(New)";
this.2.Click += new System.EventHandler(this.2_Click);
this.btDevDb.ForeColor = System.Drawing.Color.Blue;
this.btDevDb.Name = "btDevDb";
this.btDevDb.Size = new System.Drawing.Size(202, 22);
this.btDevDb.Text = "데이터베이스편집(개발)";
this.btDevDb.Visible = false;
this.btDevDb.Click += new System.EventHandler(this.btDevDb_Click);
//
// Main
//
@@ -1207,5 +1218,6 @@
public System.Windows.Forms.ToolStripLabel IPText;
private System.Windows.Forms.ToolStripLabel lblStatus;
private System.Windows.Forms.ToolStripMenuItem 2;
private System.Windows.Forms.ToolStripMenuItem btDevDb;
}
}

View File

@@ -26,6 +26,7 @@ using UniMarc.회계;
using UniMarc.;
using UniMarc.Properties;
using UniMarc;
using UniMarc.;
namespace WindowsFormsApp1
@@ -42,6 +43,7 @@ namespace WindowsFormsApp1
{
InitializeComponent();
PUB.Init();
this.btDevDb.Visible = System.Diagnostics.Debugger.IsAttached;
}
public string User_Name { get; internal set; }
@@ -1544,5 +1546,11 @@ namespace WindowsFormsApp1
Mac_check_Copy.FormClosed += (o, ea) => Mac_check_Copy = null;
Mac_check_Copy.Show();
}
private void btDevDb_Click(object sender, EventArgs e)
{
var f = new fDevDB();
f.Show();
}
}
}

View File

@@ -0,0 +1,414 @@
using System;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;
using System.Text.RegularExpressions;
using WebDriverManager;
using WebDriverManager.DriverConfigs.Impl;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using UniMarc.;
using OpenQA.Selenium.Chromium;
using UniMarc.SearchModel;
using System.Runtime.CompilerServices;
namespace BokBonCheck
{
public class JunnamEduSearcher_Mokpo : JunnamEduSearcher
{
public JunnamEduSearcher_Mokpo(int no) : base(no)
{
SiteName = "전남교육청(목포)"; // 문화관 검색기
}
protected override bool SelectLibrary(WebDriverWait wait)
{
IWebElement searchBox = null;
try
{
var selector = "#clickAll";
searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector)));
if (searchBox == null) return false;
if (searchBox.Selected == true)
{
SafeClick(searchBox);
}
selector = "#libMA";
searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector)));
if (searchBox == null) return false;
if (searchBox.Selected == false)
{
SafeClick(searchBox);
}
return true;
}
catch
{
return false;
}
}
}
public class JunnamEduSearcher : ILibrarySearcher
{
public string SiteName { get; protected set; } = "전남교육청(전체)";
public string SiteUrl => "https://lib.namgu.gwangju.kr/main/bookSearch";
public int No { get; set; }
private ChromiumDriver _driver;
public JunnamEduSearcher(int no)
{
this.No = no;
}
public void StopDriver()
{
if (_driver != null)
{
_driver.Quit();
_driver.Dispose();
_driver = null;
}
}
public async Task StartDriver(bool showdriver = false)
{
if (_driver == null)
{
try
{
if (SeleniumHelper.IsReady == false) await SeleniumHelper.Download();
_driver = await SeleniumHelper.CreateDriver();
Console.WriteLine("NamguLibrarySearcher Driver 초기화 완료");
}
catch (Exception ex)
{
Console.WriteLine($"NamguLibrarySearcher Driver 초기화 실패: {ex.Message}");
throw new InvalidOperationException($"NamguLibrarySearcher Driver 초기화에 실패했습니다: {ex.Message}", ex);
}
}
}
virtual protected bool SelectLibrary(WebDriverWait wait)
{
IWebElement searchBox = null;
try
{
var selector = "#clickAll";
searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector)));
if (searchBox == null) return false;
if (searchBox.Selected == false)
{
SafeClick(searchBox);
}
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
}
protected void SafeClick(IWebElement searchBox)
{
// 안정적인 클릭을 위한 여러 방법 시도
try
{
// 1. JavaScript로 클릭 시도
var driver = ((IWrapsDriver)searchBox).WrappedDriver;
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].click();", searchBox);
}
catch
{
try
{
// 2. 요소가 보이도록 스크롤 후 클릭
var driver = ((IWrapsDriver)searchBox).WrappedDriver;
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", searchBox);
Thread.Sleep(500);
searchBox.Click();
}
catch
{
try
{
// 3. Actions 클래스 사용
var driver = ((IWrapsDriver)searchBox).WrappedDriver;
var actions = new OpenQA.Selenium.Interactions.Actions(driver);
actions.MoveToElement(searchBox).Click().Perform();
}
catch
{
// 4. 마지막 방법: JavaScript로 직접 체크 해제
var driver = ((IWrapsDriver)searchBox).WrappedDriver;
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].checked = false;", searchBox);
}
}
}
}
public async Task<BookSearchResult> SearchAsync(string searchTerm)
{
var result = new BookSearchResult
{
SiteName = SiteName,
SearchTerm = searchTerm,
SearchTime = DateTime.Now
};
try
{
// 드라이버가 없으면 자동으로 시작
if (_driver == null)
{
await StartDriver();
}
_driver.Navigate().GoToUrl(SiteUrl);
// 페이지 로딩 대기
var wait = new WebDriverWait(_driver, TimeSpan.FromSeconds(15));
// 모든 감지 방법이 끝나면 크롬창 최소화
// whale 브라우저가 최소화되어 우선해제
//IntPtr chromeWindow = FindWindow("Chrome_WidgetWin_1", null);
//if (chromeWindow != IntPtr.Zero)
//{
// ShowWindow(chromeWindow, SW_MINIMIZE);
//}
//대상도서관 선택
if (SelectLibrary(wait) == false)
{
result.ErrorMessage = "도서관선택실패";
result.BookCount = -1;
result.IsSuccess = false;
return result;
}
// 검색창 찾기 (남구통합도서관 사이트의 특정 선택자 사용)
IWebElement searchBox = null;
try
{
// 여러 가능한 선택자 시도
var selectors = new[]
{
"input[name='query']",
"input[id='query']",
"input[type='text']",
};
foreach (var selector in selectors)
{
try
{
searchBox = wait.Until(d => d.FindElement(By.CssSelector(selector)));
break;
}
catch
{
continue;
}
}
if (searchBox == null)
{
throw new Exception("검색창을 찾을 수 없습니다.");
}
}
catch (Exception ex)
{
throw new Exception($"검색창 찾기 실패: {ex.Message}");
}
// 검색어 입력
searchBox.Clear();
searchBox.SendKeys(searchTerm);
// 검색 버튼 클릭
IWebElement searchButton = null;
try
{
var buttonSelectors = new[]
{
"button[type='submit']",
"input[type='submit']",
".search-btn",
".btn-search",
"button:contains('검색')",
"input[value*='검색']",
"button[class*='search']",
"input[class*='search']"
};
foreach (var selector in buttonSelectors)
{
try
{
searchButton = _driver.FindElement(By.CssSelector(selector));
break;
}
catch
{
continue;
}
}
if (searchButton == null)
{
// Enter 키로 검색 시도
searchBox.SendKeys(Keys.Enter);
}
else
{
searchButton.Click();
}
}
catch (Exception ex)
{
// Enter 키로 검색 시도
searchBox.SendKeys(Keys.Enter);
}
// 페이지 변경을 감지하는 메서드
await WaitForPageChange(new WebDriverWait(_driver, TimeSpan.FromSeconds(15)));
// 검색 결과 수 추출
var resultCount = ExtractBookCount(_driver, searchTerm, out string ermsg);
if (resultCount == -1)
{
result.BookCount = 0;
result.IsSuccess = false;
result.ErrorMessage = ermsg;
}
else
{
result.BookCount = resultCount;
result.IsSuccess = true;
result.ErrorMessage = ermsg;
}
}
catch (Exception ex)
{
result.IsSuccess = false;
result.ErrorMessage = ex.Message;
result.BookCount = 0;
}
return result;
}
private int ExtractBookCount(IWebDriver driver, string searchTerm, out string errmessage)
{
errmessage = string.Empty;
try
{
// div.search-result 내부의 span에서 '전체 N' 텍스트 추출
var resultDiv = driver.FindElement(By.CssSelector("div.search-result"));
var bodytext = resultDiv.Text;
if (bodytext.Contains("검색결과가 없습니다"))
{
errmessage = "검색결과없음";
return 0;
}
var searchkey = resultDiv.FindElement(By.XPath("//*[@id=\"sub\"]/section[3]/div/div/div/div/div[2]/div[1]/p/b"));
var searchtitle = searchkey.Text;
if (searchTerm.Contains(searchtitle) == false)
{
errmessage = $"검색어불일치({searchtitle}/{searchTerm})";
return -1;
}
var span = resultDiv.FindElement(By.XPath(".//span[contains(text(),'전체')]"));
string text = span.Text; // 예: "전체 5 "
var match = System.Text.RegularExpressions.Regex.Match(text, @"전체\s*(\d+)");
if (match.Success)
{
if (int.TryParse(match.Groups[1].Value, out int vqty) == false)
{
errmessage = $"수량값오류({match.Groups[1].Value})";
return -1;
}
else
{
searchTerm = string.Empty;
return vqty;
}
}
else
{
errmessage = "수량항목없음";
return -1;
}
}
catch (Exception ex)
{
errmessage = ex.Message;
return -1;
}
}
// 페이지 변경을 감지하는 메서드
public async Task WaitForPageChange(WebDriverWait wait)
{
try
{
await Task.Delay(500);
// 방법 4: 페이지 로딩 상태 확인
wait.Until(d =>
{
var readyState = ((IJavaScriptExecutor)d).ExecuteScript("return document.readyState");
return readyState.Equals("complete");
});
// 방법 5: 특정 텍스트가 페이지에 나타날 때까지 대기
wait.Until(d =>
{
try
{
var byclassname = By.ClassName("search-result");
var elm = d.FindElement(byclassname);
if (elm == null)
{
return false;
}
var pageText = elm.Text;
if (pageText.Contains("검색결과가 없습니다")) return true;
return pageText.Contains("에 대하여") && pageText.Contains("검색되었습니다");
}
catch
{
return false;
}
});
}
catch (Exception ex)
{
// 모든 감지 방법이 실패하면 최소한의 대기 시간 적용
await Task.Delay(2000);
throw new Exception($"페이지 변경 감지 실패: {ex.Message}");
}
}
}
}

View File

@@ -232,8 +232,15 @@
</Compile>
<Compile Include="SearchModel\ILibrarySearcher.cs" />
<Compile Include="SearchModel\KwangjuCityLibrarySearcher.cs" />
<Compile Include="SearchModel\JunnamEduSearcher.cs" />
<Compile Include="SearchModel\NamguLibrarySearcher.cs" />
<Compile Include="SearchModel\SeleniumHelper.cs" />
<Compile Include="개발자용\fDevDB.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="개발자용\fDevDB.Designer.cs">
<DependentUpon>fDevDB.cs</DependentUpon>
</Compile>
<Compile Include="마스터\From_User_manage_List.cs">
<SubType>Form</SubType>
</Compile>
@@ -958,6 +965,9 @@
<Compile Include="작업일지\Work_Log.Designer.cs">
<DependentUpon>Work_Log.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="개발자용\fDevDB.resx">
<DependentUpon>fDevDB.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="마스터\From_User_manage_List.resx">
<DependentUpon>From_User_manage_List.cs</DependentUpon>
</EmbeddedResource>

View File

@@ -0,0 +1,251 @@
namespace UniMarc.
{
partial class fDevDB
{
/// <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.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(fDevDB));
this.cmbTables = new System.Windows.Forms.ComboBox();
this.btQuery = new System.Windows.Forms.Button();
this.dv1 = new System.Windows.Forms.DataGridView();
this.bs1 = new System.Windows.Forms.BindingSource(this.components);
this.bn1 = new System.Windows.Forms.BindingNavigator(this.components);
this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox();
this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel();
this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton();
this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton();
this.btsave = new System.Windows.Forms.ToolStripButton();
((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bs1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.bn1)).BeginInit();
this.bn1.SuspendLayout();
this.SuspendLayout();
//
// cmbTables
//
this.cmbTables.FormattingEnabled = true;
this.cmbTables.Items.AddRange(new object[] {
"lib_CopyCheck"});
this.cmbTables.Location = new System.Drawing.Point(67, 12);
this.cmbTables.Name = "cmbTables";
this.cmbTables.Size = new System.Drawing.Size(240, 20);
this.cmbTables.TabIndex = 0;
//
// btQuery
//
this.btQuery.Location = new System.Drawing.Point(317, 11);
this.btQuery.Name = "btQuery";
this.btQuery.Size = new System.Drawing.Size(87, 20);
this.btQuery.TabIndex = 1;
this.btQuery.Text = "button1";
this.btQuery.UseVisualStyleBackColor = true;
this.btQuery.Click += new System.EventHandler(this.button1_Click);
//
// dataGridView1
//
this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dv1.Location = new System.Drawing.Point(40, 48);
this.dv1.Name = "dataGridView1";
this.dv1.RowTemplate.Height = 23;
this.dv1.Size = new System.Drawing.Size(585, 300);
this.dv1.TabIndex = 2;
//
// bn1
//
this.bn1.AddNewItem = this.bindingNavigatorAddNewItem;
this.bn1.CountItem = this.bindingNavigatorCountItem;
this.bn1.DeleteItem = this.bindingNavigatorDeleteItem;
this.bn1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.bn1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.bindingNavigatorMoveFirstItem,
this.bindingNavigatorMovePreviousItem,
this.bindingNavigatorSeparator,
this.bindingNavigatorPositionItem,
this.bindingNavigatorCountItem,
this.bindingNavigatorSeparator1,
this.bindingNavigatorMoveNextItem,
this.bindingNavigatorMoveLastItem,
this.bindingNavigatorSeparator2,
this.bindingNavigatorAddNewItem,
this.bindingNavigatorDeleteItem,
this.btsave});
this.bn1.Location = new System.Drawing.Point(0, 425);
this.bn1.MoveFirstItem = this.bindingNavigatorMoveFirstItem;
this.bn1.MoveLastItem = this.bindingNavigatorMoveLastItem;
this.bn1.MoveNextItem = this.bindingNavigatorMoveNextItem;
this.bn1.MovePreviousItem = this.bindingNavigatorMovePreviousItem;
this.bn1.Name = "bn1";
this.bn1.PositionItem = this.bindingNavigatorPositionItem;
this.bn1.Size = new System.Drawing.Size(800, 25);
this.bn1.TabIndex = 3;
this.bn1.Text = "bindingNavigator1";
//
// bindingNavigatorMoveFirstItem
//
this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image")));
this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem";
this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveFirstItem.Text = "처음으로 이동";
//
// bindingNavigatorMovePreviousItem
//
this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image")));
this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem";
this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMovePreviousItem.Text = "이전으로 이동";
//
// bindingNavigatorSeparator
//
this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator";
this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25);
//
// bindingNavigatorPositionItem
//
this.bindingNavigatorPositionItem.AccessibleName = "위치";
this.bindingNavigatorPositionItem.AutoSize = false;
this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem";
this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23);
this.bindingNavigatorPositionItem.Text = "0";
this.bindingNavigatorPositionItem.ToolTipText = "현재 위치";
//
// bindingNavigatorCountItem
//
this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem";
this.bindingNavigatorCountItem.Size = new System.Drawing.Size(27, 22);
this.bindingNavigatorCountItem.Text = "/{0}";
this.bindingNavigatorCountItem.ToolTipText = "전체 항목 수";
//
// bindingNavigatorSeparator1
//
this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator";
this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25);
//
// bindingNavigatorMoveNextItem
//
this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image")));
this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem";
this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveNextItem.Text = "다음으로 이동";
//
// bindingNavigatorMoveLastItem
//
this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image")));
this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem";
this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorMoveLastItem.Text = "마지막으로 이동";
//
// bindingNavigatorSeparator2
//
this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator";
this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25);
//
// bindingNavigatorAddNewItem
//
this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image")));
this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem";
this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorAddNewItem.Text = "새로 추가";
//
// bindingNavigatorDeleteItem
//
this.bindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image")));
this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem";
this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true;
this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(23, 22);
this.bindingNavigatorDeleteItem.Text = "삭제";
//
// btsave
//
this.btsave.Image = ((System.Drawing.Image)(resources.GetObject("btsave.Image")));
this.btsave.ImageTransparentColor = System.Drawing.Color.Magenta;
this.btsave.Name = "btsave";
this.btsave.Size = new System.Drawing.Size(50, 22);
this.btsave.Text = "save";
this.btsave.Click += new System.EventHandler(this.btsave_Click);
//
// fDevDB
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.bn1);
this.Controls.Add(this.dv1);
this.Controls.Add(this.btQuery);
this.Controls.Add(this.cmbTables);
this.Name = "fDevDB";
this.Text = "fDevDB";
this.Load += new System.EventHandler(this.fDevDB_Load);
((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bs1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.bn1)).EndInit();
this.bn1.ResumeLayout(false);
this.bn1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ComboBox cmbTables;
private System.Windows.Forms.Button btQuery;
private System.Windows.Forms.DataGridView dv1;
private System.Windows.Forms.BindingSource bs1;
private System.Windows.Forms.BindingNavigator bn1;
private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem;
private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator;
private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem;
private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem;
private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2;
private System.Windows.Forms.ToolStripButton btsave;
}
}

View File

@@ -0,0 +1,56 @@
using AR;
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 WindowsFormsApp1;
namespace UniMarc.
{
public partial class fDevDB : Form
{
DataTable dt = new DataTable();
Helper_DB db = new Helper_DB();
public fDevDB()
{
InitializeComponent();
}
private void fDevDB_Load(object sender, EventArgs e)
{
if (this.cmbTables.Items.Count > 0)
this.cmbTables.SelectedIndex = 0;
}
private void btsave_Click(object sender, EventArgs e)
{
//save
var sql = $"select * from {cmbTables.Text}";
var cn = db.CreateConnection();
var da = new MySql.Data.MySqlClient.MySqlDataAdapter(sql, cn);
var cnt = da.Update(dt);
UTIL.MsgI($"P{cnt}");
cn.Dispose();
}
private void button1_Click(object sender, EventArgs e)
{
//query
var sql = $"select * from {cmbTables.Text}";
var cn = db.CreateConnection();
var da = new MySql.Data.MySqlClient.MySqlDataAdapter(sql, cn);
da.Fill(dt);
this.bs1.DataSource = dt;
this.bn1.BindingSource = this.bs1;
this.dv1.DataSource = this.bs1;
cn.Dispose();
}
}
}

View File

@@ -0,0 +1,206 @@
<?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>
<metadata name="bs1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="bn1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>156, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="bindingNavigatorAddNewItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFXSURBVDhPzc9LSwJhFAZgd5FkaAlFRCEhVCRm9TssIiqw
7CKWXZCQJA1Lw0JIo1Ckm1SL2rSoTYvaBEUQBhEF4YyXaex3fN/3hrNo4SxkNtELZ3U4D+9Rqf5tCmdV
yJ5U4zOlxvuBBuX7ismk1CDfGyDFENIJrXLgbV/zCzzE9MqB57gOpLgOIq7iNtJQGfg4rMFrshbpuA5P
u3W4j+pBxBVQwYPrUDMuAy248Btw6m3DkccoB18SWpBiEERcAxH9IMIyiOAGLcyB5h2gOTsYPwrGDyG+
2CEHHnfqpbr0ywsiLIEWFkDzTtDcJFjWBsYPg3GDYBkrtmdMcuAu0oibcBOupLqtOPcZQLNjYPwIku52
7M13IuoyIeI0IzxlkQPlOfYYpbqMG0DM1VX5oDylPxnXD8ZZseUwKweisybp39IE7T3Kgc3pboQmLAiM
98Jv61MO/Fl+ACQj2J5cFZvRAAAAAElFTkSuQmCC
</value>
</data>
<data name="bindingNavigatorDeleteItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFrSURBVDhPtZBNKMNhHMf/V+WtlIsLSjkgk5iQTIbkJTKN
yLwlBw6LhFx2cCDlQg64SA4kJeVEstO8zWtrSn9pWmkX/OPyfMQQnrWm+Fy/3++n5/kpyl+A6xi6q8Gx
w88sJFiZR3SWIyxG2FoPKuHmCpZmvndYW4BeE6LViGgvhbmJgJLXFwpLMdh65JwTh19Sm4kw54K14VtJ
DHUgTNkwOSKPv8LiNKIs+U3EcAe4T2Gs3y8d6w8+/oArFzQW+L9UnYGo00NfU2jjD9jbRZj0iIpUqNL9
cuxRwZwHWTFoumjudZFQkxmaBM81mHIgPw5fWwWcH74d15sSCcuzwSXceaHZwENhPO6iVHz27c8Bo1ac
SRFox/uBJTw/wWAbGBI4SonFt7EqFW9L0lBbKtFurqVMYXcTLTsWZ2IYalc9aI9ySVGUnaQoNKdDzpiy
oSaH4zamg3opF97RRrrh7EDOuXDC+AAc2OXwP3kBiiMDHFY5tmwAAAAASUVORK5CYII=
</value>
</data>
<data name="bindingNavigatorMoveFirstItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAExSURBVDhPY2AYNKBw1vP/TQue/8+c+Pg/uhwMhLc/wCnH
kDvz2f9VR97/x6UovvvB/+CGa1jlwCBjytP/C/d9wKoovufh/6X7///3r76AIQcHCT1P/k/b8h5DUUT7
fbDmzFn//3uVnsBtQGTXo/+9qz+gKAptvQfW3Lru/3//zr//XfIP4DYgsPnh/7r57+CKglvu/l+09///
jnX//2fM+fnfru7nf/uM7bgN8Ki6/z9/2hsURXbFt/+nz/n937/r23+dwnf/LRLW4zbAvvTu/+zJrzEU
6aec/29S9OK/Stan/8aRy3AbYJF3539q/2usigySTvyXTfv6Xzd4HoYcHBhm3f4f1vISpyL91Mv/NXyn
YZUDA520G//9qh/iVaTiMQGnHINT7pX/IAV4FQ1KAADwdsCrWJS2HgAAAABJRU5ErkJggg==
</value>
</data>
<data name="bindingNavigatorMovePreviousItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAC7SURBVDhPY2AYMiC8/cF/dDGiQXz3g//BDdfIMyC+5+H/
pfv///evvkC6ARHt98GaM2f9/+9VeoI0A0Jb74E1t677/9+/8+9/l/wDxBsQ3HL3/6K9//93rPv/P2PO
z/92dT//22dsJ94AELArvv0/fc7v//5d3/7rFL77b5GwnjQDQEA/5fx/k6IX/1WyPv03jlxGugEgYJB0
4r9s2tf/usHzyDMABPRTL//X8J1GvgEgoOIxgTIDBi8AANAUYJgsLP+3AAAAAElFTkSuQmCC
</value>
</data>
<data name="bindingNavigatorMoveNextItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACkSURBVDhPY2AYdKBw1vP/6GIkgdyZz/4ndN8j35CMKU//
z9v/+39C1x3yDEnoefJ/9r5f/zu3/v3vVnqZdEMiux79n7Lt1/+SpX//J0z/+98m9yxphgQ2P/zfuvY9
WLNxyZf/0tHX/htHLiPeEI+q+/9L5r6Da1Z06SFeMwjYl979H9jyjDzNIGCRd+e/TcEV8jSDgGHWbfI1
g4BO2g3yNQ9NAACgfl+gY6ualwAAAABJRU5ErkJggg==
</value>
</data>
<data name="bindingNavigatorMoveLastItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAErSURBVDhPY2AYVKBw1vP/6GIwAJJrWvD8f+bExzjVMOTO
fPY/ofseVgUguVVH3v8Pb3+AVR4MMqY8/T9v/+//CV13MBSB5Bbu+/A/uOEahhwcJPQ8+T9736//nVv/
/ncrvYyiECQ3bcv7//7VF3AbENn16P+Ubb/+lyz9+z9h+t//Nrln4YpBcr2rP/z3Kj2B24DA5of/W9e+
B2s2LvnyXzr62n/jyGVgDSC5uvnv/rvkH8BtgEfV/f8lc9/BNSu69MAVg+Typ735b5+xHbcB9qV3/we2
PMPQDJPLnvz6v0XCetwGWOTd+W9TcAVDM0wutf813EtYgWHWbayaQQAkF9by8r9u8Dys8mCgk3YDpyRI
zq/64X8N32k41eAFTrlX/qt4TABjdLmBBQC+0b+zZl1WGAAAAABJRU5ErkJggg==
</value>
</data>
<data name="btsave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIFSURBVDhPpZLtS1NhGMbPPxJmmlYSgqHiKzGU1EDxg4iK
YKyG2WBogqMYJQOtCEVRFBGdTBCJfRnkS4VaaWNT5sqx1BUxRXxDHYxAJLvkusEeBaPAB+5z4Jzn+t3X
/aLhnEfjo8m+dCoa+7/C3O2Hqe0zDC+8KG+cRZHZhdzaaWTVTCLDMIY0vfM04Nfh77/G/sEhwpEDbO3t
I7TxE8urEVy99fT/AL5gWDLrTB/hnF4XsW0khCu5ln8DmJliT2AXrcNBsU1gj/MH4nMeKwBrPktM28xM
cX79DFKrHHD5d9D26hvicx4pABt2lpg10zYzU0zr7+e3xXGcrkEB2O2TNec9nJFwB3alZn5jZorfeDZh
6Q3g8s06BeCoKF4MRURoH1+BY2oNCbeb0TIclIYxOhzf8frTOuo7FxCbbVIAzpni0iceEc8vhzEwGkJD
lx83ymxifejdKjRNk/8PWnyIyTQqAJek0jqHwfEVscu31baIu8+90sTE4nY025dQ2/5FIPpnXlzKuK8A
HBUzHot52djqQ6HZhfR7IwK4mKpHtvEDMqvfCiQ6zaAAXM8x94aIWTNrLLG4kVUzgaTSPlzLtyJOZxbb
1wtfyg4Q+AfA3aZlButjSfxGcUJBk4g5tuP3haQKRKXcUQDOmbvNTpPOJeFFjordZmbWTNvMTHFUcpUC
nOccAdABIDXXE1nzAAAAAElFTkSuQmCC
</value>
</data>
</root>

View File

@@ -133,7 +133,7 @@ namespace UniMarc.마크
{
var cc2 = cc as Check_copyWD;
cc2.btn_SearchList.Text = list_name;
cc2.SearchCount.Value = cc2.dataGridView1.Rows.Count - 1;
cc2.SearchCount.Value = cc2.dv1.Rows.Count - 1;
}
@@ -161,14 +161,14 @@ namespace UniMarc.마크
else
{
var cc2 = cc as Check_copyWD;
cc2.dataGridView1.Rows.Clear();
cc2.dv1.Rows.Clear();
string[] ary = query.Split('|');
string[] grid = { "", "", "" };
for (int a = 0; a < ary.Length; a++)
{
if (a % 2 == 0) { grid[0] = ary[a]; }
if (a % 2 == 1) { grid[1] = ary[a]; cc2.dataGridView1.Rows.Add(grid); }
if (a % 2 == 1) { grid[1] = ary[a]; cc2.dv1.Rows.Add(grid); }
}
}

View File

@@ -53,7 +53,8 @@ namespace UniMarc.마크
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.ColumnHeadersHeight = 35;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Province,
this.Area,
@@ -66,7 +67,7 @@ namespace UniMarc.마크
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.ReadOnly = true;
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(411, 213);
this.dataGridView1.Size = new System.Drawing.Size(514, 261);
this.dataGridView1.TabIndex = 0;
this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick);
this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint);
@@ -88,10 +89,10 @@ namespace UniMarc.마크
//
// lib_name
//
this.lib_name.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.lib_name.HeaderText = "도서관명";
this.lib_name.Name = "lib_name";
this.lib_name.ReadOnly = true;
this.lib_name.Width = 350;
//
// Code
//
@@ -118,7 +119,7 @@ namespace UniMarc.마크
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(411, 213);
this.ClientSize = new System.Drawing.Size(514, 261);
this.Controls.Add(this.dataGridView1);
this.Name = "Check_Copy_Sub_Search";
this.Text = "도서관 검색";

View File

@@ -1637,6 +1637,8 @@ namespace WindowsFormsApp1.Mac
private void btn_SiteDenote_Click(object sender, EventArgs e)
{
if (URL == null) return;
if (URL.Contains("\"") == false)
URL = $"\"{URL}\"";
AR.UTIL.RunExplorer(URL);
}

View File

@@ -28,8 +28,9 @@
/// </summary>
private void InitializeComponent()
{
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
this.panel1 = new System.Windows.Forms.Panel();
this.chkShowBrowser = new System.Windows.Forms.CheckBox();
this.chkRetryErrData = new System.Windows.Forms.CheckBox();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.radTargetErr = new System.Windows.Forms.RadioButton();
@@ -50,7 +51,7 @@
this.btn_SiteDenote = new System.Windows.Forms.Button();
this.lbl_PW = new System.Windows.Forms.Label();
this.lbl_ID = new System.Windows.Forms.Label();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.dv1 = new System.Windows.Forms.DataGridView();
this.book_name = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.book_comp = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Count = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -66,12 +67,11 @@
this.btn_GridReset = new System.Windows.Forms.Button();
this.btn_OpenMemo = new System.Windows.Forms.Button();
this.chk_spChar = new System.Windows.Forms.CheckBox();
this.chkShowBrowser = new System.Windows.Forms.CheckBox();
this.panel1.SuspendLayout();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.SearchCount)).BeginInit();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit();
this.panel3.SuspendLayout();
this.panel6.SuspendLayout();
this.statusStrip1.SuspendLayout();
@@ -95,6 +95,16 @@
this.panel1.Size = new System.Drawing.Size(637, 106);
this.panel1.TabIndex = 0;
//
// chkShowBrowser
//
this.chkShowBrowser.AutoSize = true;
this.chkShowBrowser.Location = new System.Drawing.Point(515, 81);
this.chkShowBrowser.Name = "chkShowBrowser";
this.chkShowBrowser.Size = new System.Drawing.Size(96, 16);
this.chkShowBrowser.TabIndex = 8;
this.chkShowBrowser.Text = "브라우저표시";
this.chkShowBrowser.UseVisualStyleBackColor = true;
//
// chkRetryErrData
//
this.chkRetryErrData.AutoSize = true;
@@ -311,34 +321,34 @@
this.lbl_ID.TabIndex = 3;
this.lbl_ID.Text = " ";
//
// dataGridView1
// dv1
//
this.dataGridView1.AllowUserToDeleteRows = false;
this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control;
this.dataGridView1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle3.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle3;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dv1.AllowUserToDeleteRows = false;
this.dv1.BackgroundColor = System.Drawing.SystemColors.Control;
this.dv1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.dv1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle1.Font = new System.Drawing.Font("굴림", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(129)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dv1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.book_name,
this.book_comp,
this.Count,
this.dvc_remark});
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(0, 0);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(637, 542);
this.dataGridView1.TabIndex = 1;
this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint);
this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown);
this.dv1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dv1.Location = new System.Drawing.Point(0, 0);
this.dv1.Name = "dv1";
this.dv1.RowTemplate.Height = 23;
this.dv1.Size = new System.Drawing.Size(637, 542);
this.dv1.TabIndex = 1;
this.dv1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint);
this.dv1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown);
//
// book_name
//
@@ -391,7 +401,7 @@
//
// panel6
//
this.panel6.Controls.Add(this.dataGridView1);
this.panel6.Controls.Add(this.dv1);
this.panel6.Controls.Add(this.statusStrip1);
this.panel6.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel6.Location = new System.Drawing.Point(0, 174);
@@ -480,16 +490,6 @@
this.chk_spChar.Text = "특수문자 제거";
this.chk_spChar.UseVisualStyleBackColor = true;
//
// chkShowBrowser
//
this.chkShowBrowser.AutoSize = true;
this.chkShowBrowser.Location = new System.Drawing.Point(515, 81);
this.chkShowBrowser.Name = "chkShowBrowser";
this.chkShowBrowser.Size = new System.Drawing.Size(96, 16);
this.chkShowBrowser.TabIndex = 8;
this.chkShowBrowser.Text = "브라우저표시";
this.chkShowBrowser.UseVisualStyleBackColor = true;
//
// Check_copyWD
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
@@ -507,7 +507,7 @@
((System.ComponentModel.ISupportInitialize)(this.SearchCount)).EndInit();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit();
this.panel3.ResumeLayout(false);
this.panel6.ResumeLayout(false);
this.panel6.PerformLayout();
@@ -529,7 +529,7 @@
private System.Windows.Forms.Button btn_Stop;
private System.Windows.Forms.Button btn_Start;
public System.Windows.Forms.TextBox tb_SearchTarget;
public System.Windows.Forms.DataGridView dataGridView1;
public System.Windows.Forms.DataGridView dv1;
public System.Windows.Forms.Button btn_SearchList;
private System.Windows.Forms.Button btn_ApplyFilter;
private System.Windows.Forms.Panel panel3;

View File

@@ -27,19 +27,51 @@ namespace WindowsFormsApp1.Mac
main = _main;
db.DBcon();
var idx = 1;
//도서검색(크롤링)
_searchService = new BookSearchService();
//_searchService.AddSearcher(new KwangjuCityLibrarySearcher_central());
//_searchService.AddSearcher(new KwangjuCityLibrarySearcher_choisangjun());
//_searchService.AddSearcher(new KwangjuCityLibrarySearcher_dagachi());
//_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Indi());
//_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Student());
//_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Kumho());
_searchService.AddSearcher(new NamguLibrarySearcher_Munhwa(1));
_searchService.AddSearcher(new NamguLibrarySearcher_Children(2));
_searchService.AddSearcher(new NamguLibrarySearcher_Smart(3));
_searchService.AddSearcher(new NamguLibrarySearcher_Purungil(4));
_searchService.AddSearcher(new NamguLibrarySearcher_Hyocheon(5));
_searchService.AddSearcher(new NamguLibrarySearcher_Munhwa(idx++));
_searchService.AddSearcher(new NamguLibrarySearcher_Children(idx++));
_searchService.AddSearcher(new NamguLibrarySearcher_Smart(idx++));
_searchService.AddSearcher(new NamguLibrarySearcher_Purungil(idx++));
_searchService.AddSearcher(new NamguLibrarySearcher_Hyocheon(idx++));
//광주시청도서광
idx = 30;
_searchService.AddSearcher(new KwangjuCityLibrarySearcher_central(idx++));
_searchService.AddSearcher(new KwangjuCityLibrarySearcher_choisangjun(idx++));
_searchService.AddSearcher(new KwangjuCityLibrarySearcher_dagachi(idx++));
_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Indi(idx++));
_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Student(idx++));
_searchService.AddSearcher(new KwangjuCityLibrarySearcher_Kumho(idx++));
//전남교육청통합도서관
idx = 50;
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //목포
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //나주
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //남평
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //광양
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //구례
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //보성
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //벌교
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //화순
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //장흥
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //해남
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //영암
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //무안
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //함평
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //영광
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //장성
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //진도
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //곡성
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //학생교육문화원
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //광양평생
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //고흥평색
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //교육연수원
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //교육연구정보원
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //전라남도국제교육원
_searchService.AddSearcher(new JunnamEduSearcher_Mokpo(idx++)); //순천만생태문화교육원
}
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
@@ -51,7 +83,7 @@ namespace WindowsFormsApp1.Mac
private void Check_copy_Load(object sender, EventArgs e)
{
string[] Grid = { "----- 빈칸으로 놔주세요 -----", "빈칸", "" };
dataGridView1.Rows.Add(Grid);
dv1.Rows.Add(Grid);
this.Show();
Application.DoEvents();
@@ -182,7 +214,7 @@ namespace WindowsFormsApp1.Mac
Skill_Grid sg = new Skill_Grid();
sg.Excel_to_DataGridView(sender, e);
SearchCount.Value = dataGridView1.Rows.Count;
SearchCount.Value = dv1.Rows.Count;
}
async private void btn_Start_Click(object sender, EventArgs e)
@@ -204,10 +236,10 @@ namespace WindowsFormsApp1.Mac
}
SearchCount.Value = dataGridView1.Rows.Count; //250619
SearchCount.Value = dv1.Rows.Count; //250619
RowCount = 0; //250619
dataGridView1.CurrentCell = dataGridView1.Rows[0].Cells[0];
dv1.CurrentCell = dv1.Rows[0].Cells[0];
int SCount = Convert.ToInt32(SearchCount.Value);
@@ -259,7 +291,7 @@ namespace WindowsFormsApp1.Mac
RetrySearch:
foreach (DataGridViewRow drow in this.dataGridView1.Rows)
foreach (DataGridViewRow drow in this.dv1.Rows)
{
if (this._isSearching == false)
{
@@ -267,7 +299,7 @@ namespace WindowsFormsApp1.Mac
continue;
}
dataGridView1.CurrentCell = drow.Cells[0];
dv1.CurrentCell = drow.Cells[0];
//var vBookName = drow.Cells["book_name"].Value;
var bookName = drow.Cells["book_name"].Value?.ToString() ?? string.Empty;
if (bookName.isEmpty())
@@ -376,8 +408,8 @@ namespace WindowsFormsApp1.Mac
{
if (Count == "" || Count == "0" || Count == "미소장")
{
dataGridView1.Rows[RowCount].DefaultCellStyle.BackColor = Color.LightGray;
dataGridView1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Red;
dv1.Rows[RowCount].DefaultCellStyle.BackColor = Color.LightGray;
dv1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Red;
if (rb_isHave.Checked)
return "";
@@ -385,8 +417,8 @@ namespace WindowsFormsApp1.Mac
return Count;
}
dataGridView1.Rows[RowCount].DefaultCellStyle.BackColor = Color.Yellow;
dataGridView1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Blue;
dv1.Rows[RowCount].DefaultCellStyle.BackColor = Color.Yellow;
dv1.Rows[RowCount].DefaultCellStyle.ForeColor = Color.Blue;
if (rb_isHave.Checked)
return "소장";
@@ -403,7 +435,7 @@ namespace WindowsFormsApp1.Mac
private void btn_ApplyFilter_Click(object sender, EventArgs e)
{
int count = dataGridView1.Rows.Count;
int count = dv1.Rows.Count;
if (count <= 1)
return;
@@ -422,17 +454,17 @@ namespace WindowsFormsApp1.Mac
{
for (int a = 0; a < count; a++)
{
if (dataGridView1.Rows[a].Cells["book_name"].Value == null)
if (dv1.Rows[a].Cells["book_name"].Value == null)
break;
string Target = dataGridView1.Rows[a].Cells["book_name"].Value.ToString();
string Target = dv1.Rows[a].Cells["book_name"].Value.ToString();
// 구두점 제거 ,.;:/
// Target = Target.Replace(",", "").Replace(".", "").Replace(";", "").Replace(":", "");
string res = Regex.Replace(Target, @"[^a-zA-Z0-9가-힣_\s()]", "", RegexOptions.Singleline);
dataGridView1.Rows[a].Cells["book_name"].Value = res.Trim();
dv1.Rows[a].Cells["book_name"].Value = res.Trim();
}
}
@@ -444,12 +476,12 @@ namespace WindowsFormsApp1.Mac
String_Text st = new String_Text();
for (int a = 0; a < count; a++)
{
if (dataGridView1.Rows[a].Cells["book_name"].Value == null)
if (dv1.Rows[a].Cells["book_name"].Value == null)
break;
string Target = dataGridView1.Rows[a].Cells["book_name"].Value.ToString();
string Target = dv1.Rows[a].Cells["book_name"].Value.ToString();
dataGridView1.Rows[a].Cells["book_name"].Value = st.RemoveWordInBracket(Target).Trim();
dv1.Rows[a].Cells["book_name"].Value = st.RemoveWordInBracket(Target).Trim();
}
}
@@ -458,7 +490,7 @@ namespace WindowsFormsApp1.Mac
OpenFileDialog OpenFileDialog = new OpenFileDialog();
if (OpenFileDialog.ShowDialog() == DialogResult.OK)
{
dataGridView1.Rows.Clear();
dv1.Rows.Clear();
string filePath = OpenFileDialog.FileName;
try
{
@@ -493,23 +525,23 @@ namespace WindowsFormsApp1.Mac
else
GridData[0] = Line;
dataGridView1.Rows.Add(GridData);
dv1.Rows.Add(GridData);
}
}
#endregion
private void btn_GridReset_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
dv1.Rows.Clear();
}
private void btn_ResultEmpty_Click(object sender, EventArgs e)
{
for (int a = 0; a < dataGridView1.Rows.Count; a++)
for (int a = 0; a < dv1.Rows.Count; a++)
{
dataGridView1.Rows[a].DefaultCellStyle.ForeColor = Color.Black;
dataGridView1.Rows[a].DefaultCellStyle.BackColor = Color.White;
dataGridView1.Rows[a].Cells["Count"].Value = "";
dv1.Rows[a].DefaultCellStyle.ForeColor = Color.Black;
dv1.Rows[a].DefaultCellStyle.BackColor = Color.White;
dv1.Rows[a].Cells["Count"].Value = "";
RowCount = 0;
}
}

View File

@@ -132,7 +132,4 @@
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -28,18 +28,16 @@
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DLS_Copy));
this.label1 = new System.Windows.Forms.Button();
this.panel1 = new System.Windows.Forms.Panel();
this.panel8 = new System.Windows.Forms.Panel();
this.dataGridView1 = new System.Windows.Forms.DataGridView();
this.dv1 = new System.Windows.Forms.DataGridView();
this.panel5 = new System.Windows.Forms.Panel();
this.chkShowBrowser = new System.Windows.Forms.CheckBox();
this.chk_RemoveBrit = new System.Windows.Forms.CheckBox();
this.chk_spChar = new System.Windows.Forms.CheckBox();
this.btn_ApplyFilter = new System.Windows.Forms.Button();
this.panel3 = new System.Windows.Forms.Panel();
this.btn_Reflesh008 = new System.Windows.Forms.Button();
this.label2 = new System.Windows.Forms.Label();
this.rBtn_ISBN = new System.Windows.Forms.RadioButton();
this.btnStop = new System.Windows.Forms.Button();
@@ -55,12 +53,15 @@
this.tb_SearchClient = new System.Windows.Forms.TextBox();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.lblStatus = new System.Windows.Forms.ToolStripLabel();
this.btn_ResultEmpty = new System.Windows.Forms.Button();
this.btn_GridReset = new System.Windows.Forms.Button();
this.Book_name = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ISBN = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.Check = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dvc_count = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.dvc_Remark = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.panel1.SuspendLayout();
this.panel8.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.dv1)).BeginInit();
this.panel5.SuspendLayout();
this.panel3.SuspendLayout();
this.panel2.SuspendLayout();
@@ -87,48 +88,50 @@
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(499, 712);
this.panel1.Size = new System.Drawing.Size(640, 699);
this.panel1.TabIndex = 1;
//
// panel8
//
this.panel8.Controls.Add(this.dataGridView1);
this.panel8.Controls.Add(this.dv1);
this.panel8.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel8.Location = new System.Drawing.Point(0, 103);
this.panel8.Name = "panel8";
this.panel8.Size = new System.Drawing.Size(497, 607);
this.panel8.Size = new System.Drawing.Size(638, 594);
this.panel8.TabIndex = 5;
//
// dataGridView1
// dv1
//
this.dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control;
this.dataGridView1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.dv1.BackgroundColor = System.Drawing.SystemColors.Control;
this.dv1.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Single;
this.dv1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dv1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.Book_name,
this.ISBN,
this.Check});
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dataGridView1.Location = new System.Drawing.Point(0, 0);
this.dataGridView1.Name = "dataGridView1";
this.dataGridView1.RowHeadersWidth = 31;
this.dataGridView1.RowTemplate.Height = 23;
this.dataGridView1.Size = new System.Drawing.Size(497, 607);
this.dataGridView1.TabIndex = 0;
this.dataGridView1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint);
this.dataGridView1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown);
this.dvc_count,
this.dvc_Remark});
this.dv1.Dock = System.Windows.Forms.DockStyle.Fill;
this.dv1.Location = new System.Drawing.Point(0, 0);
this.dv1.Name = "dv1";
this.dv1.RowHeadersWidth = 31;
this.dv1.RowTemplate.Height = 23;
this.dv1.Size = new System.Drawing.Size(638, 594);
this.dv1.TabIndex = 0;
this.dv1.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dataGridView1_RowPostPaint);
this.dv1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.dataGridView1_KeyDown);
//
// panel5
//
this.panel5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel5.Controls.Add(this.chkShowBrowser);
this.panel5.Controls.Add(this.btn_ResultEmpty);
this.panel5.Controls.Add(this.btn_GridReset);
this.panel5.Controls.Add(this.chk_RemoveBrit);
this.panel5.Controls.Add(this.chk_spChar);
this.panel5.Controls.Add(this.btn_ApplyFilter);
this.panel5.Dock = System.Windows.Forms.DockStyle.Top;
this.panel5.Location = new System.Drawing.Point(0, 68);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(497, 35);
this.panel5.Size = new System.Drawing.Size(638, 35);
this.panel5.TabIndex = 4;
//
// chkShowBrowser
@@ -137,7 +140,7 @@
this.chkShowBrowser.AutoSize = true;
this.chkShowBrowser.Checked = true;
this.chkShowBrowser.CheckState = System.Windows.Forms.CheckState.Checked;
this.chkShowBrowser.Location = new System.Drawing.Point(395, 7);
this.chkShowBrowser.Location = new System.Drawing.Point(354, 9);
this.chkShowBrowser.Name = "chkShowBrowser";
this.chkShowBrowser.Size = new System.Drawing.Size(96, 16);
this.chkShowBrowser.TabIndex = 209;
@@ -157,7 +160,7 @@
// chk_spChar
//
this.chk_spChar.AutoSize = true;
this.chk_spChar.Location = new System.Drawing.Point(10, 9);
this.chk_spChar.Location = new System.Drawing.Point(10, 8);
this.chk_spChar.Name = "chk_spChar";
this.chk_spChar.Size = new System.Drawing.Size(100, 16);
this.chk_spChar.TabIndex = 4;
@@ -167,17 +170,18 @@
// btn_ApplyFilter
//
this.btn_ApplyFilter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btn_ApplyFilter.Location = new System.Drawing.Point(314, 3);
this.btn_ApplyFilter.Location = new System.Drawing.Point(258, 4);
this.btn_ApplyFilter.Name = "btn_ApplyFilter";
this.btn_ApplyFilter.Size = new System.Drawing.Size(75, 24);
this.btn_ApplyFilter.TabIndex = 5;
this.btn_ApplyFilter.Text = "필터적용";
this.btn_ApplyFilter.UseVisualStyleBackColor = true;
this.btn_ApplyFilter.Click += new System.EventHandler(this.btn_ApplyFilter_Click);
//
// panel3
//
this.panel3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.panel3.Controls.Add(this.btn_Reflesh008);
this.panel3.Controls.Add(this.chkShowBrowser);
this.panel3.Controls.Add(this.label2);
this.panel3.Controls.Add(this.rBtn_ISBN);
this.panel3.Controls.Add(this.btnStop);
@@ -186,22 +190,9 @@
this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
this.panel3.Location = new System.Drawing.Point(0, 33);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(497, 35);
this.panel3.Size = new System.Drawing.Size(638, 35);
this.panel3.TabIndex = 4;
//
// btn_Reflesh008
//
this.btn_Reflesh008.BackColor = System.Drawing.SystemColors.WindowText;
this.btn_Reflesh008.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btn_Reflesh008.BackgroundImage")));
this.btn_Reflesh008.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.btn_Reflesh008.Dock = System.Windows.Forms.DockStyle.Right;
this.btn_Reflesh008.Location = new System.Drawing.Point(462, 0);
this.btn_Reflesh008.Name = "btn_Reflesh008";
this.btn_Reflesh008.Size = new System.Drawing.Size(33, 33);
this.btn_Reflesh008.TabIndex = 208;
this.btn_Reflesh008.UseVisualStyleBackColor = false;
this.btn_Reflesh008.Click += new System.EventHandler(this.btn_Reflesh008_Click);
//
// label2
//
this.label2.AutoSize = true;
@@ -267,13 +258,13 @@
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(497, 33);
this.panel2.Size = new System.Drawing.Size(638, 33);
this.panel2.TabIndex = 3;
//
// btn_SiteDenote
//
this.btn_SiteDenote.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btn_SiteDenote.Location = new System.Drawing.Point(414, 5);
this.btn_SiteDenote.Location = new System.Drawing.Point(555, 5);
this.btn_SiteDenote.Name = "btn_SiteDenote";
this.btn_SiteDenote.Size = new System.Drawing.Size(77, 23);
this.btn_SiteDenote.TabIndex = 6;
@@ -284,7 +275,7 @@
// btn_Connect
//
this.btn_Connect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btn_Connect.Location = new System.Drawing.Point(338, 5);
this.btn_Connect.Location = new System.Drawing.Point(479, 5);
this.btn_Connect.Name = "btn_Connect";
this.btn_Connect.Size = new System.Drawing.Size(70, 23);
this.btn_Connect.TabIndex = 5;
@@ -335,7 +326,7 @@
this.tb_SearchClient.ImeMode = System.Windows.Forms.ImeMode.Hangul;
this.tb_SearchClient.Location = new System.Drawing.Point(76, 6);
this.tb_SearchClient.Name = "tb_SearchClient";
this.tb_SearchClient.Size = new System.Drawing.Size(256, 21);
this.tb_SearchClient.Size = new System.Drawing.Size(397, 21);
this.tb_SearchClient.TabIndex = 1;
this.tb_SearchClient.KeyDown += new System.Windows.Forms.KeyEventHandler(this.tb_SearchClient_KeyDown);
//
@@ -343,9 +334,9 @@
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.lblStatus});
this.statusStrip1.Location = new System.Drawing.Point(0, 712);
this.statusStrip1.Location = new System.Drawing.Point(0, 699);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(499, 22);
this.statusStrip1.Size = new System.Drawing.Size(640, 22);
this.statusStrip1.TabIndex = 3;
this.statusStrip1.Text = "statusStrip1";
//
@@ -356,6 +347,26 @@
this.lblStatus.Text = "WD";
this.lblStatus.Click += new System.EventHandler(this.lblStatus_Click);
//
// btn_ResultEmpty
//
this.btn_ResultEmpty.Location = new System.Drawing.Point(478, 4);
this.btn_ResultEmpty.Name = "btn_ResultEmpty";
this.btn_ResultEmpty.Size = new System.Drawing.Size(75, 24);
this.btn_ResultEmpty.TabIndex = 6;
this.btn_ResultEmpty.Text = "결과 비움";
this.btn_ResultEmpty.UseVisualStyleBackColor = true;
this.btn_ResultEmpty.Click += new System.EventHandler(this.btn_ResultEmpty_Click);
//
// btn_GridReset
//
this.btn_GridReset.Location = new System.Drawing.Point(555, 4);
this.btn_GridReset.Name = "btn_GridReset";
this.btn_GridReset.Size = new System.Drawing.Size(75, 24);
this.btn_GridReset.TabIndex = 7;
this.btn_GridReset.Text = "표 비우기";
this.btn_GridReset.UseVisualStyleBackColor = true;
this.btn_GridReset.Click += new System.EventHandler(this.btn_GridReset_Click);
//
// Book_name
//
this.Book_name.HeaderText = "도서명";
@@ -369,17 +380,22 @@
this.ISBN.Name = "ISBN";
this.ISBN.Width = 140;
//
// Check
// dvc_count
//
this.Check.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.Check.HeaderText = "권수";
this.Check.Name = "Check";
this.dvc_count.HeaderText = "검색";
this.dvc_count.Name = "dvc_count";
//
// dvc_Remark
//
this.dvc_Remark.HeaderText = "비고";
this.dvc_Remark.Name = "dvc_Remark";
this.dvc_Remark.Width = 200;
//
// DLS_Copy
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(499, 734);
this.ClientSize = new System.Drawing.Size(640, 721);
this.Controls.Add(this.panel1);
this.Controls.Add(this.statusStrip1);
this.Name = "DLS_Copy";
@@ -387,7 +403,7 @@
this.Load += new System.EventHandler(this.DLS_Copy_Load);
this.panel1.ResumeLayout(false);
this.panel8.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.dv1)).EndInit();
this.panel5.ResumeLayout(false);
this.panel5.PerformLayout();
this.panel3.ResumeLayout(false);
@@ -411,14 +427,13 @@
public System.Windows.Forms.Label lbl_PW;
public System.Windows.Forms.Label lbl_ID;
public System.Windows.Forms.Label lbl_Client;
private System.Windows.Forms.DataGridView dataGridView1;
private System.Windows.Forms.DataGridView dv1;
private System.Windows.Forms.Panel panel5;
private System.Windows.Forms.RadioButton rBtn_ISBN;
private System.Windows.Forms.RadioButton rBtn_BookName;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Button btn_Search;
public System.Windows.Forms.Label lbl_Area;
private System.Windows.Forms.Button btn_Reflesh008;
private System.Windows.Forms.CheckBox chk_RemoveBrit;
private System.Windows.Forms.Button btn_ApplyFilter;
private System.Windows.Forms.CheckBox chk_spChar;
@@ -429,8 +444,11 @@
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripLabel lblStatus;
public System.Windows.Forms.Button btn_Connect;
private System.Windows.Forms.Button btn_ResultEmpty;
private System.Windows.Forms.Button btn_GridReset;
private System.Windows.Forms.DataGridViewTextBoxColumn Book_name;
private System.Windows.Forms.DataGridViewTextBoxColumn ISBN;
private System.Windows.Forms.DataGridViewTextBoxColumn Check;
private System.Windows.Forms.DataGridViewTextBoxColumn dvc_count;
private System.Windows.Forms.DataGridViewTextBoxColumn dvc_Remark;
}
}

View File

@@ -6,6 +6,7 @@ using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using UniMarc.SearchModel;
@@ -190,12 +191,12 @@ namespace WindowsFormsApp1.Mac
async private void btn_Search_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows[0].Cells["ISBN"].Value == null && rBtn_ISBN.Checked)
if (dv1.Rows[0].Cells["ISBN"].Value == null && rBtn_ISBN.Checked)
{
MessageBox.Show("ISBN이 입력되지않았습니다!");
return;
}
if (dataGridView1.Rows[0].Cells["Book_name"].Value == null && rBtn_BookName.Checked)
if (dv1.Rows[0].Cells["Book_name"].Value == null && rBtn_BookName.Checked)
{
MessageBox.Show("도서명이 입력되지않았습니다!");
return;
@@ -208,7 +209,7 @@ namespace WindowsFormsApp1.Mac
var sType = rBtn_ISBN.Checked ? "ea_isbn" : "title";
_searcher.SetParameter(this.lbl_ID.Text, lbl_PW.Text, "유덕초등학교", sType);
foreach (DataGridViewRow dr in this.dataGridView1.Rows)
foreach (DataGridViewRow dr in this.dv1.Rows)
{
var title = dr.Cells[0].Value?.ToString() ?? string.Empty;
var isbn = dr.Cells[1].Value?.ToString() ?? string.Empty;
@@ -216,12 +217,17 @@ namespace WindowsFormsApp1.Mac
var rlt = await _searcher.SearchAsync(search);
if (rlt.IsSuccess == false)
{
dr.Cells[2].Value = rlt.ErrorMessage;
dr.Cells[3].Value = rlt.ErrorMessage;
dr.DefaultCellStyle.BackColor = Color.HotPink;
}
else
{
//if (rlt.BookCount > 0) dr.Cells[2].Value = "Y";
dr.Cells[2].Value = $"{rlt.BookCount }";
if (rlt.BookCount == 0)
dr.DefaultCellStyle.BackColor = Color.WhiteSmoke;
else
dr.DefaultCellStyle.BackColor = Color.LightSkyBlue;
}
}
@@ -283,10 +289,10 @@ namespace WindowsFormsApp1.Mac
private void btn_Reflesh008_Click(object sender, EventArgs e)
{
for (int a = 0; a < dataGridView1.Rows.Count; a++)
for (int a = 0; a < dv1.Rows.Count; a++)
{
dataGridView1.Rows[a].Cells["Check"].Value = "";
dataGridView1.Rows[a].DefaultCellStyle.BackColor = Color.White;
dv1.Rows[a].Cells["Check"].Value = "";
dv1.Rows[a].DefaultCellStyle.BackColor = Color.White;
}
}
@@ -323,10 +329,79 @@ namespace WindowsFormsApp1.Mac
"9788999729188",
"9788999729188"};
this.dataGridView1.Rows.Clear();
this.dv1.Rows.Clear();
foreach (var isbn in lst)
{
dataGridView1.Rows.Add(new object[] { "", isbn, "" });
dv1.Rows.Add(new object[] { "", isbn, "","" });
}
}
private void btn_GridReset_Click(object sender, EventArgs e)
{
dv1.Rows.Clear();
}
private void btn_ResultEmpty_Click(object sender, EventArgs e)
{
for (int a = 0; a < dv1.Rows.Count; a++)
{
dv1.Rows[a].DefaultCellStyle.ForeColor = Color.Black;
dv1.Rows[a].DefaultCellStyle.BackColor = Color.White;
dv1.Rows[a].Cells["dvc_count"].Value = "";
}
}
private void btn_ApplyFilter_Click(object sender, EventArgs e)
{
int count = dv1.Rows.Count;
if (count <= 1)
return;
if (chk_spChar.Checked) // 특수문자 제거
RemoveSpecialChar(count);
if (chk_RemoveBrit.Checked) // 괄호안의 문자 제거
RemoveInBrit(count);
}
/// <summary>
/// 특수문자 제거
/// </summary>
void RemoveSpecialChar(int count)
{
var booknamecol = 0;
for (int a = 0; a < count; a++)
{
if (dv1.Rows[a].Cells[booknamecol].Value == null)
break;
string Target = dv1.Rows[a].Cells[booknamecol].Value.ToString();
// 구두점 제거 ,.;:/
// Target = Target.Replace(",", "").Replace(".", "").Replace(";", "").Replace(":", "");
string res = Regex.Replace(Target, @"[^a-zA-Z0-9가-힣_\s()]", "", RegexOptions.Singleline);
dv1.Rows[a].Cells[booknamecol].Value = res.Trim();
}
}
/// <summary>
/// 괄호안의 문자 제거
/// </summary>
void RemoveInBrit(int count)
{
var booknamecol = 0;
String_Text st = new String_Text();
for (int a = 0; a < count; a++)
{
if (dv1.Rows[a].Cells[booknamecol].Value == null)
break;
string Target = dv1.Rows[a].Cells[booknamecol].Value.ToString();
dv1.Rows[a].Cells[booknamecol].Value = st.RemoveWordInBracket(Target).Trim();
}
}
}

View File

@@ -123,48 +123,12 @@
<metadata name="ISBN.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Check.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="dvc_count.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dvc_Remark.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="btn_Reflesh008.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAABGdBTUEAALGPC/xhBQAAAIFQTFRF////
AAAAlJSU4ODgU1NT6enp+Pj4w8PDxMTEkpKS/Pz81tbW5eXlRERE3NzcmZmZzMzMZGRkTU1Nb29vg4OD
urq6KioqW1tb8vLyf39/sbGxEhISPz8/i4uL0NDQZmZmIyMjoqKiNTU1tLS0GRkZp6end3d3Li4uOjo6
Dg4OJSUlLUB5vgAABwxJREFUeF7tnX97ojAMx6ceIqDi/DXndJ47vZt7/y/wFOMUSKG0SWE8+fxz9zxl
ZN8BaZq26ZMgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCELrWHnDsb8+7uNuvD+u/fHQW0GLOT34t276kb99
nn51siynu60f9eEqA7Zb+E+d9P1g9AaKcN42gR/C1dUIOl34X12E43gDMsrYxGP4IX26nZoVRtt/8Ovr
8bmtJvIssE6Fq/3n9feuxOao73wuAutTGD0nv7AJM80HmQisS6E/TaybMh3AfYq4CqxH4ULXuagp1wgC
61A4MPn88kzf4X44N4HuFQ5/gWV7dh7cE+FboGuF/S3YpSFWhQF3gY4VTqp1f+V8RnDnNA8C3Sr8C0Yp
wcLOR4EuFUYnsEnLMjd4SAl0qDAGi/SswQKQFuhMYWgewpTzF4wkZAS6Ujj8DfZ4+LzHqlmBjhROwBob
p1uomhPoRuEajJUzms3jtT+JxtHEP3bnM/3w7hrF5QU6UbgHW8V8BAsvl60I+8M/2w+4opjF+XJEoAuF
mNkMy3lhIB0uZhrf8RG3xK8wAEtKvrZ4YJJmMitO5ZzB3TW7wrIn+OLrJtJWa73XNQO3wpJvcFYtmzkY
wc9VgFnhHzCDMysY/iiYVNbIq/AdrKC8VE8OXlhUHJ+wKvTACMZJJ9WCEpb6rhScCsN8kv6bV7MU9pVe
lTwPp8IZ2MhzmMAlpmj0sTcYFard6LP9jNKktHe8wadwDBbyBHCFFStdp8qnUBlnGbuYDJo5ETaFr2Ag
y5tOiKaHnk/lUqjqCQ9DuIACrUELk8JQEUIe7H3MI8Uh0xUmhQpvTixQK7vFo1ARzLxRvqJntHpFHoU7
uHsGOieToNftsyhUuBkfmonQjGtYFOLTn8SmdAM3DoV47vAZWonQFciiEH2ExG5UWyCHQvwR2o4m0ugL
5FD4ArdO8QqNNFQQyKCwB3dOcbIZ8OaoIpBBIRryU40nEioJpFfYhxuneIFGEqoJpFeIzsKYZdVwKgqk
V4h1FTNoo6CqQHKFqJ+pnvhVUi2TeIFaITaeIXyElZ8gvUIsP0S30tpAILVCbGBI50hNBFIrPMJtHyEb
NBkJpFaIRGxLi4X2KcwEUiuEuz5CtRvAUCCxQmxwT5S6MBVIrBD5DP9BkyXGAokVIp/hHJrsMBdIrBCZ
qyAZVVSPZO6QKhzCTR+BJitsBNIqRBzNBppssHhFz5AqRBwNwVyhnUBahcjw/rLazA6rV/QMqULElVoP
nGwF0sw430AGFrYhWzjuWUKZp10dQNadETS1BGToRJm/aABId0gT0TQGJEcTQ1NLQCYsMlshfjoLkPUA
8aRo3SAKaWecagdJdxPP3NcNEpZSpvMbQPufYfu/w/b70vb3h+2Padofl7Z/bNH+8SHHGL9hcORpmgVL
rq1R8ORLmwRTzrtBcM1bNAiuuafmwDZ/2BgQV7OEppbAOI/fFEDVI+5e02D6Kwc00YFs+idbT1PGCqnw
k6rrQgLyITob52PbvOhDKt51bcVgiwYZ3h9sAa2bKrARWHuEeBdLAvP60gKQvpglTcS9RliJO8Pc67xV
YKVbdtBGC/tafRx0QyBPTMy/3wIFqzd5gjZq0D0z3H0ikm7nS9Zig0TifU850BenQ7yt+g7mton3rmVB
3xv6iO2Gi/2HaQZgIw1joOFiD+kjWMjN1VVccbIP+AH0s+DtodCHyJZYxAv3cj5CRffL1WWgHUWnQ1y+
IYubmgoJir8md2ZBURfjRP+HRQPuM+yJBcXKZXKH6inKRfHProeKuuvEEhXvSmcK7ZwoPg/aAi69/JTs
FSdZBQd1opTlsx2tj1DW+qLqNHy4Xw5X813qem00+wPUi/idzTuz1txb4aHaBYfTzuq6iW+2I42Jysdw
j9MyLMEoglXty1Dlxs64Xd+i6q4unMwdjl9wBMHB8fIWVa+YYFiDdqz+As84X7JLXkfYQxMW39Qwp05b
C7qndl4JtazeKds9qF/PO/QL388zR7jSMaXb677mOoFcNC+tAb2HS52jsQe0pK7+02Be0PHcqOkJXtAq
M9r5xM5GeOp7i0Cv8nOtC64rnW/RPSbnW7z763g+0y0WXPua+cJ+kYTa17R4BcXLCfjgSzdrEyrSbyQ0
ZDU533lPNTrRNJF6xGPD7ybtHiuOKc1wOhwsh/zsvI/GbR0jPv8w4J1aNmNYFj7r88I8+2LMwP6c1Quj
Ju9tJDhLdtT0jRy+fsCJMao5CtXC5kznn7Kw2tubvKyb+EdtpYo0z8W7sdRKBzSLcBzrfpIf8biJ3Z8O
fT8YFR/9c9gE2gmrptKP/O3zNJ+N+Zrutovop6u7s/KG48H6uI+78X6/9qOh14ChrSAIgiAIgiAIgiAI
giAIgiAIgiAIgiAIAilPT/8BzuZT5uV+S2QAAAAASUVORK5CYII=
</value>
</data>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>