Hej Jag minns inte, du kanske vet. Kan man anropa API från VBA? Om du kan det: Hur ser din kod ut? Hej Johan! Hej Andreas! Hur har du mappat upp Access mot Oracle? Jag är inte riktigt säker på hur du menar med mappat upp mot oracle. I din anslutningsträn du visat ser jag att du ansluter till en Access databas. Hej! Hej Johankomma åt en inloggningsruta till oracle
Jag har skapat en application med hjälp av VBA i Excel.
Eftersom MsQuery är väldigt lånsam på att returnara stora datamängder från
databasen, så använder jag Access istället.
Jag gör en connection från VBA via ADO till Access för att hämta data.
Detta fungerar helt perfekt.
Mitt problem är att varje gång jag säller en fråga, så blir ett popoup fönster synligt
där jag blir ombedd att slå in användarID och lösen ord.
Id och lösenord har jag, men eftersom jag måste hämta data många gånger under en session
så blir det jobbigt att slå in lösen ordet hela tiden.
Jag undrar går det att komma åt denna inloggningsruta, så jag kan spara ID och PW i variabel
som fyller i ID och PW rutorna när inloggningfönstret poppar upp.
Tacksam för hjälp
MVH/ Stefan HSv: komma åt en inloggningsruta till oracle
1. Deklarera FindWindow och SendMessage
2. Fixa en timer.
3. Kolla om rutan "poppat upp" (id efter klass eller text)
4. Skicka lösen/anv. med SendMessage, WM_SETTEXT och dito med OK-knappen.Sv: komma åt en inloggningsruta till oracle
Skickar du med parameter för användarnamn och lösenord?
Hur många tabeller/frågor/vyer hämtar du värden från?Sv:komma åt en inloggningsruta till oracle
Jag har inte använt API anrop innan i mina apps,
så jag är helt grön när det gäller API
Jag vet att man kan använda API anrop i VBA,
skulle du kunna vidareutveckla dessa funderingar du har.
/Stefan HSv:komma åt en inloggningsruta till oracle
i subrutinen deklarerar jag ADODB.connection, ADODB.recordset och sätter dom.
Deklarerar en strConnection och en strDB.
Jag tilldelar strDB "ThisWorkbook.Path & "\" & "qryProdData.mdb", och
strConnection ""Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strDB & ";" & _
"Jet OLEDB:Database Password=;"
Efter detta skickar jag in min sql-fråga (som är så lång att den får säkert inte plats här)
connection.Open strConnect
recordSet.Open strSql, connection, adOpenForwardOnly, adLockReadOnly
ws.Cells(2, 1).CopyFromRecordset recordSet
recordSet.Close
Set recordSet = Nothing
connection.Close
Set connection = Nothing
Detta fungerar utmärkt, men eftersom jag inte ställer frågan från MSQuery utan går via Access in i Oracel
så poppar det upp en inloggningsruta där jag blir ombedd att skriva ID och lösen ord.
Det är detta jag vill komma ifrån, eftersom under en session kan det bli många beräkningar.
Jag har försökt att sätta id och pw i strConnection, men vad jag förstår så sätter dom bara Id och pw till access.
Stefan HSv: komma åt en inloggningsruta till oracle
ÄR det en/flera länkade tabeller?Sv:komma åt en inloggningsruta till oracle
Det jag har gjort är att jag har skapat en connetction via programmet ODBC administrator
som gör att kommer åt tabellerna genom access eller msQuery.
I detta fallet är det tre tabeller som är länkade med varandra.
Tabell 1 är länkad med tabell 2 i fyra led och tabell 2 är länkad
med tabell 3 i fem led.Sv: komma åt en inloggningsruta till oracle
Du uppger att du hämtar data från en Oracel databas.
I access kan du importera, samt länka tabeller.
Jag drar därför slutsatsen att du har tabeller i din access databas som är länkade till en oracel databas.
Det är när du accessar det tabeller som är länkade till Oracle som en dialog med användaruppgifter oracle kommer upp.
Stämmer detta?Sv:komma åt en inloggningsruta till oracle
Jag löste denna uppgift genom att göra en connection direkt till Oracle via OLEDB eller MSDASQL och skicakade med Sql-strängen.
Men grejen är den att det fortfarande går lånsamt att returnera data, ca 40 sekunder och det är alldeles för lång tid att vänta.
Det tar ungefär 10 sekunder att köra genom access.
Jag får undersöka det andra förslaget med API-anrop.
Tack för hjälpen Andreas
/Stefan HSv:komma åt en inloggningsruta till oracle
Jag har gjort en klassmodul där jag letar upp 'popup' rutan och letar upp respektive textboxar för Pw, servernam och Uid. Därefter fyller jag rutorna med mina login uppgifter. Grejen är den att när jag kör koden så fastnar den när popuprutan dyker upp, och det är väl där som du har tänkt dig att timern kommer in i bilden.
Frågan är hur får jag koden att gå vidare (den stannar när den vill komma åt recordset) så att jag kan använda min Klassmodul för att fylla i inloggningsuppgifterna.
Tacksam för svar
/Stefan H