ODBC 연결하다가 한참 삽질하다가
결국 연결했다 흐흐흐

ODBC 추가를 하고

 필자의 구성사항
DNS종류:사용자 DSN
원본:MIcrosoft ODBC for Oracle
데이터 원본 이름 : "DDD"(사용하고자하는 이름) << 필히 기억하거나 확인하길("는 제거하세요)
설명: "" 비어두어도 된다.("는 제거하세요)
사용자 이름: "User Id"(사용자 이름:Database 접속 ID) ("는 제거하세요)
서버 : Oracle TNSNAMES.ORA파일안에 정의 되어있는 이름(오라클 클라이언트 설치 되어 있어야 함)
위와 같은 구성으로 등록되어 있음.
주의 사항 : 사용자DSN과 시스템 DSN이 있으니 잘 구분하시길.
데이터 원본 이름은 ConnectionString 작성 시에 필요하니 다시 와서 보지 않게 적어두거나 외워두자.

구성을 완료 했다면 접속 소스만 보자
Private mCon As ADODB.Connection
Call mCon.Open("Provider=MSDASQL; Data Source=DDD; User ID=" & sUID & "; Password=" & sPassword)

위와 같이 ConnectionString을 작성하면 이상없이 접속이 가능하다.

ConnectionString 작성 방법은 아래을 참고하자

(1) DSN 있는 ODBC 연결 방법 (MS OLE DB for ODBC)
   [Provider=MSDASQL;]

   {DSN=namelFileDSN=filename};
   [DATABASE=database;]

    UID=user;

    PWD=password
 
(2) SQL서버 : DSN 없는 ODBC 연결 방법 (MS SQL Server ODBC Driver)
   [Provider=MSDASQL;]

    Driver={SQL Server};

    Server=디비서버이름;
    Database=디비이름;

    UID=아이디;

    PWD=비밀번호 

   ex)

         Driver={SQL Server};

         Server=taeyo;

         Database=taeyoDB;

         UID=taeyo;
         PWD=11  

(3) Ms-Access : DSN 없는 ODBC 연결방법 (MS Access ODBC Driver)
   ex)

        Driver={Microsoft Access Driver (*.mdb)};
        DBQ=E:\NorthWind.mdb;

        DefaultDir=E:\;

        DriverId=25;
        FIL=MSAccess;ImplicitCommitSync=Yes;

        MaxBufferSize=512;

        MaxScanRows=8;
        PageTimeout=5;

        SafeTransactions=0;

        Threads=3;UID=admin;

        PWD=;

        UserCommitSync=Yes

(4) ORACLE : DSN 없는 ODBC 연결방법 (MS ODBC Driver for ORACLE)
   ex)

         Driver={Microsoft ODBC Driver for Oracle};

         ConnectString=OracleServer.world;

         UID=demo;

         PWD=demo

(5) SQL서버 : OLE DB 직접 접근 방법 (MS OLE DB for SQL Server)

   Provider=SQLOLEDB;
   Data Source=디비서버이름;
   Initial Catalog=디비이름;
   User id= 아이디;
   password= 비밀번호;
   Trusted Connection=사용자 인증 모드(true:NT인증모드 FALSE:복합모드사용);
   Current Language=사용언어식별;
   Network Address=Location으로 지정한 SQL Server의 네트워크 주소;
   Network Library=Net-Library(DLL)이름(경로나 .dll 파일 확장명 불가);
   Use Procedure for Prepare=저장프로시저사용;
   Auto Translate=OEM/ANSI문자 변환(TRUE);
   Packet Size=바이트단위의네트워크패킷크기(512-32767,기본:4096);
   Application Name=클라이언트응용프로그램이름;Workstation ID=워크스테이션식별문자열]
  
   ex)
  
   Provider= SQLOLEDB;
   Data Source= taeyo;
   Initial Catalog=taeyo;
   User id=taeyo;
   password= 11
   
