Avatar billede Ialocin Novice
17. november 2009 - 12:35 Der er 8 kommentarer og
1 løsning

Hvordan åbnes en link-database permanent med VBA ?

Hej Eksperter.

Jeg har delt en Access database og vil gerne ha´ min link-database (den med alle tabellerne) åben permanent, så lang tid min tilhørende Applikationsdatabase (den med formularer, forespørgsler, moduler og rapporter) er åben.

Har læst mig frem til, at det skulle kunne gøres ved at oprette en tom tabel i link-databasen og efterfølgende kalde denne via Applikationsdatabasen med "OpenRecordset".

Spørgsmålet er bare hvordan det gøres ... og gerne så simpelt som muligt ??

På forhånd tak, Nicolai
Avatar billede mugs Novice
17. november 2009 - 12:46 #1
Jeg forstår simpelthen ikke dit spørgsmål.

Det du kalder link-database hedder Back-end.
Det du kalder Applikationsdatabase hedder Front-end.

Der er absolut ingen grund til, at back-end skal være åben. Så at sige er den jo åben, da Front-end læser i tabellerne. Du bør ALDRIG give brugerne adgang til tabellerne. Så hvad er pointen med at have den åben, hvad vil du læse?
Avatar billede terry Ekspert
17. november 2009 - 12:47 #2
Why do you need to open the backend dB?

You can open it using automation.

http://www.mvps.org/access/forms/frm0034.htm
Avatar billede Ialocin Novice
17. november 2009 - 13:28 #3
Kære Venner

Det handler om hsatighed ... og følgende tekst er sakset fra dette MS link:
http://office.microsoft.com/da-dk/access/HP051874531030.aspx


"Hvis du anvender en sammenkædet tabel på et netværk eller i en SQL-database, får du de bedste resultater, hvis du følger disse retningslinjer:

Ydeevnen ved åbning af hoveddatabasen, tabeller og formularer kan forbedres meget ved at tvinge den sammenkædede database til at forblive åben. Hvis du vil gøre dette, skal du oprette en tom tabel i den sammenkædede database og sammenkæde tabellen i hoveddatabasen. Derefter skal du bruge metoden OpenRecordset til at åbne den sammenkædede tabel. Dette forhindrer Microsoft Jet-databasemotoren i at åbne og lukke den sammenkædede database og oprette og slette den associerede .ldb-fil gentagne gange"


Er der andre gode forslag ??

Mvh, Nioclai
Avatar billede Slettet bruger
17. november 2009 - 16:35 #4
metode 1:
Formular med en linket tabel som datakilde - og åbne den skjult:

docmd.OpenForm "<navnet på den skulte form>",acNormal,,,,acHidden

Det skal udføres ved start af frontenden (makro autoExec eller kald fra start formular)

Jeg kan ikke se, at det behøver at være en særskilt tabel til formålet - bare en af de linkede, der er der i forvejen.

metode 2:
Før funktioner og procedurer i et standardmodul:
public rs as dao.recordset

Følgende skal da køres ved start

set rs=currentdb.openrecordset("<name of linked table>")

ELLER

set rs=DBEngine.Workspaces(0).OpenDatabase("pathname of backend").OpenRecordset("table name in backend")

Hvis alt fungerer, skal man da huske at afvikle følgende ved lukning af frontenden:

rs.close

MEN .., det gør det heller ikke altid - i praksis kan kodefejl andre stede, gøre at alle variable (rs er en global variabel) cleares - så:

if not (rs is nothing) then rs.close
Avatar billede Ialocin Novice
17. november 2009 - 23:43 #5
Hej Ellebe

Jeg bukker og takker for din kommentar.
Den første metode virker efter hensigten, så send et svar og jeg skal returnere lidt point :o)

Obs:
Den anden metode har jeg ikke afprøvet.

Med venlig hilsen, Nicolai
Avatar billede terry Ekspert
18. november 2009 - 09:25 #6
I think there is a bit of confusement over what you actually want(ed).

In your question you said>
"vil gerne ha´ min link-database (den med alle tabellerne) åben permanent, så lang tid min tilhørende Applikationsdatabase (den med formularer, forespørgsler, moduler og rapporter) er åben."

In other words the BACKEND database.

Then to ellebe' comment "Skrevet tir. d. 17. november 2009 kl. 16:35:43| #4 "

You say that the first method works, but that doesnt do what you asked for!

Anyway if your happy with what you got then great :o)
Avatar billede Slettet bruger
18. november 2009 - 11:58 #7
Her er så et svar - men lad os først høre om Terry har en bedre løsning - altså medmindre det blot skyldes forvirring omkring 'åben' som Mugs udtrykker med: 'Der er absolut ingen grund til, at back-end skal være åben'

Jeg uddyber: der er ikke tale om at backenden er åben som ms-Access applikation - det er blot tale om at visse resourcer omkring connectivity til backenden forbliver åbne. 

til Terry: Virker det ikke eller skal det laves på en anden måde?


eller bør slet ikke bekymre sig om backenden 'lukker' - andre (udviklingsfolkene hos Microsoft) har udtænkt at når ingen andre frontend tilgår tabeller, så lukker noget 'database connection'.
(.ldb filen i samme mappe som backenden forsvinder)

Udviklingsfolkene hos Microsoft kan argumentere med, at det forhold at ingen frontends tilgår datakilder er et udmærket signal til at frigive resourcer - der kan jo ikke være det store behov for  data når alle lukker alle deres formularer!
Avatar billede terry Ekspert
18. november 2009 - 12:17 #8
"det blot skyldes forvirring omkring 'åben' som Mugs udtrykker med: 'Der er absolut ingen grund til, at back-end skal være åben'"

:o)
Avatar billede Ialocin Novice
18. november 2009 - 14:37 #9
Hej Alle.

Kan I høre hvad jeg ser ??

Det korte af det lange er, at Ellebe´s løsning er den jeg søgte.

Med venlig hilsen og mange tak for jeres indlæg.

Nicolai
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