2. TNS 설정을 해주고.
3. ADODB를 이용해 접속 하면 됩니다.
예제 코드는 아래와 같습니다.
[CODE type="visual basic"]
VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Begin VB.Form Form1
Caption = "정보 조회 v0.1"
ClientHeight = 7635
ClientLeft = 60
ClientTop = 345
ClientWidth = 10605
LinkTopic = "Form1"
Picture = "Form1.frx":0000
ScaleHeight = 7635
ScaleWidth = 10605
StartUpPosition = 3 'Windows 기본값
Begin VB.CommandButton btnExport
Caption = "내보내기"
Height = 375
Left = 8040
TabIndex = 7
Top = 240
Width = 1215
End
Begin MSFlexGridLib.MSFlexGrid lstResult
Height = 6735
Left = 0
TabIndex = 6
Top = 840
Width = 10455
_ExtentX = 18441
_ExtentY = 11880
_Version = 393216
Rows = 1
Cols = 1
FixedRows = 0
FixedCols = 0
AllowUserResizing= 1
End
Begin VB.TextBox txtMDN
Height = 270
Left = 3600
TabIndex = 1
Text = "01192900725"
Top = 240
Width = 2295
End
Begin VB.ComboBox cmbOp
Height = 300
Left = 720
Style = 2 '드롭다운 목록
TabIndex = 2
Top = 240
Width = 2055
End
Begin VB.Frame Frame1
Caption = "조회"
Height = 735
Left = 0
TabIndex = 0
Top = 0
Width = 9495
Begin VB.CommandButton Command1
Caption = "조회"
Height = 375
Left = 6000
TabIndex = 5
Top = 240
Width = 1935
End
Begin VB.Label Label2
Caption = "MDN"
Height = 255
Left = 3000
TabIndex = 4
Top = 240
Width = 495
End
Begin VB.Label Label1
Caption = "정보"
Height = 255
Left = 240
TabIndex = 3
Top = 240
Width = 495
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Public adocn As ADODB.Connection
Public Excel As Object
Private Sub dbCon()
Dim Cnn_Str$
Set adocn = New ADODB.Connection
Cnn_Str = "Provider=MSDAORA.1;Password=******;User ID=******;Data Source=서비스명;Persist Security Info=True;"
adocn.Open Cnn_Str
End Sub
Private Sub loadConfig()
' 설정파일을 읽는다.(미구현)
End Sub
Private Sub initForm()
cmbOp.AddItem "요금제 정보"
cmbOp.AddItem "빌링 정보"
cmbOp.AddItem "정액제 정보"
cmbOp.Text = cmbOp.List(0)
End Sub
Private Function getQuery(opIndex As Integer) As String
Select Case opIndex
Case 0
getQuery = "SELECT * FROM TABLE1 A, TABLE2 B"
getQuery = getQuery & "WHERE A.PRODUCT_ID = B.PRODUCT_ID AND A.MDN = '" & txtMDN.Text & "' "
Case 1
getQuery = "SELECT * FROM TABLE2 A, TABLE3 B"
getQuery = getQuery & "WHERE A.PRODUCT_ID = B.PRODUCT_ID AND A.MDN = '" & txtMDN.Text & "' "
Case 2
getQuery = "SELECT * FROM TABLE3 A, TABLE1 B"
getQuery = getQuery & "WHERE A.PRODUCT_ID = B.PRODUCT_ID AND A.MDN = '" & txtMDN.Text & "' "
End Select
End Function
Private Sub btnExport_Click()
Dim row As Integer
Dim col As Integer
If lstResult.Rows <= 1 Then
MsgBox "먼저 조회 하세요", , "에러"
Exit Sub
End If
If MsgBox("정말 내보낼까요?", vbYesNo, "정말?") <> vbYes Then
Exit Sub
End If
' 엑셀 Object 생성
If Excel Is Nothing Then
Set Excel = CreateObject("Excel.Application")
Else
Set Excel = GetObject(, "Excel.Application")
End If
Excel.Visible = True
Excel.Workbooks.Add
Excel.ActiveSheet.Name = txtMDN.Text
For row = 0 To lstResult.Rows - 1
For col = 0 To lstResult.Cols - 1
Excel.ActiveSheet.Cells(row + 1, col + 1).NumberFormatLocal = "@"
Excel.ActiveSheet.Cells(row + 1, col + 1).Value = lstResult.TextMatrix(row, col)
Next col
Next row
End Sub
' 선택한 쿼리로 조회 한다.
Private Sub Command1_Click()
Dim col As Integer
Dim row As Integer
Dim sqlStr As String
Dim adorec As ADODB.Recordset
' 유효성 체크
If txtMDN.Text = "" Then
MsgBox "전화번호를 입력하세요", , "에러"
End If
Screen.MousePointer = vbHourglass
' 쿼리 선택
sqlStr = getQuery(cmbOp.ListIndex)
' DB
Set adorec = New ADODB.Recordset
adorec.Open sqlStr, adocn, adOpenForwardOnly
' Clear
lstResult.FixedRows = 0
lstResult.Cols = 0
lstResult.Rows = 1
lstResult.Clear
Screen.MousePointer = vbArrow
If Not adorec.EOF Then
' Title
lstResult.AddItem ""
lstResult.FixedRows = 1
lstResult.Cols = adorec.Fields.Count
row = 0
For col = 0 To lstResult.Cols - 1
lstResult.TextArray(col) = adorec.Fields(col).Name
Next col
' Data Insert
Do While Not adorec.EOF
lstResult.AddItem ""
row = row + 1
For col = 0 To lstResult.Cols - 1
If adorec.Fields(col).Value <> "" Then
lstResult.TextMatrix(row, col) = adorec.Fields(col).Value
End If
Next col
adorec.MoveNext
Loop
Else
MsgBox "조회결과가 없습니다", , "에러"
End If
' Release
adorec.Close
Set adorec = Nothing
End Sub
Private Sub Form_Load()
loadConfig
initForm
dbCon
End Sub
Private Sub Form_Resize()
On Error Resume Next
lstResult.Move 0, Frame1.Top + Frame1.Height, Form1.Width - 10, Form1.Height - (Frame1.Top + Frame1.Height) - 10
End Sub
[/CODE]
주요 서브루틴을 설명하면..
Private Sub dbCon() 에서 오라클 DB에 연결하고,
Private Sub Command1_Click() 에서는 쿼리를 이용해 실제 Data를 가져와서
MSFlexGrid에 데이타를 넣습니다.
Private Sub btnExport_Click() 에서는 엑셀을 열어 워크시트를 하나 생성하고,
MSFlexGrid에 있던 데이타를 넣습니다.
오랜만에 VB를 할려니 삽질이네요.
하지만 역시 잘아는 VC보다도 생산성이 좋네요 ㅎㅎ
'Dev > Visual Basic' 카테고리의 다른 글
MDI에서 특정 자식창을 하나만 띄우기 (0) | 2003.07.18 |
---|---|
항상 위 효과 내기 (0) | 2003.07.18 |
폴더 만들기 ( 부모 폴더가 없을경우에는 부모 폴더도 만듬) (0) | 2003.07.18 |
전체 경로를 받아 파일명 또는 폴더명만 얻기 (0) | 2003.07.18 |