C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[44277] 빌더에서 사용하는 ORACLE DB 용 DLL만들기 질문이영~~^^
쏘세지 [hacker004] 1799 읽음    2006-03-27 10:02
원래는 VB를 사용하다 지금 갑자기 빌더로 넘어오게 되었습니다.
일반적으로 VB에서는 모듈로 만들어 사용했습니다.
(참고:아래와 같이...)
그런데 이런걸 빌더에서는 어떤식으로 만들어 사용해야 되는지
제가 지금 화면을 다 DLL로 만들어 하나의 프로젝트에 포함시켜 사용하고 있습니다.
각각 개별의 작업을 하는 화면인지라..
위에 VB소스 처럼 사용하려구 하는데
만들어 놓으신게 있으면 참고 하려고 하는데 도움좀 부탁드립니다.
DLL로 만들어야 되나영? DLL로 만들경우 화면에서 포함하게 되면 여러번 connect를 해야 될것 같은데..
어떤식으로 만들어야 되는지..혹시 만든신게 있다면 공개해주실순 있는지....
빌더는 첨인지라 많이 헤메게 되네영 그럼 즐 프하세영 참고로 여기서 제 나름대로 찾아봤는데
없어서 질문 올립니다~~^^

Option Explicit

'=====================================================================================================
' DB와 연결 종료
'=====================================================================================================

Public Sub AdoDisConnect()

    If AdoCon.State = adStateOpen Then
       AdoCon.Close
       Set AdoCon = Nothing
    End If

End Sub

'=====================================================================================================
' DB와 연결
'=====================================================================================================

Public Function AdoConnect() As Boolean

    Dim strConn     As String

    On Error GoTo Error_Process
    Screen.MousePointer = 11

   
    'strConn = "Provider=OraOLEDB.Oracle.1;Data Source=" & gDB_SERVER & ";User ID=" & gDB_USERID & ";Password=" & gDB_PASSWORD & ";"
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=D:\신동아화재\Source\Source_20060206\DB\표준화데이터DB\db1.mdb;"
    Set AdoCon = New ADODB.Connection
    AdoCon.ConnectionTimeout = 10
    AdoCon.CursorLocation = adUseClient
    AdoCon.Open strConn
    Screen.MousePointer = 0

    AdoConnect = True
    Exit Function

'에러 체크
Error_Process:
    Screen.MousePointer = 0

    MsgBox "DB Connection(Ado)을 하지 못했습니다" & vbCrLf & vbCrLf _
            & "Error Number : " & Err.Number & vbCrLf _
            & "Description  : " & Err.Description, vbCritical, "DB Connect Error"
    AdoConnect = False
End Function

'=====================================================================================================
' SELECT
'=====================================================================================================

Public Function AdoQyOpenSet(ByRef adoRS As ADODB.Recordset, ByVal sql As String, ByRef nRecordCount As Long) As Boolean

    On Error GoTo ADOError:

    nRecordCount = 0

    Set adoRS = New ADODB.Recordset
    adoRS.CursorType = adOpenStatic
    adoRS.LockType = adLockReadOnly
    adoRS.CursorLocation = adUseClient

    adoRS.Open sql, AdoCon

    If Not adoRS.EOF Then
        nRecordCount = adoRS.RecordCount
    End If

    AdoQyOpenSet = True

Exit Function
ADOError:

    Set adoRS = Nothing
    AdoQyOpenSet = False
    DisplayADOError
    Screen.MousePointer = 0

End Function

'=====================================================================================================
' UPDATE,INSERT,DELETE
'=====================================================================================================

Public Function AdoQyExec(ByVal sql As String) As Boolean

    On Error GoTo ADOError:

    If sql <> "" Then
        Call AdoCon.Execute(sql)
    End If

    AdoQyExec = True

Exit Function

ADOError:
    AdoQyExec = False
    DisplayADOError
    Screen.MousePointer = 0

End Function

'=====================================================================================================
'  Recordset을 닫는다.
'=====================================================================================================

Public Sub AdoCloseSet(ByRef adoRS As ADODB.Recordset)

    If adoRS.State = adStateOpen Then
        adoRS.Close
        Set adoRS = Nothing
    End If

End Sub

'=====================================================================================================
'  Select한 결과를 필드 단위로 Error Check 한다.(String의 경우)
'=====================================================================================================

Public Function AdoGetString(ByRef adoRS As ADODB.Recordset, ByVal AdoCol As String, ByVal adPosBOF As Long) As String

    On Error GoTo ReadError

    adoRS.AbsolutePosition = adPosBOF + 1          '현재레코드의 위치
    AdoGetString = Trim(adoRS.Fields(AdoCol).Value & "")
    Exit Function

ReadError:

    Dim strTemp     As String

    AdoGetString = ""
    strTemp = ", Form Name : " & Screen.ActiveForm.Name & "-" & Screen.ActiveForm.ActiveControl.Name

    Select Case Err.Number
           Case 40041      'Invalid Column Name
                Debug.Print "AdoGetString Error -  Invalid Column Name - " & AdoCol & strTemp
           Case 40022      'Invalid Position Number
                Debug.Print "AdoGetString Error -  Invalid Position Number - " & AdoCol & "(" & CStr(adPosBOF) & ")" & strTemp
           Case 91
           Case 94
           Case Else
                Debug.Print "AdoGetString Error - " & RTrim(Str(Err.Number)), Err.Description & strTemp
    End Select