(6) Ms-Access : OLE DB 직접 접근 방법 (MS OLE DB for Access)
   Provider=Microsoft.Jet.OLEDB.4.0; Data Source= MDB파일의 물리적인전체경로[;
Jet OLEDB:System Database=작업그룹정보파일의경로와파일이름;Jet OLEDB:Registry
Path=Jet엔진레지스트리키;Jet OLEDB:Database Password=암호]
   ex) Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\work\MyDb.mdb

(7) Oracle : OLE DB 직접 접근 방법 (MS OLE DB for ORACLE)
   Provider=MSDAORA

(8) MS Index Server (MS OLE DB Provider for Microsoft Index Server)
   Provider=MSIDXS

(9) MS Active Directory Service (MS OLE DB Provider for Microsoft Active
Directory Service)
   Provider=ADSDSOObject; Root=검색 시작할 ADsPath 개체(검색기준);Filter=RFC
960 형식의 검색 필터;Attributes=쉼표로 구분되는 반환될 특성의 목록[; Scope=Base
(기준개체(검색기준)만검색)lOneLevel

출처 : http://cafe.naver.com/walnuts/48

블로그 이미지

레몬도리 LemonDory

개발자의 이야기

  
    Private Sub Form_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        Dim xOffset As Integer
        Dim yOffset As Integer

        If e.Button = MouseButtons.Left Then
            xOffset = -e.X - SystemInformation.FixedFrameBorderSize.Width
            yOffset = -e.Y - SystemInformation.FixedFrameBorderSize.Height
            mouseOffset = New Point(xOffset, yOffset)
            isMouseDown = True
        End If
    End Sub

    Private Sub Form_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        If isMouseDown Then
            Dim mousePos As Point = Control.MousePosition
            mousePos.Offset(mouseOffset.X, mouseOffset.Y)
            Location = mousePos
        End If
    End Sub

    Private Sub Form_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
        If e.Button = MouseButtons.Left Then
            isMouseDown = False
        End If
    End Sub

블로그 이미지

레몬도리 LemonDory

개발자의 이야기

배열이나 기타 변수에 Nothing의 값이 있는경우가 있다.
예를 들어 아래와 같이

  
        Dim str(10) As String
        str(1) = "abcdefg..."
        str(2) = "zyx...."
        str(3) = "test...."

        For i As Integer = 0 To str.Length - 1
            If Not str(i) Is Nothing Then
                MessageBox.Show(str(i))
            End If
        Next

위와 같은 배열에 담긴 문자를 메시지박스에 보여주는 간단한 명령들이 있다.
10개의 방을 만들고 1,2,3번 방에 각각 값을 넣었다.
나머지 0, 4,5,6,7,8,9 번 방에 값을 확인 해보면 Nothing값이 들어있다.
 

위와 같은 화면을 볼수 있다.
방에 들어있는 값만 찍어 보고 싶다면 위와 같이 하게 되면 값을 볼수 있다.
블로그 이미지

레몬도리 LemonDory

개발자의 이야기

    Function Cutstring(ByVal Text As String, ByVal startLenth As Integer, 
    Optional ByVal Lenth As Integer = 0) As String
        Dim StringArray() As Byte   '임시 바이트 배열

        Lenth = IIf(Lenth = 0, System.Text.Encoding.GetEncoding("korean").GetByteCount(Text), Lenth)
        '       IIf(true/false, true 일경우 GetByteCount(Text)로 Text의 길이를 저장         , false일경우 lenth를 그대로 저장
        StringArray = System.Text.Encoding.GetEncoding("korean").GetBytes(Text) ' 배열에 값 저장

        Return System.Text.Encoding.GetEncoding("korean").GetString(StringArray, startLenth, Lenth)
        ' GetStrign(배열, 시작, 끝)을 입력한다
    End Function

블로그 이미지

레몬도리 LemonDory

개발자의 이야기

Form 속성에서 KeyPreview 값을 True로 선택한 뒤 Form Event에서 KeyDown 이벤트를 선택하고 아래와 같이 이벤트를 작성합니다.
  
 Private Sub _KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        Select Case e.KeyCode
            Case Keys.F1  '조회 
                CmdSearch_Click(sender, e)
            Case Keys.F2 '등록
                CmdInsert_Click(sender, e)
            Case Keys.F3 '삭제
                CmdDelete_Click(sender, e)
            Case Keys.F4 '종료
                CmdExit_Click(sender, e)
        End Select
    End Sub

블로그 이미지

레몬도리 LemonDory

개발자의 이야기

  
 Select Case 문자열
            Case Insert    '등록
                If MsgBox("등록하시겠습니까?", MsgBoxStyle.OkCancel, "등록") = MsgBoxResult.Cancel Then
                    Exit Sub
                End If
            Case Search   '조회
                If MsgBox("조회하시겠습니까?", MsgBoxStyle.OkCancel, "조회") = MsgBoxResult.Cancel Then
                    Exit Sub
                End If
            Case Update    '수정
                If MsgBox("수정하시겠습니까?", MsgBoxStyle.OkCancel, "수정") = MsgBoxResult.Cancel Then
                    Exit Sub
                End If
            Case Delete    '삭제
                If MsgBox("삭제하시겠습니까?", MsgBoxStyle.OkCancel, "삭제") = MsgBoxResult.Cancel Then
                    Exit Sub
                End If
        End Select
        Me.Cursor = WaitCursor   ' 커서 상태

        SqlCommandText_Create(CRUD)      'SqlCommandText를 생성한다.
        SqlCommand_Execute(CRUD)     'Sql을 실행한다.

        Me.Cursor = DefaultCursor   '커서 상태 변경

블로그 이미지

레몬도리 LemonDory

개발자의 이야기

  
 If CRUD = "I" Then
            Try
                Dim BamCommand As New OracleCommand(SQLCommandText, BamDataBase)

                Dim Excuted As Integer = BamCommand.ExecuteNonQuery()
                If Excuted = 1 Then
                    WriteToStatusBar("정상적으로 등록되었습니다", MdiParent)
                End If
            Catch E As Exception
                OracleErrorMessage(E)
            End Try
        Else
            Dim BamCommand As New OracleCommand(SQLCommandText, BamDataBase)
            Try
                Dim myReader As OracleDataReader
                myReader = BamCommand.ExecuteReader()
                SqlCommand_Result(myReader, CRUD)
                myReader.Close()

            Catch E As Exception
                OracleErrorMessage(E)
            End Try
        End If
블로그 이미지

레몬도리 LemonDory

개발자의 이야기

KeyDown 이벤트를 만들어 봅시다 
 Private Sub KeyDown(ByVal sender As System.Object, ByVal e As System.
Windows.Forms.KeyEventArgs) Handles .KeyDown 
'비주얼 베이직입니다. 
End Sub
버튼이 눌러졌을 때 어떤것이 뜨는지 확인 하려면
MessageBox.Show(e.keyCode)
MessageBox.Show(e.shift)
찍어보시면 숫자로 뜨게 됩니다. 다음은 Ctrl + C 를 눌렀을때 발생하게 됩니다.
If e.keyCode = 67 And e.shift = 2 Then 
MessageBox.Show("Ctrl + C") 
End If
아래는 2005 이전에서 사용했던거 같습니다. 2005 이전버전이 없기에 테스트를 못했습니다. 2005 버전에선 사용이 안되는군요...
vbLeftButton     ' 마우스 왼쪽 버튼 
vbRightButton    ' 마우스 오른쪽 버튼 
vbMiddleButton   ' 가운데 버튼

vbShiftMask     ' Shift 키 
vbCtrlMask      'Ctrl 키 
vbAltMask       ' Alt 키
블로그 이미지

레몬도리 LemonDory

개발자의 이야기