Avatar billede tg4600 Nybegynder
16. januar 2009 - 08:33 Der er 4 kommentarer

Ændre ODBC-connection via VBA (Access 2007)

Jeg har tidligere (Access2000/2003) brugt denne kode til at skifte mellem forskellige BackEnds (Test/Prod), både Front- og BackEnds har været mbd'er:

:::::::::
Private Sub cboConnectStr_AfterUpdate()
   
    On Error GoTo Err_Handling

    Const Attached = dbAttachedTable Or dbAttachedODBC
    Dim aoForm As AccessObject
    Dim frm As Form
    Dim ctl As Control
    Dim strFont As String
    Dim DB As Database: Set DB = DBEngine(0)(0)
    Dim TD As TableDef: For Each TD In DB.TableDefs
        If (TD.Attributes And Attached) <> 0 Then
            If TD.Connect = cboConnectStr Then GoTo Exit_Code
            TD.Connect = cboConnectStr
            TD.RefreshLink
        End If
    Next
    DB.Properties!AppTitle = "Database - " & DLookup("Database", "tblBackEnds", "ConnectStr = '" & cboConnectStr & "'")
    Application.RefreshTitleBar
    strBackEnd = " - " & DLookup("Database", "tblBackEnds", "ConnectStr = '" & cboConnectStr & "'")

    For Each aoForm In CurrentProject.AllForms
        If aoForm.Name <> Me.Name Then
            DoCmd.Close acForm, aoForm.Name, acSaveYes
            Application.Echo True
        End If
    Next aoForm
   
    Set DB = Nothing

Exit_Code:
    DoCmd.OpenForm "frmMainMenu", acNormal
    DoCmd.Close acForm, "frmSelectBackEnd"
    Application.Echo True
    SysCmd acSysCmdClearStatus
    Exit Sub


Err_Handling:
    Select Case Err.Number
        Case 438
            Resume Next
        Case Else
            Application.Echo True
            MsgBox Err.Description, vbExclamation, "Error " & Err.Number
            Resume Exit_Code
    End Select

End Sub
:::::::::

Jeg sidder nu med et projekt, hvor jeg ønsker at genbruge denne funktionalitet, men kan ikke få den til at virke.

Mit nuværende system har Oracle BackEnds, og Access 2007 FrontEnd.

Jeg har forbindelsen til 'Produktion', og jeg kan manuelt oprette forbindelse til en af tabellerne i 'Test', så der er altså forbindelse.

Men når jeg prøver at ændre ConnectStr via koden får jeg:
'Error 3011'
"The Microsoft Office Access database engine could not find the object 'ACCESS_LOG'.  Make sure the object exists and that you spell its name and the path name correctly."
Avatar billede Slettet bruger
16. januar 2009 - 13:24 #1
oConn.Open "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=DitUsernavn;Pwd=DitPassword"

Burde være den connectionstring, som du skal bruge... byt Server ud med ConnectString hvis det er en ældre version..

Held og lykke!~)
Avatar billede tg4600 Nybegynder
16. januar 2009 - 13:45 #2
OK, jeg bruger godt nok en native oracle-ODBC, og mine connection strings ser (måske derfor) noget anderledes ud:

ODBC;DSN=PROD;UID=MitBrugernavn;PWD=MitPassword;DBQ=PR0D;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;

og

ODBC;DSN=TEST;UID=MitBrugernavn;PWD=MitPassword;DBQ=TEST;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;

Men i den foreslåede streng:
Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=DitUsernavn;Pwd=DitPassword"
kan jeg ikke se hvor database navnet skal stå?

Med mindre Server = Servenavn.Databasenavn ??
Avatar billede Slettet bruger
16. januar 2009 - 14:21 #3
jeg har ikke selv brugt Oracle, så du må prøve dig frem, hvis der ikke kommer hjælp fra andre!~)
Avatar billede tg4600 Nybegynder
19. januar 2009 - 07:42 #4
Det er ikke lykkedes mig at få forbindelse vha. {Microsoft ODBC for Oracle}, er der nogen der kan fortælle mig hvordan {Microsoft ODBC for Oracle} skal sætts op?

Data Source Name: Database instans ?!?
Description:      ?
Username:        "MitBrugernavn"
Server:          Nanet på Oracle-serveren

/TG
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester