[Access] detectie van opstarten met start-up opties

Pagina: 1
Acties:
  • 186 views sinds 30-01-2008
  • Reageer

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Bij database die ik voor anderen maak stel ik eigenlijk altijd de opstartopties zo vriendelijk mogelijk in voor leken die er uiteindelijk mee moeten werken. Dus geen lange menu's, geen databasevenster, enz.

Juist om het zo gebruiksvriendelijk mogelijk te maken wilde ik het volgende toevoegen aan de VBA-code voor het menu:

code:
1
2
3
Private Sub Form_Unload(Cancel As Integer)
Application.Quit
End Sub


Het idee is dat met het afsluiten van het menu, ook Access wordt afgesloten. Want Access blijft namelijk in de beperkte modus staan, totdat je het programma geheel hebt afgesloten.

Je begrijpt dat bovenstaande er echter toe leidt dat het bewerken van het menu erg onhandig voor me wordt....

Met een zoektocht door de help van Access dacht ik het als volgt te kunnen uitbreiden, maar dit werkt ook niet:

code:
1
2
3
4
5
Private Sub Form_Unload(Cancel As Integer)
If (Application.GetOption("Show Startup Dialog Box")) = True Then
    Application.Quit
End If
End Sub


Heeft iemand heer een idee voor?

Alvast bedankt.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Als je shift ingedrukt houd bij het starten van de applicatie kun je bij je menu's etc. Is dat niet een optie?

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


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
En met de menu's kun je rechtsklikken op formulier en ontwerpweergave kiezen, dan werkt de Quit niet meer.

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
P_de_B schreef op 24 oktober 2004 @ 16:39:
Als je shift ingedrukt houd bij het starten van de applicatie kun je bij je menu's etc. Is dat niet een optie?
Dat weet ik, maar dan werkt die VBA-code nog steeds. Dus als ik dan mijn menu uittest en wegklik wordt nog steeds Access afgesloten....

Dus ik wil nog steeds een if...then constructie aan die Application.Quit code toevoegen.

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Staat het antwoord niet op 'The Access Web'. Ik meen mij te herinneren dat ik daar zo'n antwoord was tegengekomen...

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Woudloper schreef op 25 oktober 2004 @ 17:09:
Staat het antwoord niet op 'The Access Web'. Ik meen mij te herinneren dat ik daar zo'n antwoord was tegengekomen...
Ik kan het daar niet vinden. Herinner je wellicht waar het stond?

Verwijderd

je zou kunnen een dosomgevingsvariabele instellen en daar dan op testen.
als je werkt als gebruiker met beperkte windows rechten, dan moet je in dat geval ook wel access opstarten vanuit de prompt waar je de dosvariabele hebt ingesteld. (even zoeken naar msaccess.exe):

in de prompt:
set QuitAccess=no
padnaaraccess/msaccess.exe

in de
code:
1
2
3
if environ("quitaccess")<>"no" then
  application.quit
end if

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Probeer in je form load eens iets van MsgBox(Command), en dan access opstarten met /myparam ofzo. Command zou moeten teruggeven welke parameters zijn gebruikt bij het opstarten (in VB tenminste, ik weet niet wat Access/VBA ermee doet)...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
RobIII schreef op 27 oktober 2004 @ 10:59:
Probeer in je form load eens iets van MsgBox(Command), en dan access opstarten met /myparam ofzo. Command zou moeten teruggeven welke parameters zijn gebruikt bij het opstarten (in VB tenminste, ik weet niet wat Access/VBA ermee doet)...
Maar dat is de omgekeerde wereld: ik wil dat Access standaard - juist omdat het handig moet zijn voor leken! - opstart met een eenvoudig menu. Ik waardeer het meedenken zeer, begrijp me niet verkeerd, maar dit is een technisch, geen praktische oplossing.

De vraag is alleen: hoe detecteer ik dat Access wordt opgestart volgens de opties zoals die zijn ingesteld in het menu Extra=>Opstarten (of Extra=>Startup).

