Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Met VBA in Access een andere Acces database openen

marcelliuskuperius
7 antwoorden
  • Ik wil met een Accessprogramma andere Accessdatabase 's openen.
    De aangeroepen database moeten vervolgens automatisch een aantal procedures uitvoeren en vervolgens zichzelf weer sluiten.

    Om de werking te testen gebruik ik de volgende code :
    Private Sub Knop0_Click()
    Dim dwgebied As Workspace
    Dim dbdatabase As Database



    Set dwgebied = DBEngine.Workspaces(0)
    Set dbdatabase = dwgebied.OpenDatabase("E:\accessfiles\AANGEROEPEN PROGRAMMA.mdb", True)
    dbdatabase.Close
    dwgebied.Close



    End Sub

    In mijn test moet het aangeroepen programma even een code draaien waardoor een msgbox wordt getoond met een tekstje.
    Als ik het aangeroepen programma rechtstreeks opstart, wordt het tekstje getoond, als ik het aanroep met bovenstaande code echter niet.

    Heeft iemand een idee of dit zou moeten werken, of wat ik moet veranderen ???

    Bij voorbaat dank voor jullie reactie
  • Probeer eens

    Shell "msaccess.exe ""E:\accessfiles\AANGEROEPEN PROGRAMMA.mdb"""

    Het automatisch uitvoeren van zaken in de aangeroepen database doe je in de aangeroepen database, bijv. in de Open-procedure van een startup-form. Je kan ook een functie aanroepen vanuit een macro en dan de database opstarten met parameter /x:

    Shell "msaccess.exe ""E:\accessfiles\AANGEROEPEN PROGRAMMA.mdb"" /x macro1"
  • Dit werkt dus wel, bedankt

    Ik ben eigenlijk wel benieuwd waarom de ene manier van aanroepen wel werkt, en de andere niet. Kun je dat aangeven ???
  • Met Shell() start je een programma (msaccess.exe) en met OpenDatabase() open je een verbinding met een database (mdb) om er vervolgens met andere DAO-objecten bewerkingen op los te laten (Recordsetbewerkingen, etc). Dingen zoals het startup-form of het uitvoeren van macro's moet je via msaccess.exe doen.

    Ik weet niet wat er precies in de aangeroepen database gebeurt, maar als het wat bewerkingen op tabellen zijn (bijv. de datum in een record op Date() zetten), dan kun je dat dus ook vanuit de brondatabase doen dmv DAO zonder de mdb te openen op het scherm. Je kan ook met een query in een andere db rommelen: SELECT * FROM Adressen IN C:\adressen.mdb of UPDATE Adressen IN C:\adressen.mdb SET Datum = Date() of je koppelt tabellen…
  • Oké, dank voor je uitleg, het is me duidelijk. Alle bewerkingen worden verder vanuit en door de aangeroepen database uitgevoerd. Ik kies dus voor de shell variant.
  • Een andere (naar mijn mening simpelere) oplossing, is de tabellen van de andere database in de database linken. Je kunt ze dan vanuit die database zelf bewerken. Mijn ervaring is dat het werken met shell oplossingen soms nog wel eens misgaat…
  • [quote:9e558386c7="marcelliuskuperius"]Een andere (naar mijn mening simpelere) oplossing, is de tabellen van de andere database in de database linken. Je kunt ze dan vanuit die database zelf bewerken. Mijn ervaring is dat het werken met shell oplossingen soms nog wel eens misgaat…[/quote:9e558386c7]

    Je hebt in principe gelijk, maar ik doe dit omdat ik maandelijks een aantal data moet binnenhalen, bewerken en klaarzetten om in te kunnen lezen in Excell (draaitabellen)

    Als ik daarvoor aparte databases gebruik, maakt dat het beheer overzichtelijker. Ook zijn databases gemakkelijker (tijdelijk) af te koppelen of toe te voegen

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.