|
원래는 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
|