Ik kan vinden hoe ik dat dialoogscherm moet oproepen via een macro (dus om die opties in te stellen) en allerlei extra schermen, maar niet of Access op die wijze gestart is..... :(

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
TromboneFreakus schreef op 27 oktober 2004 @ 13:05:
[...]


Maar dat is de omgekeerde wereld: ik wil dat Access standaard - juist omdat het handig moet zijn voor leken! - opstart met een eenvoudig menu. Ik waardeer het meedenken zeer, begrijp me niet verkeerd, maar dit is een technisch, geen praktische oplossing.

De vraag is alleen: hoe detecteer ik dat Access wordt opgestart volgens de opties zoals die zijn ingesteld in het menu Extra=>Opstarten (of Extra=>Startup).

Ik kan vinden hoe ik dat dialoogscherm moet oproepen via een macro (dus om die opties in te stellen) en allerlei extra schermen, maar niet of Access op die wijze gestart is..... :(
Je begrijpt me verkeerd. Je zou natuurlijk ook een parameter kunnen meegeven als JIJ 'm opstart, en geen parameter als ZIJ 'm opstarten... Die MsgBox gaf ik aan zodat je makkelijk kunt testen OF het werkt, die sloop je erna natuurlijk weer uit.

Effe duidelijk de 2 situaties dan:

Situatie 1: De gebruiker start Acces
• Access wordt gestart
• If instr(Command,"/i_am_the_admin")=0 then doe_gebruikersspul else doe_adminspul
^^ Omdat je geen parameter meegeeft geeft Instr() de waarde 0 en wordt doe_gebruikersspul uitgevoerd

Situatie 1: Jij start Acces
• Access wordt gestart, nu met als parameter /i_am_the_admin
• If instr(Command,"/i_am_the_admin")=0 then doe_gebruikersspul else doe_adminspul
^^ Omdat je nu wél een parameter meegeeft, geeft Instr() de waarde!=0 en wordt doe_adminspul uitgevoerd.

Nogmaals: Ik heb helaas geen idee of je met "Command" uberhaupt de parameters kunt uitlezen. Zie edit onderaan deze post.

Command help:
Command Function

Returns the argument portion of the command line used to launch Microsoft Visual Basic or an executable program developed with Visual Basic.

Syntax

Command

Remarks

When Visual Basic is launched from the command line, any portion of the command line that follows /cmd is passed to the program as the command-line argument. In the following example, cmdlineargs represents the argument information returned by the Command function.

VB /cmd cmdlineargs

For applications developed with Visual Basic and compiled to an .exe file, Command returns any arguments that appear after the name of the application on the command line. For example:

MyApp cmdlineargs

To find how command line arguments can be changed in the user interface of the application you're using, search Help for "command line arguments."
/EDIT:
Check dit anders eens:
http://msdn.microsoft.com...c11/html/acfctcommand.asp

Moet dus gewoon werken. Je kunt je gebruikers dus gewoon normaal laten opstarten, en als jij wil testen roep je 't ding aan met een parameter ofzo. Bedenk hierbij dat je ook in een snelkoppeling naar je ding een parameter kunt meegeven, dus als je 2 snelkoppelingen maakt (1 mét en 1 zonder parameter) kun je je app ook nog op 2 manieren opstarten: Admin mode en User mode :Y)

[ Voor 62% gewijzigd door RobIII op 27-10-2004 15:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Ok, helder. Ik zal het uitproberen en uittesten.

Toch is het niet ideaal, je zult begrijpen dat het werken aan de database door mij in de praktijk betekent dat ik of eerst Access opstart en de file oproep, of de file via de Verkenner rechtstreeks oproep.

Ik vraag me af of die omslag in het werken er zo in komt bij mij.

Mijn gevoel zegt dat het toch te detecteren moet zijn of Access in die beperkte modus wordt gestart, vandaar dat ik me nog steeds aanbevolen houd voor suggesties voor die oplossing.

Toch bedankt! :)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
TromboneFreakus schreef op 28 oktober 2004 @ 12:10:
Toch is het niet ideaal, je zult begrijpen dat het werken aan de database door mij in de praktijk betekent dat ik of eerst Access opstart en de file oproep, of de file via de Verkenner rechtstreeks oproep.
<zucht>
Maak dan een snelkoppeling. Of je nou dubbelklikt op je bestand, of op de snelkoppeling, dat maakt toch geen FLUIT uit? En in die snelkoppeling kun je gewoon parameters gooien hoor...

Als je het via access->file->open doet kun je misschien nog wel effe kijken wat de locatie is van het bestand. Als de Application.CurrentProject.Path (als Access dat kent ja dus) gelijk is aan F:\MyDir\MyTest dan mode=Admin, anders mode=Normal user. Dus afhankelijk van waar je het bestand opent geef je rechten (natuurlijk is dit niet echt superveilig ofzo, maar dat snap je zelf ook wel...het is dan ook voor test-doeleinden bedoeld).

Ik wil niet zeiken, maar we zitten hier in P&W en daar is enige zelfwerkzaamheid welkom. Toon zelf wat meer initiatief, dan worden de mensen hier vanzelf ook happiger om je te helpen. Alleen maar zeuren van "het lukt niet", "wat moet ik nou" schiet je niks mee op. Laat zien wat je geprobeerd hebt, en zeg waarom het niet werkt.

Mocht je nou nog meer ideeën willen hebben:
• Zet een instelling in het register
• Zet een instelling in een ini file
• Zet een instelling in een xml file
• Zet een instelling in ...
• Lees de huidig ingelogde gebruiker onder windows uit
• ...

Verder snap ik nog steeds niet wat je bedoelt met: "Mijn gevoel zegt dat het toch te detecteren moet zijn of Access in die beperkte modus wordt gestart" :? Access kan toch maar op 1 manier worden opgestart :? (Gekke dingen daargelaten...)

Desnoods pak je er de Access documentatie bij. In de reference is zat te vinden...

[ Voor 69% gewijzigd door RobIII op 28-10-2004 12:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Ik ben er uit en wel zoals ik eerst bedoelde. EN aangezien ik geloof in de kracht van dergelijke publieke forums publiceer ik ook wat mijn oplossing is:

stap 1.
Instellen Opstartopties onder Extra => Opstarten (Start-up properties).

Daarbij in ieder geval instellen welk formulier geopend moet worden bij het opstarten (dat noem ik verder het menu).

stap 2.
Aanmaken nieuwe functie met volgende code:

code:
1
2
3
4
5
6
Option Compare Database
Public automatisch_opstarten As Boolean

Public Function opstarten() As Boolean
automatisch_opstarten = True
End Function


Stap 3.
Aanmaken van een macro (dus in de database, niet in de macro-editor) met de naam AutoExec en de volgende inhoud:

ProcedureUitvoeren: Procedurenaam opstarten ()

Stap 4.
Aanpassen code van het form met het menu.

code:
1
2
3
Private Sub Form_Close()
If automatisch_opstarten Then Application.Quit
End Sub



Vervolgens sluit Access netjes wanneer het menu wordt afgesloten [i]als[/b] Access is opgeroepen zonder verdere handelingen, terwijl Access niet wordt afgesloten als de database is geopend terwijl SHIFT werd vastgehouden.
:) :)
Pagina: 1