20. august 2001 - 17:19Der er
18 kommentarer og 1 løsning
Kald af macro fra et andet program
Jeg har en PC som styrer en maskine. Et operatør program bruger access som db, og det kører fint. Ligeledes kaldes en udskrift macro OK. MEN en anden macro for at komprimere databasen kan jeg ikke få til at køre. Macroen er bygget op via taste funktion, og hedder således \"%kfe\", for at komprimere, og den kører fint fra access, men jeg kan ikke aktivere den fra det andet program. Nogen gode forslag
Måske skal jeg lige nævne at operatørprogrammet har VBA inkluderet, og det er via dette at access kaldes. Fra et endet spørgsmål er foreslået: Application.DBEngine.CompactDatabase \"C:\\Data.mdb\", \"C:\\DataComp.mdb\" men jeg får det ikke helt til at virke
Tjaaa nu er vi ude hvor jeg vist ikke kan bunde, men det er Visual Basic for Application. Som jeg hr forstået det, så har udbyderen af operatør programmet købt en del af basic softwaren til at bruge i sit eget program. Derfor er der også funktioner som ikke kan udføres som eks funktionen AcCommandCompactDatabase (hed en vist), hvor jeg ellers troede jeg havde fundet de vise sten.
Jeg ved ikke om det var svar på dit spørgsmål, men jeg bruger VBA dele til at foretage alle DB forespørgsler/skrivninger
Velkommen til den forunderlige verden af problemer med komprimering af Access db :-) ( undskyld jeg kunne ikke lade være )
Som jeg forstår dit problem, så vil du komprimere databasen fra en applikation mens en anden har fat på den også - det kan man ikke ! Man skal være 100% sikker på at databasen kan låses exclusivt før det er muligt at komprimere. Jeg har selv tidligere lavet et modul med nogle funktioner der kan checke om db kan låses o.s.v.
Jeg kan ikke give dig et endegyldigt svar på hvordan du gør, men kun sige at du absolut ikke er alene :-)
As hugopedersen says, your database must not be in use by others, so before you are allowed to compact it you will have to terminate other applications using the database. In other words, you must be able to open the database exclusivly!
Once this is done you can use either the method mentioned by Thomas, or the DBEngine.CompactDatabase method.
Jeg har måske udtryke mig lidt uheldig, men jeg har kun et program som komm med access. Fra dette program (VBA) har jeg nu fundet ud af komprimere via DBEngine.Compact metoden (jubiii). Men det går kun hvis access er lukket ned????
Det med at låse exclusiv forstår jeg ikke helt ??? Skal jeg i skriptet slukke for hele access eller blot den aktuelle fil (??), køre komprimeringen, og derefter kalde databasen \"til live\" igen, eller hvilke muligheder har jeg.
123... Access is a program (.EXE) in its own right. It can be used to open an Access database, for example a .mdb file.
To open an Access database (.mdb) it is not necessary to have Access (.EXE) installed. You can use for example a Visual Basic program. Your VBA program you mention, is this a Visual Basic program?
If you open the .mdb file in Access and also open it from a VB (VBA?) program there are now two (users) using the database. When you are in this situation you can NOT compact the database. So yes, you can only do this when Access is closed and only the VB (VBA?) program is running.
It is possible to open an Access database (.mdb) exclusivly. This means that others can not open it at the same time. This allowes you to compact the database without others interfering. NOTE: If you are sure that others are NOT using the database when you compact then you need not worry about it being opened (locked) exclusivly.
So you should ensure that all applications using the .mdb file are closed. Then you can use the DBEngine.Compact metod from your VB (VBA?) program to compact the .mdb file. Once this is complete you can start using the database (.mdb) from Access (EXE) or other VB (VBA) programs.
Jeg ved ikke rigtig om det hjælper.....For at få data fra mit VBA program er det nødvendig at access.exe er åben og at dette program har åbnet databasen .mdb. Ellers kan jeg ikke hente data frem til operatøren. Bla kalder jeg nogle macro i access som finde data frem som jeg skal bruge, ud fra nogle kreterier som jeg har skrevet i databasen. Så jo der er vel 2 brugere af databasen. Den er også indstillet til \"delt\" adgang (altså ikke \"eksklusiv\").
Så ud fra det du skriver terry, så skal jeg fra VBA lukke access.exe...komprimer...og så åbne access.exe igen
Jeg kender bare ikke VBA koden for dette.
PS VBA er VB, blot i et light udgave, og som så følger med mit operatør program/software. (Visual Basic for Applications)
123...-> Du behøver jo ikke at lukke MSAccess.exe. Du skal bare have lukket alle forbindelser til den pågældende .mdb. Det være sig enten fra Access eller fra en anden applikation.
Normalt skal access ikke køre det er korrekt, men jeg har lavet nogle macroér i access som jeg kalder, og derfor har jeg access til at stå åben under driften. Jeg kan godt se bagefter at det skulle ikke have været programmeret sådan, men det er for sent nu.
Til Thomas, ja det lyder korrekt, men jeg ved bare ikke hvordan jeg gør dette, altså at lukke alle forbindelserne??
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.