End Function

'=====================================================================================================
'  Select한 결과를 필드 단위로 Error Check 및 Null 값 체크한다.(Number의 경우)
'=====================================================================================================

Public Function AdoGetNumber(ByRef adoRS As ADODB.Recordset, ByVal AdoCol As String, ByVal adPosBOF As Long) As Double

    On Error GoTo ReadError

    adoRS.AbsolutePosition = adPosBOF + 1 '현재레코드의 위치
    AdoGetNumber = IIf(IsNull(adoRS.Fields(AdoCol).Value), 0, adoRS.Fields(AdoCol).Value)
    Exit Function

ReadError:

    Dim strTemp     As String

    AdoGetNumber = 0
    strTemp = ", Form Name : " & Screen.ActiveForm.Name & "-" & Screen.ActiveForm.ActiveControl.Name

    Select Case Err.Number
           Case 40041      'Invalid Column Name
                Debug.Print "AdoGetNumber Error -  Invalid Column Name - " & AdoCol & strTemp
           Case 40022      'Invalid Position Number
                Debug.Print "AdoGetNumber Error - Invalid Position Number - " & AdoCol & "(" & CStr(adPosBOF) & ")" & strTemp
           Case 91
           Case 94
           Case Else
                Debug.Print "AdoGetNumber Error - " & RTrim(Str(Err.Number)), Err.Description & strTemp
    End Select

End Function

'=====================================================================================================
' Ado에 대한 Error을 디스플레이 한다.
'=====================================================================================================

Public Sub DisplayADOError()

    Dim er      As ADODB.Error

    For Each er In AdoCon.Errors
        MsgBox "Number    : " & er.Number & vbCrLf & _
               "Text      : " & er.Description & vbCrLf & _
               "SQL State : " & er.SqlState & vbCrLf & _
               "Source    : " & er.Source & vbCrLf & _
               "Native    : " & er.NativeError
    Next

End Sub

'*=====================================================================================================*
' Name        : AdoStrReplace
' Description : SQL문을 받아서 '을 ''로 바꾸어 주는 함수
' Input       : tmpStr - SQL문
' Return      : 바뀐 SQL문
' Date        :
' Update      :
'*=====================================================================================================*
Public Function AdoStrReplace(ByVal tmpStr As String) As String

    tmpStr = Replace(tmpStr, "'", "''")
    tmpStr = Replace(tmpStr, Chr(0), "")
    AdoStrReplace = tmpStr

'    MsgBox Chr(tmpStr)

End Function

'*=====================================================================================================*
' Name        : AdoGetCurrentDate
' Description : 데이타베이스 서버의 서버일자를 가져오는 함수
' Input       : Kind - 1 : Date Only (YYYYMMDD)
'                    2 : DateTime (YYYYMMDDHHMMSS)
'                    3 : DateTime (YYYYMMDD HH:MM:SS)
'                    4 : DateTime (YYYYMMDDHHMMSSMMM)
' Return      : 서버일자
' Date        :
' Update      :
'*=====================================================================================================*
Public Function AdoGetCurrentDate(ByVal kind As Integer) As String

    Dim adoRS   As ADODB.Recordset
    Dim sql     As String

    On Error GoTo ErrorHandler

    Set adoRS = New ADODB.Recordset

    Select Case kind
        Case 1
            sql = "SELECT CONVERT(CHAR(8),GETDATE(),112) AS CURDATE"
        Case 2
            sql = "SELECT CONVERT(CHAR(8),GETDATE(),112)"
            sql = sql + "+REPLACE(CONVERT(CHAR(8),GETDATE(),108),':','') AS CURDATE"
        Case 3
            sql = "SELECT GETDATE() AS CURDATE"
        Case 4
            sql = "SELECT REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(CHAR(23),GETDATE(),121),'-',''),' ',''),':',''),'.','')"
            sql = sql + "AS CURDATE"
    End Select

    adoRS.Open sql, AdoCon, adOpenForwardOnly, adLockReadOnly

    AdoGetCurrentDate = adoRS("CURDATE")

    adoRS.Close
    Set adoRS = Nothing

    Exit Function

ErrorHandler:
    If adoRS.State = adStateOpen Then adoRS.Close
    Set adoRS = Nothing
    MsgBox CStr(Err.Number) & " : " & Err.Description
    AdoGetCurrentDate = ""

End Function

+ -

관련 글 리스트
44277 빌더에서 사용하는 ORACLE DB 용 DLL만들기 질문이영~~^^ 쏘세지 1799 2006/03/27
44282     Re:빌더에서 사용하는 ORACLE DB 용 DLL만들기 질문이영~~^^ 박지훈.임프 1399 2006/03/27
44284         Re:Re:빌더에서 사용하는 ORACLE DB 용 DLL만들기 질문이영~~^^ 쏘세지 1098 2006/03/27
44334             Re:Re:Re:빌더에서 사용하는 ORACLE DB 용 DLL만들기 질문이영~~^^ 박지훈.임프 1225 2006/03/30
44337                 Re:Re:Re:Re:빌더에서 사용하는 ORACLE DB 용 DLL만들기 질문이영~~^^ 쏘세지 1361 2006/03/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.