본문 바로가기

Window Programming/VB

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의 콤포넌트을 잘 사용할수 있었습니다. 그것을 일반적으로 콤 이라고 부릅니다... 더보기
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).. 더보기
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 속성 - 세로열.. 더보기
마우스 포인터 위치 관련 모듈 마우스 포인터 위치관련 모듈입니다. 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.. 더보기
Key Scan Code Const SCANKEY_ESC = 1 Const SCANKEY_1 = 2 ' 1 Const SCANKEY_2 = 3 ' 2 Const SCANKEY_3 = 4 ' 3 Const SCANKEY_4 = 5 ' 4 Const SCANKEY_5 = 6 ' 5 Const SCANKEY_6 = 7 ' 6 Const SCANKEY_7 = 8 ' 7 Const SCANKEY_8 = 9 ' 8 Const SCANKEY_9 = 10 ' 9 Const SCANKEY_0 = 11 ' 0 Const SCANKEY_MINUS = 12 ' - Const SCANKEY_EQUAL = 13 ' = Const SCANKEY_BS = 14 ' ← Const SCANKEY_TAB = 15 'TAB Const SCANKEY_Q = 16 '.. 더보기
VB MSFlexGrid 메인 메뉴를 먼저 만들자 폼에 메뉴를 만들기 위해서는 [메뉴편집기]를 이용한다. 편집기는 e[도구]메뉴 안의 [메뉴편집기]를 선택하거나 폼에서 마우스 오른 쪽 버튼을 누르면 된다.[메뉴편집기]를 사용할 때 주의할 사항은 메뉴를 추후에 자주 수정하여 사용할 경우 index를 사용하면 부분별로 여러 군데 고쳐야 하기 때문에 계획 없이 프로그램을 개발한다면 일일이 name를 따로따로 지정하는 편이 낫다. 우리 나라는 결재 문화이므로 MsFlexGrid를 많이 활용하자 외국의 문서를 본 사람이라면 한번쯤 이런 의문점을 느끼게 될 것이다. 우리는 왜이리 도표를 많이 쓰는지 가로줄 세로줄이 문서를 도배하는 경우가 한 두 번이 아니다. 줄이 안 그어 있으면 답답함을 느끼나 특히 원로한 분들에게서 그 증상이 더 심하다.. 더보기
VB에서의 문자열 처리 문자열 처리비주얼베이직의 텍스트박스 정보는 항상 문자열로 저장되므로 문자열에 대해 충분한 이해가 있어야 비주얼베이직을 유용하게 활용할 수 있다. 여기서는 비주얼베이직의 라이브러리 함수(내장 함수) 중에서 문자열 처리와 관련된 함수를 다루는 방법을 소개한다. 비주얼 베이직의 문자형 변수들은 기본적으로 가변길이로 정의 되므로, 고정길이로 정의하지 않은 한 기억장소 확보는 어플리케이션 실행시에 동적으로 처리된다. 다음표는 문자열 처리와 관련된 내장함수의 종류를 보여준다 동작 키워드 두 문자열 비교 StrComp 문자열 변환 StrConv 소문자 또는 대문자로 변환 Lcase, Ucase 반복 문자의 문자열 작성 Space, String 문자열의 길이 알아내기 Len 문자열 정렬 LSet, Rset 문자과 숫자.. 더보기
VB Property Let / Set property let은 property set과 같은 기능을 합니다. let은 개체 형식이 아닌 변수가 인수로 쓰일 때 사용되고 set은 개체 형식이 인수로 사용될 때 쓰입니다. 그건 비베에서 개체변수를 설정할 때는 set을 쓰는 걸 봐도 알 수 있죠. 예를 들어 다음과 같이 form 개체 변수를 선언하고... dim frm as form ' 이 변수에 form1을 설정할 때는... set frm = form1 참고로 비베에서 개체 변수가 아닌 것은 num = 122와 같이 쓰지만 let num = 122와 같이 쓸 수도 있습니다.(이게 정석.) 다음은 property set 프로시저를 이용하는 예로써 form1이 form2를 로드시킨 뒤, form1이 언로드됩니다. 그러나 form2가 언로드되면 자동.. 더보기
ActiveX Document EXE/DLL 만들기 이 예제는 VisualBasic5.0에서 Internet Explorer에서 볼 수 있는 ActiveX Document ( *.VBD files)를 만드는 과정을 단계별로 보여주는 예제입니다. 인터넷을 통하여 당신이 만든 문서는 전 세계 어디에서도 볼 수 있습니다. (인트라넷의 경우에는 한정된 범위에서 만 가능합니다.) 그러기 때문에 각 사용자들의 system의 환경과 특성은 제각기 다른 환경을 가지고 있습니다. 그래서 ActiveX document로 작성된 page는 각 local PC의 설치되어있는 구성요소를 확인하여 update하고 설치를 하여 같은 환경에서 작동될 수 있도록 합니다. 간단한 ActiveX document 예제 프로그램 만들기 1) Visual Basic5.0을 시작합니다. 최초 시.. 더보기
dll을 이용한 로그인 좀 여유가 생겨서 뭔가 적을것 없을까 하다가 dll을 이용한 로그인 방법에 대해서 적는다. 아주 간단한 구조의 dll을 이용한 로그인이지만 실제로 VB와 asp와의 연동을 많이 해보지 않은 분들은 이것 저것 꽤나 괴로운 작업이 될수 있다. 코드야 어렵지 않다. asp 몇개월만해도 이해할수 있을 정도의 코드다 하지만 실제로 적용하면 코드에서 태클걸리는 것이 아니라 VB의 특성과 시스템적인 특성들때문에 이것 저것 괴로워지고 몰라서 밤새고 그런다. (나도 마찬가지로 꽤나 괴로운적 많았다 -_-) 그래서 순전히 내 주관적인 방법으로 디버깅 하고 에러 찾아내는 방법까지 적어본다. 어떻게 보면 나도 잘 몰라서 무식하게 해결하는 방법일수도 있다. 그럴때는 좀더 좋은 방법 있으면 답글 남겨주면 고맙게 받아들이겠다. 참.. 더보기
COM, DCOM, ActiveX 1. COM(Component Object Model) - MS사가 제시한 개체 모델 - 응용프로그램의 구성 요소화(Component화)로 소프트웨어 재사용성을 높임 * 동일한 기능을 새로 만드는 것이 아니라, 이미 존재하는 기능을 가져다 사용하자는 개념 - DLL과 같이 라이브러리 역할을 하지만 보다 융통성과 재사용성이 뛰어남 * DLL : 함수의 형태로 불러 사용 * COM : 개체의 속성(Property)과 메서드(Method), 이벤트(Event)를 이용 - 종류 * 컨트롤 Component 혼자서는 사용할 수 없고 다른 프로그램내에서 포함되어져 기능을 가짐 모양을 가짐 * 코드 Component (ActiveX DLL, ActiveX EXE) 모양을 가지고 있지 않지만 코드 형식으로 다른 프로그.. 더보기
activex dll 디버깅하기 정확한 의미에서의 디버깅은 아니고 흔히들 웹프로그래머분들이 간단한 Activex DLL 을 만드는 경우가 있느데 DLL 제작과 관련된 정보입니다. 가장큰문제는 DLL를 한번 서버에 등록하면 다시 컴파일해서 등록을 하려고 해도 이미사용중이라는 메시지가 뜨면서 등록이 되지않고 언로드를 하려고 해도 언로드가 잘되지 않을때가 있습니다. 일단은 직접 서비스를 하는 매번 iis에 올려서 테스트를 하는 것보다 vbg(프로젝트그룹)등의 어플을 이용하여 충분히 테스트를 하는것입니다. http://k.daum.net/qna/kin/home/qdetail_view.html?boardid=CA&qid=06h8r 그래서 완성됐다 싶을때 DLL으로 컴파일을 하시면 됩니다. regsvr32.exe 파일이름.DLL iis에 올리고 .. 더보기
VB :: API함수 사용예제 API표시기 이 장에서 사용할 윈도우즈 API함수는 사운드카드를 작동시켜 소리를 내게하는 sndPlaySound함수를 사용하는 것이다. 다음 과정을 따라해보고, 숙달되면 다른 API함수도 사용해본다. windows의 시작메뉴에서 visual basic6.0그룹의 [microsoft visual basic6.0도구들-API텍스트뷰어]를 선택한다. API텍스트뷰어가 실행되면 [파일-텍스트 파일로드]를 선택한다. [파일열기]대화상자에서 win32api를 선택한다. 그러면 API표시기는 이 파일(txt)을 데이터베이스로 전환하면 더 빨리 실행시킬 수 있다는 메시지를 내보일 것이다. 대답으로 [예]를 선택한다. 만약, 이 메시지가 대화상자에 나오지 않는다면, 텍스트파일을 데이터베이스(DB)로 전환하기위해 [파일-.. 더보기