//조회시 변경하여 조회
select (replace(컬럼명,'변경전데이터','변경후데이터')) 컬럼명 from 테이블명
//예시
select (replace(strImageFilePath,'\\192.168.0.100\','')) strImageFilePath from tbl_Result

 //실제데이터 변경
 Update 테이블명 Set 컬럼명 = (replace(컬럼명 ,'변경전데이터','변경후데이터'))
//예시
 Update tbl_Result Set strImageFilePath = (replace(strImageFilePath,'\\192.168.0.100\',''))

* VisualStudio2015 기준

확인하고자 하는 DataTable변수에서 돋보기 모양 클릭 후 DataTable Visualizer 클릭시 시각화도우미 팝업

 

 

 

//WriteProfileString(_T(""), _T("레지스트리에서저장될이름"), 변수);


void SaveData()
{
CWinApp *pApp = AfxGetApp();
pApp->WriteProfileString(_T(""), _T("m_strSrcPath"), m_strSrcPath);
pApp->WriteProfileInt(_T(""), _T("m_nFPS"), m_nFPS);
}

void LoadData()
{
CWinApp *pApp = AfxGetApp();
m_strSrcPath = pApp->GetProfileString(_T(""), _T("m_strSrcPath"), _T(""));
m_nFPS = pApp->GetProfileIntA(_T(""), _T("m_nFPS"), 70);
}

'공부 > MFC_자주쓸거' 카테고리의 다른 글

[MFC]메인프레임 포인터 얻기  (0) 2022.05.06
[MFC] 폴더내 파일 탐색  (0) 2022.02.14
[MFC] 작업표시줄 숨기기  (0) 2021.07.07
[MFC]리스트박스 데이터 추가  (0) 2021.07.05
[MFC] 중복실행 방지  (0) 2021.05.27
//타입 , 크기 변경
ALTER TABLE TBL_RESULT MODIFY  NLOTID NUMBER(20,0);
ALTER TABLE TBL_RESULT MODIFY STRDATE VARCHAR2(50);

ALTER TABLE 테이블 MODIFY  컬럼 타입(크기);

//이름 변경
ALTER TABLE TBL_RESULT RENAME COLUMN STRDATE TO STRDATEDST

ALTER TABLE 테이블 RENAME COLUMN 컬럼명 TO 변경할컬럼명

 

출처: https://jwklife.tistory.com/5

오류 내용

 

변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다.
다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다.

 

방법

 

도구 - 옵션 - 디자이너 - 테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함 - 체크해제

 

'공부 > SQL' 카테고리의 다른 글

[MSSQL] 특정 문자 변경 쿼리  (0) 2021.08.13
[Oracle] 테이블 컬럼 변경  (0) 2021.07.19
[Oracle] 세션강제종료  (0) 2021.07.15
[Oracle] 일정 시간 경과 후 연결 끊김  (0) 2021.07.14
[MSSQL] NVL 사용법  (0) 2021.07.07

연결된 세션 조회 

SELECT 
   SID
  ,SERIAL#
  ,USERNAME
  ,PROGRAM 
FROM 
  V$SESSION 

결과

 

세션 종료 쿼리

연결된 SimpleOracle프로그램 강제 세션종료 -> SID : 8 , SERIAL# ; 915

--ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;
ALTER SYSTEM KILL SESSION '8,915' IMMEDIATE;

 

 

출처: https://rypro.tistory.com/157

 * 오라클 DB 입력이 일정시간동안 없을 때 연결이 끊기는 현상


확인해야 할 것
1)
select PROFILE
     , RESOURCE_NAME
     , RESOURCE_TYPE
     , LIMIT
from dba_profiles
where profile = 'DEFAULT'
order by 1,2;

결과에서 IDLE_TIME 이 15일 경우 15분 동안 입력 없을 시 끊김

 


2)
select VALUE from v$parameter where name = 'resource_limit'

결과에서 TRUE일 경우 일정시간동안 입력 없을 시 연결 끊김


* 변경 방법
1) IDLE_TIME 을 UNLIMITED로 수정
alter profile default limit idle_time UNLIMITED;


--IDLE_TIME 을 1분으로 수정 쿼리
--alter profile default limit idle_time 1;

2)resource_limit 수정
alter system set resource_limit = FALSE;

VS 2019 설치 후 우클릭시 한자 보이는 현상 제거

 

레지스트리 편집기 실행 - 찾기 

'용' 입력 후 한자  用  (쓸 용)

 

검색 결과

내용 수정 후 결과

 

 

//수정 - 내용추가

위처럼 변경해도 어느 순간 원래대로 되돌아옴

크게 사용하지 않는 경우 삭제

 

