2015-01-02 4 views
1

한 모듈/양식에서 데이터베이스 연결을 만들고 다른 모듈에서 동일한 데이터베이스 연결 (왼쪽 열어서)에 액세스 할 수있는 기본적인 방법이 있습니까?공유 adodb 모듈 간 연결 VBA

SQL 서버를 요청하는 팝업 창이 나타나서 사용자가 선택할 데이터베이스를 수집합니다. 그럼 내가하려고하면 연결을 사용하여 다른 모듈에 공개 선언 된 db에 연결하지 않는가?

이것이 의미있는 일입니까, 그렇다면 주위에 방법이 있습니까?

내 열린 연결 기능입니다,하지만 난 다른 모듈에서 CONN (제대로) 액세스 할 수없는 것
Public conn As ADODB.Connection 
Public Function openConnection(Optional DB As String) 
Dim str As String 
str = "Provider=SQLOLEDB;Server=" & Me.tbx_serverName.Text 
If (Not IsEmpty(DB)) Then 
str = str & ";Database=" & DB 
End If 
str = str & ";UID=" + tbx_dbuser.Text + " ;PWD=" + tbx_dbpass.Text + ";" 

On Error Resume Next 
    If conn Is Nothing Or conn.Status = 0 Then 
     Set conn = New ADODB.Connection 
     conn.Open str 
    End If 

If (conn.State = adStateOpen) Then 
If (Not IsEmpty(DB)) Then 
Me.lbl_connecteddb.Caption = "Connected to Database:" + DB 
Else 
Me.lbl_connecteddb.Caption = "Connected to Database:" + Me.ComboBox1.SelText 
End If 
Else 
Me.lbl_connecteddb.Caption = "Error" 
End If 

End Function 

는 IE는

답변

2

("BLAH SELECT * FROM") RS = conn.execute을 설정하면 선언 할 수 있어야합니다. 할당하고 ADODB.Connection을 열고 두 번째 하위 매개 변수를 통해 다른 하위로 전달하십시오.

sub Start_Here() 
    Dim str As String, conn As ADODB.Connection 

    str = "Provider=SQLOLEDB;Server=" & Me.tbx_serverName.Text 
    If (Not IsEmpty(DB)) Then 
     str = str & ";Database=" & DB 
    End If 
    str = str & ";UID=" + tbx_dbuser.Text + " ;PWD=" + tbx_dbpass.Text + ";" 

On Error Resume Next 
    If conn Is Nothing Or conn.Status = 0 Then 
     Set conn = New ADODB.Connection 
     conn.Open str 
    End If 

    Call Then_Here(conn) 

    'remember to close conn before exit 
end sub 

sub Then_Here(next_conn As ADODB.Connection) 
    debug.print next_conn.Status 
    'use open next_conn here 
end sub 
+0

도움 주셔서 감사합니다! 내가 할 수 있지만 다른 하위 모듈 Then_Here, 그리고 여전히 전화를하고 연결을 전달할 수 있을까? – Lacko

+0

@Lacko - 공공 및 민간 하부 조직에 대한 조사를해야 할 필요가있는 것 같습니다. – Jeeped

+0

넵, 그냥 내가 물었던 것을 깨달았다! 죄송합니다. 도움에 감사드립니다! – Lacko