본문 바로가기

Window Programming

recordset - addnew, insert, update 이번의 강좌는 레코드셋 객체를 통한 레코드의 조작방법에 대한 이야기입니다. 레코드 셋을 통해서 데이터를 Insert 하고, Update 하고, Delete 하는 방법을 알아보자는 것입니다. 기존에 우리는 테이블에 데이터를 넣기위해 주로 쿼리를 사용했습니다. 물론, 그 방법이 속도면에서는 빠르고, 데이터의 제어도 탁월한 편이지요. 하지만, 그 쿼리를 이용한 방법은 뭔가 직관적이지 못하다는 문제가 있었습니다. 에러메시지가 빠방!! 터지면 머리가 터질때까지 그 문자열에 작은 따옴표며, 문장 형식이며, 데이터들이 변수에는 잘 들어있는지 등등을...살펴야만 하지요.. 어떤 데이터가 들어갈 경우 에러가 나는 것인지도 모르고 무작정 찾아 헤매야만 합니다. 하나의 레코드에 약 100 개의 컬럼값을 넣는다고 생각해 보세.. 더보기
ADO ADO 객체 객체 설명 Connection 데이터 연결 설정 Command SQL 명령 구현 Parameter SQL 명령에 필요한 파라미터 설정 Recordset 데이터 탐색 및 조작 Field Recordset 객체의 필드를 구현하고 조작 Error Connection 객체의 에러 처리 Property ADO 객체 각각의 특징 구현 ADO 컬렉션 컬렉션 설명 Errors Connection 객체에 발생한 모든 에러 객체 관리 Parameters Command 객체와 관련된 모든 Parameter 객체 관리 Fields Recordset 객체와 관련된 모든 Field 객체 관리 Properties Connection, Command, Recordset, Field 객체의 Property 객체 관리 AD.. 더보기
recordset Append & 연산 필드 추가 1.Append 방법 Recordset 오브젝트의 Fields 컬렉션에 Field 오브젝트를 추가하면 메모리 위에서 새롭게 레코드셋을 작성하는 것이 가능하다.작성한 레코드셋에는 Append 방법이나 Update 방법을 사용하고 레코드를 추가하는 것이 가능하다.【서식】recordset.fields.Append Name,Type, DefinedSize, Attrib, FieldValue recordset:Recordset 오브젝트 Name:레코드셋에 추가하는 필드의 이름 Type:필드의 데이터 형태(adVarChar을 지정한 때는 필드의 사이즈를 지정) DefinedSize:필드의 사이즈(생략 가능) Attrib:필드의 속성.기정치는 adFldDefault. FieldValue:신규 필드의 값을 지정.지정하.. 더보기
Format 함수 ■ FORMAT 함수 사용하기 용도 구분자 기능 사용 예제 결과 숫자 # 숫자의 자리 수를 지정한다. Format(123, "####") 123 무효의 0은 변환하지 않는다. 0 숫자의 자리 수를 지정한다. Format(123, "0000") 123 무효의 0을 변환한다. % 숫자를 %로 변환한다. Format(23, "##%") 2300% , 세 자리마다 ','의 위치를 지정한다. Format(1234, "#,###") 1,234 . 소수점의 위치를 지정한다. Format(12.34, "##.#") 12.3 +- 숫자의 부호를 지정한다. Format(123, "+###") 123 문자 @ 문자열의 길이를 지정한다. Format("ABC", "@@@@") " ABC" 문자열을 우측으로 정렬한다. & 문자.. 더보기
접두어 Control Name 접두어 사용 예 3D Panel ADO Data Animated button Check box Combo box, drop-down list box Command button Common dialog Communications Control(특정 형식이 알려지지 않은 경우 프로시저 내에서 사용됨) Crystal Reports Data Data control Data grid Data repeater Data-bound combo box Data-bound grid Data-bound list box Date picker Directory list box Drive list box File list box Flat scroll bar Form Frame Gauge Graph Grid.. 더보기
Format 함수의 활용 활용 사례 Source Coding (활용예) List1.AddItem (결과값)숫자0의 표현 : 형식이 0일경우 Format(0, "0")0숫자0의 표현 : 형식이 #일경우 Format(0, "#") 시스템일자(현재일자) Now2011-07-25 오후 1:53:18시스템일자(현재일자) Date2011-07-25시스템시간(현재시간) Time오후 1:53:18출고일.Value dtpDate1.Value2011-07-25 오후 1:53:16출고일.DayOfWeek;요일의상수값 일1,월2 dtpDate1.DayOfWeek2시스템일자(현재일자) Format(Date, "Long Date")2011년 7월 25일 월요일시스템일자(현재일자) Format(Time, "Long Time")오후 1:53:18시스템일자(.. 더보기
A Thread to Visual Basic: Multi-Threading In VB5 and VB6 AddressOf 연산자의 등장으로 Visual Basic을 사용하여 이전에는 불가능했던 작업을 수행하는 방법을 설명하는 전체 업계가 저자들 사이에서 발전했습니다. Microsoft Systems Journal 및 Visual Basic Programmer 's Journal의 최근 기사에서는 Visual Basic 프로그래머에게 Visual Basic에서 멀티 스레딩을 직접 지원하기 위해 CreateThread API 함수를 사용할 수있는 가능성을 소개했습니다. 멀티 스레딩의 빠른 검토이미 멀티 스레딩 기술에 정통한 분이라면이 섹션을 건너 뛰고 "The Threading Contract"또는 "Service Pack 2의 새로운 기능"절에서 계속하십시오.단일 CPU가 여러 작업을 수행하는 방법은 무엇입.. 더보기
ODBC 연결문자 및 연결하기 ODBC 추가를 하고 필자의 구성사항 DNS종류:사용자 DSN 원본:MIcrosoft ODBC for Oracle 데이터 원본 이름 : "DDD"(사용하고자하는 이름) 더보기
Component 만들기 출처 : http://l2j.co.kr/1515 먼저 콤포넌트에 대해서 알아보겠습니다. 왜 콤포넌트을 만들어야하는가? 이것의 해답은 재사용이 가능했으면 좋겠다는 객체모델에 근거을 두고 있습니다. 컴포넌트기반의 애플리케이션이라고도 불립니다. 이것은 응용프로그램을 컴포넌트의 조합으로 개발하는 것을 말합니다. 우리는 많이 자주 사용되는 것이 있다면 함수로 만들어서 사용했었는데, 이런식으로 만든 것을 콤포넌트라고 부릅니다. ADO 객체(콤포넌트)를 우리는 무엇으로 만들었는지는 모르나, 인터페이스만 알고 있는 것으로 잘 사용하고 있는 것이 그 예입니다. cf)인터페이스 (일종의 함수) 우리는 내부는 알지 못하지만 인터페이스을 통해 ADO의 콤포넌트을 잘 사용할수 있었습니다. 그것을 일반적으로 콤 이라고 부릅니다... 더보기
정규 표현식 출처 : http://kldp.org/~kabin/doc/regexpress.htm 언제 정규식을 사용하게 되는가? ============================= 여러분은 보통 다음과 같은 경험을 한 적이 있을 것이다. . vi 에디터에서 편집중인 파일 내의 모든 특정 문자열을 또 다른 특정 문자열로 바꾸고 싶은 경우 . ls 명령을 통해 보다 명확한 파일이름을 주고 싶은 경우 . grep 명령을 통해 특정한 문자열을 포함한 파일을 가려 내는 경우 등. 예를 들어 vi 에디터에서 편집중인 내용중에 'body'라는 문자열을 'Body' 로 바꾸고자 할 경우 우리는 다음과 같은 방법을 사용한다. :%s/body/Body/g 위의 명령을 사용할때 정규식을 이용하면 보다 세밀한 지정을 할 수 있다. 예를.. 더보기
VB6에서 WinXP Style 적용하기 1. 먼저 일반적으로 EXE 만들듯이 프로그램을 작성합니다. 테스트를 위해 그냥 기본 컨 트롤 몇가지만 넣어두면 되겠지요. 2. 프로그램을 컴파일합니다. (test.exe) -> 어차피, 나중에 컴파일하더라도 실행 파일 명만 MANIFEST 파일과 맞추면 굳이 여기서 안해도 됩니다.. 3. 메모장으로 test.exe.MANIFEST 이라는 파일을 만듭니다. 뒤에 붙는 MANIFEST는 반드시 모두 대문자여야 하며, 앞부분은 실행파일명으로 합니다. 그 파일 안에 라는 내용을 넣습니다. 4. 다시 비베로 돌아와서, 폼의 선언부에 다음 코드를 넣습니다. Private Type INITCOMMONCONTROLSEX_TYPE dwSize As Long dwICC As Long End Type Private Dec.. 더보기
평균, 표준 편차, RMS 함수 Dim x(5) as double 'x() is an array of measured voltages Dim N as integer 'N is the size of the population Dim Sum, Sum_Sqr, Sum_Sigma as double 'collects the sum Dim Average, RMS, Sigma as double 'results we are calculating x(1) = 1.2: x(2) = 0.8: x(3) = 1.8: x(4) = 0.7: x(5) = 1.2: N = 5 For i = 1 to N Sum = Sum + x(i) Sum_Sqr = Sum_Sqr + (x(i)) ^ 2 Next i Average = Sum / N RMS = (Sum_Sqr / N).. 더보기
모달 다이알로그 시작시 숨기기 고수닷넷 - 데미소다오렌지님 1. Introduction MFC를 사용해서 트레이 기반으로 동작하는 다이알로그 베이스드의 프로그램을 개발해 본 사람이라면 누구나 한번쯤은 이런 생각을 해 보았을것이다. 이놈의 모달 왜 시작하기만 하면 나타나지? ShowWindow API를 사용해서 SW_HIDE를 몇 군데 넣어보아도 뾰족한 수가 없었을 것이다. 최대한 노력을 해 보았자, 화면에 나타났다 금새 사라지는게 전부다. 그럼 왜 이런 현상이 나타날까? 그건 MFC 내부적으로 DoModal안에서 다이알로그를 Show하게 만들기 때문이다. 그렇다면 방법은 없을까? 불행하게도 일반적인 ShowWindow를 사용한 방법은 없다. 이 문서에서는 문제를 해결하는 다른 방법을 제시하고 있다. 그럼 2장에서 좀 더 자세히 살펴보.. 더보기
Doc/View 구조 없는 SDI에서 스플릿 윈도우 만들기 Visual C++ 6 에서 새롭게 지원된 MFC App Wizard 옵션은 바로 다큐먼트 뷰 구조를 사용하지 않고 SDI나 MDI를 할 수 있다는 것입니다. 다큐먼트 뷰 구조가 아닐때 스플릿 윈도우를 만드는 방법을 간단히 알아보도록 합니다. Doc/View 구조 없는 SDI에서 스플릿 윈도우 만들기 다음과 같이 메인 프레임에 스플릿 윈도우 변수를 마련한다. class CMainFrame : public CFrameWnd { public: CMainFrame(); protected: DECLARE_DYNAMIC(CMainFrame) CSplitterWnd m_wndSplitter; 그리고 클래스 위자드를 불러서 OnCreateClient라는 함수를 오버라이드한다. 그후 자신이 올리려는 뷰를 RUNTIME.. 더보기
MS Script Control in MFC MSVB Script Constrol 객체를 만들기 먼저 프로젝트에서 Project/Add Project/Controls and Component에서 Registered ActiveX Controls 부분에서 Script Control을 얻어온다. 1. ActiveX 폼 붙이기 식 다이얼로그 폼에다가 MSScript를 하나 붙인다. 그리고 Property에서 Language 를 VBScript로 준다. 그후 클래스 위자드에서 MSScript를 이용해 m_scptBro라는 맴버자료를 만든후 버튼을 누르면 다음 코드를 실행하게 한다. #include #include #include "ScriptError.h" 를 한 후 m_scptBro.AddCode( " \r\n\ Function fnMethod ( i .. 더보기
Caller ID Software, Visual Basic Microsoft Visual Basic Software DownloadNOTE:This is an actual working version. For the program to work as intended you need an Identifier, Visual Basic 6.0, and Caller ID service from your telephone company. These download files contains a Microsoft Visual Basic project file (Identifier.vbp) and form file (Identifier.frm). You must have enough experience with Visual Basic to know what to do wit.. 더보기
Caller ID, MSCOMM32.OCX MSComm Control Sample Code: MSCOMM32.OCX MSComm Control Visual Basic Programmer's Guide to Serial Communications You have just landed on a very old web page. All I did was copy the VB4 help file on the MSComm32.ocx and put it here back in 1996. I cannot believe how popular this page is with over 100,000 page views since it was created. Still getting over 6000 visitors a month. And is the number one Google resu.. 더보기
VB안깔린 곳에서 인스톨 없이 실행시키기 참조된 혹은 추가구성된 OCX나 DLL등의 모듈파일들을 실행파일이 있는 폴더에 같이 싸잡아 넣습니다. 그리고 VB런타임 파일을 넣어야 겠죠. 제가 넣는 런타임 모듈 파일은 다음과 같습니다. msvbvm60.dll - 이것이 VB런타임 모듈입니다. VB6.OLB - 이건 뭔지 모르겠습니다. 걍 있길래.. VB6KO.DLL - VB6 한글 거시기한 파일입니다. ASYCFILT.DLL - 이것이 상당히 중요한데 위 3파일을 넣어도 VB가 안깔린 컴에선 실행이 안되죠. 근데 이파일 넣으면 됩니다. 참고로 위 4파일은 VB가 깔린 컴이라면 시스템 폴더에 다 있습니다. 또 참고.. 레지등록시키는 파일로 ocx등록하는 경우가 있는데 저의 경우 그짓안해도 잘되더군요. 더보기
Grid Control 1.MSFle11. Grid 컨트롤과 MSHFlexGrid 컨트롤 ♠ MSFlexGrid 컨트롤, MSHFlexGrid 컨트롤 ▶ 표형식의 데이터를 다루는 컨트롤. ▶ 문자열과 그림이 수록된 표를 유연성있게 정렬하거나 병 합할 수 있음 ▶ 두컨트롤은 사용법이 거의 유사하지만, MSHFlexGrid은 MSFlexGrid 컨트롤보다 개선된 컨트롤로서 데이터베이스 를 다루는데 더 편리하도록 구성되어 있음 1.1. 속성 1.1 페이지를 사용하여 속성 설정하기 MSFlexGrid 컨트롤의 우측 팝업메뉴에서 [속성] 메뉴를 선택 ♠ 속성페이지의 일반 탭에서의 속성 Rows와 Cols - 표의 가로행과 세로줄의 수 FixedRows와 FixedCols - 고정행과 고정열의 수 AllowResizing 속성 - 세로열.. 더보기
DLL file function 추출 Dll에서 제공되는 함수들 보기 1.요약 : dumpbin으로 Dll에서 제공되는 함수들의 목록을 본다. 2.본문 : dumpbin.exe는 마이크 VC++ 컴파일러와 함계 제공되는 프로그래밍 툴로서 이 프로그램을 이용하면 import, export 함수 정보와 섹션 정보를 알 수 있다. 3.예제 : dumpbin.exe /imports /exports /out:xxx.txt d:\winnt\system32\DI640nt.dll Dump of file c:\windows\system32\di640nt.dllFile Type: DLL Section contains the following exports for DI600NT.dll 0 characteristics 47D95054 time date stamp.. 더보기
Visual Studio 2005에서 SmartDevice 프로젝트 생성 문제 해결방법 Windows CE 5.0에서 동작하는 Application을 만들려먼 Embedded Visual C++이나 Visual Studio 2005에서 작성이 가능하다. 단, 컴퓨터에 Internet Explore6가 설치되어 있다가 Internet Explore7을 설치하고 나서 Visual Studio 2005에서 프로젝트를 만들면 생성실패라고 나오는 경우가 간혹 있다. 이럴 경우 몇가지 레지스트리 세팅을 해주면 해결된다. 아니면 Visual Studio 2005 서비스팩 1을 설치해주면 해결되기는 하지만.. 안되는 경우도 있기 때문에 다음과 같이 설정해주면 정상 작동한다. 1. 레지스트리 편집기를 연다. 2. 다음과 같은 경로로 간다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.. 더보기
Programming Fonts - 나눔고딕코딩 글꼴 등 출처 : http://kyungseo.pe.kr/blog/131?category=2 일전에 "공짜로 나눠주는 폰트 - 공개 글꼴(무료 서체)"란 제목의 포스트를 올린적이 있다. 이 글에서 소개를 했던 네이버 나눔글꼴 을 소개했었는데, 이번에는 개발자를 위한 글꼴 하나를 더 소개해볼까 한다. 개발자용 나눔고딕코딩체는 나눔고딕을 개선하여 개발자 여러분들이 개발 작업을 좀더 편리하게 하실 수 있도록 최적화된 글꼴입니다. 고정폭 형식으로서 소스코드 편집을 위한 각종 편집기나 터미널에서 가독성을 높였고, 알파벳 대문자 아이(I)와 알파벳 소문자 엘(l), 숫자 1, 숫자 0과 알파벳 대문자 오(O) 혹은 알파벳 소문자 오(o) 등등 혼동되기 쉬운 문자들을 명확하게 구별될 수 있게 하여 원치 않는 코딩 오류를 최소.. 더보기
마우스 포인터 위치 관련 모듈 마우스 포인터 위치관련 모듈입니다. 01 : Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long 02 : Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long 03 : Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) 04 : 05 : Private Type POINTAPI .. 더보기
시간지연 함수 (일정한 시간만큼 대기) 01 : Private Declare Function GetTickCount Lib "kernel32" () As Long 02 : Public Function GetDelay(ByRef TimeCount As Long) As Boolean 03 : On Error Goto Error 04 : GetDelay = True 05 : Dim Timer As Long 06 : Timer = GetTickCount + TimeCount 07 : Do Untill timer 더보기
MBR(Master Boot Recoder) 백업 소스 01 : '--------------------------------------------------- 02 : 'MBR 백업 소스 03 : '사용법 : MBRBackUp(저장될경로, Binary로 저장) 04 : '--------------------------------------------------- 05 : Private Declare Sub SetLastError Lib "kernel32" (ByVal dwErrCode As Long) 06 : Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwSh.. 더보기
정수를 64진법까지 변환해주는 진법변환 모듈 01 : Const BaseString As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 02 : Public Function ChangeNumberBase(ByVal Num As Long, ByVal Base As Byte) As String 03 : On Error Goto Error 04 : If Base > Len(BaseString) Then Base = Len(BaseString) 05 : 06 : Dim tmp As Long 07 : tmp = Num 08 : ChangeNumberBase = "" 09 : Do 10 : ChangeNumberBase = ChangeNumberBase & Mid$(Base.. 더보기
사각형이나 원의 충돌을 감지하는 모듈 01 : '-------------------------------------------------------------------------- 02 : '제작 : 백종민 zhsptm@paran.com 03 : '설명 : 충돌 관련 모듈 04 : '함수 : SquareHit(사각형 충돌) CircleHit(원 충돌) CircleAngle(원 충돌 각도) 05 : '-------------------------------------------------------------------------- 06 : Option Explicit 07 : Private Declare Function IntersectRect Lib "user32.dll" (ByRef lpDestRect As RECT, ByRef lpS.. 더보기
Utility OCX utillity ocx는 비주얼베이직에서 쓸만한 함수를 많이 가지고 있습니다. 또한, 다운로드컨트롤, 사운드플레이컨트롤, 인터넷웹컨트롤, 마우스감지컨트롤, 상태표시컨트롤, XP프로그래스바 등 여러가지 컨트롤을 보유하고 있습니다. 특히 그중 Utill컨트롤은 수십가지의 기능을 지원합니다. 비주얼베이직의 디자인 모드뿐만 아니라, Dim Utill As clsUtill 라고 선언부분에 추가해주시면, 변수 타입으로 사용하실수 있습니다. 아래는 이전 버젼의 기능들입니다. (기능들이 많아서 모든 정리를 못했습니다) 사용 API 갯수 : 24개 기능 갯수 : 38개 사용 API ExitKernelWin9x RtlAdjustPrivilege NtShutdownSystem ExitWindowsEx GetCursorPos.. 더보기
내문서 경로 TCHAR Buffer[MAX_PATH]; CString strResult; if (SHGetSpecialFolderPath(NULL,Buffer,CSIDL_PERSONAL,true)) { strResult.Format("Get MyDoc : %s",Buffer); AfxMessageBox(strResult); }else { AfxMessageBox("Get folder fail"); } 제 경우 CSIDL_MYDOCUMENT 로 했더니 안되고 CSIDL_PERSONAL로 하니 제대로 가져 오는군요. CSDIL 목록은 여기 있습니다. http://http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/r.. 더보기
API Q&A "JASTER" 製手攄? ㅋㅋㅋ | 제스터 http://blog.naver.com/jmj1130/100034569319 API 프로그래밍에 대한 Q&A입니다. 1. 특정 디렉토리 뒤지기 지정한 디렉토리에 있는 모든 파일을 찾아내는 코드를 만들려면 어떻게 해야 합니까 ? 이 때 사용할 수 있는 API가 바로 FindFirstFile과 FindNextFile, FindClose라는 API들입니다. 사용 예제는 다음과 같습니다. WIN32_FIND_DATA findFileData; HANDLE hFileHandle; // szDir에 뒤지고자 하는 디렉토리의 경로명을 준다. 예를 들면 "C:\\TEMP\\*.*" // 찾아진 파일의 속성은 findFileData의 dwFileAttributes를 살펴본다. h.. 더보기