[레지스트리 편집기 열기]

윈도우 + r  - regedit  

해당부분 제거

HKEY_CLASSES_ROOT\Directory\Background\shell\AnyCode
HKEY_CLASSES_ROOT\Directory\shell\AnyCode

 

출처 : https://developercommunity.visualstudio.com/t/disable-context-menu-for-open-in-visual-studio/26397

NVL 의 용도 : NULL 체크 후 치환 

select NVL(COLUMN1, 'Empty') 일 경우 COLUMN1이 NULL이면 'Empty'로 치환해서 출력

                                                                     NULL이 아니면 원래 값 출력

WHERE절에 사용될 경우   COLUMN1이 NULL이면 치환된 값이 반환되어  우변의 값과 비교하여 참,거짓 판별

                                                    NULL이 아닐 경우 원래 값과 우변의 값을 비교하여 참 거짓 판별

 

쿼리 예시

테이블명: ZTESTNVL
컬럼명: COLUMN1 , COLUMN2
현재 데이터



select * from ZTESTNVL;




select NVL(COLUMN1, 'Empty') from ZTESTNVL;



select COLUMN2 from ZTESTNVL WHERE NVL(COLUMN1,'EMPTY') = 'EMPTY';




select COLUMN2 from ZTESTNVL WHERE NVL(COLUMN1,'EMPTY') = 'EXIST';



 

 

void CMainFrame::ShowWindowTaskbar(BOOL bShow)
{
APPBARDATA stAppBarData;
ZeroMemory(&stAppBarData, sizeof(stAppBarData));
stAppBarData.cbSize = sizeof(stAppBarData);
stAppBarData.hWnd = (HWND)FindWindow(_T("Shell_TrayWnd"), NULL);
if (bShow)
{
stAppBarData.lParam |= ABS_ALWAYSONTOP;
}
else
{
stAppBarData.lParam |= ABS_AUTOHIDE;
}
SHAppBarMessage(ABM_SETSTATE, &stAppBarData);
}

출처: https://m.blog.naver.com/itrainl4/90092899174

리스트박스를 화면 표출 로그로 사용할시 사용

리스트박스 컨트롤 설정 sort : false 로 설정

 

CString strLog;
OutputListbox(m_listOutput, strLog);


void CExampleDlg::OutputListbox(CListBox& box, CString str)
{
SYSTEMTIME cur_time;
GetLocalTime(&cur_time);
CString strTime;
strTime.Format(_T("[%02d:%02d:%02d.%03d] "),
cur_time.wHour,
cur_time.wMinute,
cur_time.wSecond,
cur_time.wMilliseconds
);

UpdateData(TRUE);
box.AddString(_T(" >  ") + strTime + str);
box.SetCurSel(box.GetCount() - 1);  // Log 최신으로 커서이동

UpdateData(FALSE);
}

실행 제한 시간을 초과했습니다. 작업이 완료되기 전에 실행 제한 시간이 지났거나 서버가 응답하지 않습니다.

 

 

해당 라인 추가

CommandTimeout  를 0으로 주거나 타임아웃 시간을 충분하게 설정

comm.CommandTimeout = 0; 

 

에러내용

변경 내용을 저장할 수 없습니다. 변경 내용을 적용하려면 다음 테이블을 삭제하고 다시 만들어야 합니다.
다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다.

 

도구 - 옵션 - 디자이너 - 테이블 및 데이터베이스 디자이너 - 테이블을 다시 만들어야 하는 변경 내용 저장 안 함(S)

- 체크해제

 

 

 

 

참고 : https://docs.microsoft.com/ko-kr/troubleshoot/sql/ssms/error-when-you-save-table

MFC 프로그램 중복 실행 방지

 

C프로젝트명App가 있는 cpp 파일에서 해당 코드 작성


/************************ 중복 실행 체크 ************************/
// 컴파일러에게이어플리케이션의모든인스턴스들사이에서공유될수있는
// Shared 섹션을구성하고초기화된변수를삽입하도록한다.
#pragma data_seg("Shared")
volatile LONG g_lApplicationInstances = 0;
#pragma data_seg()
// 링커에게Shared 섹션을읽고, 쓰고, 공유가능한섹션으로설정할것을알려준다.
#pragma comment(linker, "/Section:Shared,RWS")
/************************ end  중복 실행 체크 ************************/

//...

BOOL C프로젝트명App::InitInstance()
{
/************************  중복 실행 체크 ************************/
if (g_lApplicationInstances > 0)
{
// g_lApplicationInstances 가0 이상이 면프로그램이이미실행중이다.
//AfxMessageBox(_T("This Program is already running."));
return FALSE;
}
else
{
// g_lApplicationInstances에1을더하여 프로그램의인스턴스가추가된것을설정한다.
InterlockedExchangeAdd(&g_lApplicationInstances, 1);
}

//기존내용

//


}

