[Access] Wachtwoordprompt bij gelinkte Oracle tabel omzeilen

Pagina: 1
Acties:

  • Maasluip
  • Registratie: April 2002
  • Laatst online: 15:59

Maasluip

Kabbelend watertje

Topicstarter
Ik heb een bestaande Access database met daarin (o.a.) een gelinkte tabel naar Oracle. De bedoeling is dat data uit die gelinkte tabel geselekteerd wordt en geappend wordt aan een tabel in Access.
Nu is het altijd zo dat je de eerste keer dat je zo'n gelinkte tabel opent, je een prompt krijgt waarin je de usernaam en wachtwoord voor Oracle moet invoeren. Dit wordt in deze Access database echter onderhuids gedaan in een loginprocedure. Ik hoef dus nooit voor die tabel de Oracle usernaam en wachtwoord in te geven. Dit is voor de gebruiker ook niet bekend, die wordt op een hele sneaky manier via een stored procedure uit een andere database gehaald.
Dit gaat ook goed als ik in Access een append query maak.

Maar nu heb ik die append query in VBA gemaakt, en dan vraagt hij wel opeens naar usernaam en wachtwoord van Oracle!
Hoe kan ik dat omzeilen?

De query heb ik met ADODB gemaakt en ziet er zo uit:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Dim sQuery As String
    Dim rs As New ADODB.Recordset
    
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    cn.ConnectionString = CurrentProject.Connection
    cn.Open
    
    'run append query
    sQuery = 'hele grote append query

    rs.Open sQuery, cn, adOpenKeyset, adLockPessimistic, adCmdText
    
    'rs.Close
    cn.Close
Om die Oracle loginprompt te omzeilen, moet ik dan op de een of andere manier de connectionstring naar die Oracle DB laten verwijzen? Dat zou ik denk ik nog wel voor elkaar krijgen, als ik tenminste de connectionstring uit de login form naar dit form kan krijgen.

Zijn er nog andere tips of mogelijkheden?

Signatures zijn voor boomers.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Je kunt toch gewoon de oracle username en password in de connectiestring opnemen?

code:
1
Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Username;Pwd=asdasd;"


Afhankelijk van welke driver je gebruikt natuurlijk.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Maasluip
  • Registratie: April 2002
  • Laatst online: 15:59

Maasluip

Kabbelend watertje

Topicstarter
Dat werkt niet, dan krijg ik de meest vreemde errors. De uiteindelijke query werkt als ik cn.ConnectionString = CurrentProject.Connection gebruik (maar dan moet ik handmatig username en password ingeven), als ik de connectionstring naar Oracle ombuig (wat bij mij trouwens OLE DB is, dus "Provider=msdaora;Data Source=MyOracleDB;User Id=UserName;Password=asdasd;" ) dan krijg ik "ORA-00928: missing SELECT keyword"
Gebruik ik een simpelere query (met alleen tabellen uit de Access databank), dan krijg ik "ORA-00942: table or view does not exist".

Zo te zien heb ik op dat moment dus alleen maar een verbinding met de Oracle databank en niet meer met de Access databank waar ik in werk. En die heb ik ook nodig.

Signatures zijn voor boomers.


  • CubicQ
  • Registratie: September 1999
  • Laatst online: 13:14
Ik heb dit alleen via MS SQL Server gedaan, en niet via Acces, dus misschien klopt het niet wat ik hierna zeg, maar misschien heb je er iets aan.

Bij MS SQL Server kan je op zo'n moment een linked server aanmaken (met behulp van die OLE DB provider); bij het aanmaken van die linked server geef je de username en wachtwoord op, daarna kan je met een prefix (of via een SP) via de MS SQL Server verbinding bij de gegevens uit Oracle komen. Misschien heeft access soortgelijke functionaliteit.