다이얼로그 엔터키 막기 _키보드메세지_PreTranslateMessage

 

BOOL CPreTranslateMessageDlg::PreTranslateMessage(MSG* pMsg) {     
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.    
 if (pMsg->message == WM_KEYDOWN)
{       
  
//키 눌렀을때       
  if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE)
{           
  // esc, 엔터키이면 리턴         
   return TRUE;       
  }  
}  
   return CDialogEx::PreTranslateMessage(pMsg);
}

클래스뷰 - 속성 - 재정의 - PreTranslateMessage  추가

 

or

 

컨트롤 + 쉬프트 + x   - 가상함수 - PreTranslateMessage  추가

ListBox
        listBox1.SelectedIndex = listBox1.Items.Count - 1; 


ListView
         listView1.Items[listView1.Items.Count -1].EnsureVisible(); 


TextBox
         tbMessage.SelectionStart = tbMessage.Text.Length;
         tbMessage.ScrollToCaret();

출처: https://rescue911.tistory.com/entry/ListBox-ListView-TextBox에서-항상-포커스를-제일-아래로-자동-옮기기

'공부 > C#_자주쓸거' 카테고리의 다른 글

[C#][Winform] 쓰레드 내부에서 컨트롤 수정  (0) 2021.05.11

visual studio 메뉴 - 디버그 - 창 - 예외처리 - Managed Debugging Assistants - ContexSwitchDeadlock 체크해제

 

- 에러화면

- 에러내용

추가 정보: CLR에서 60초 동안 COM 컨텍스트 0x10681a8에서 COM 컨텍스트 0x1068260(으)로 전환하지 못했습니다. 대상 컨텍스트/아파트를 소유하는 스레드가 펌프 대기를 수행하지 않거나, Windows 메시지를 펌프하지 않고 매우 긴 실행 작업을 처리하고 있는 것 같습니다. 이러한 상황은 대개 성능에 부정적인 영향을 주며 응용 프로그램이 응답하지 않거나 시간이 흐름에 따라 메모리 사용이 증가하는 문제로 이어질 수도 있습니다. 이 문제를 방지하려면 모든 STA(Single Threaded Apartment) 스레드가 펌프 대기 기본 형식(예: CoWaitForMultipleHandles)을 사용하고 긴 실행 작업 동안 지속적으로 메시지를 펌프해야 합니다.

 

- 메뉴 위치

 

 

 

 

출처 : https://jujun.tistory.com/163

실행파일 경로 얻기

 

// 실행파일이 존재하는 폴더 경로 반환
CString CAutoSaveDlg::GetModulePath()
{
TCHAR szPath[MAX_PATH];
memset(szPath, 0x00, MAX_PATH);

::GetModuleFileName(NULL, szPath, MAX_PATH);

CString sTempPath = szPath;
int iLength = sTempPath.GetLength();
int iPos = sTempPath.ReverseFind(TCHAR('\\'));

CString sModulePath = sTempPath.Left(iPos);
sModulePath += _T("\\");
return sModulePath;
}

데이터베이스 이름 옆에 (주의 대상) 나타날때

 

MSSQL 관리자 권한으로 실행

 

EXEC sp_resetstatus '데이터베이스명';
ALTER DATABASE 데이터베이스명 SET EMERGENCY
DBCC checkdb('데이터베이스명')
ALTER DATABASE 데이터베이스명 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('데이터베이스명', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE 데이터베이스명 SET MULTI_USER

예시)

EXEC sp_resetstatus 'CELL_SURFACE';
ALTER DATABASE CELL_SURFACE SET EMERGENCY
DBCC checkdb('CELL_SURFACE')
ALTER DATABASE CELL_SURFACE SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('CELL_SURFACE', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE CELL_SURFACE SET MULTI_USER

 

출처 : https://idchowto.com/?p=5815

this.Invoke(new Action(delegate ()

{

  //동작

 timer1.Start();

 

}));

////////////////////////////////////////////////////////////////////////////////////////

 

 

if (컨트롤 변수명.InvokeRequired == true)

{

컨트롤 변수명.Invoke((MethodInvoker)delegate

{

   컨트롤들 수정

});

}

 

 

ex)

if (dataGridViewTable.InvokeRequired == true)

{

 dataGridViewTable.Invoke((MethodInvoker)delegate

 {

//동작
         isLoadData = false;
    });
}
else

//동작
     isLoadData = false;
}

+ Recent posts