Database openen na repair

Status
Niet open voor verdere reacties.

Wharting

Gebruiker
Lid geworden
1 aug 2012
Berichten
26
Hallo,

Ik heb een vraag. Binnen een access 2010 applicatie (met 2003 instelling) worden maandelijks grote hoeveelheden data inlezen en verwerkt. De maand daarop worden de bestanden eerst geschoond alvorens nieuwe data wordt ingelezen.
Dit heeft regelmatig tot gevolg dat het inlezen van een bestand met >3 miljoen records wordt afgebroken waarvan de oorzaak volgens mij ligt in de indexbestanden die na schoning van de tabellen niet geherindexeerd worden.
Na het comprimeren en herstellen van de database (mbv menukeuze in menubalk) lukt het inlezen van alle bestanden wel zonder dat dit wordt afgebroken.

Nu heb ik in VB een functie gedefinieerd die er voor zorgt dat na het aanroepen van de schoningsfunctie de database (met lege tabellen) automatisch gecomprimeerd en hersteld wordt.
Hierbij wordt de database gesloten mbv DoCmd. CloseDatabase.

Nu het probleem.
Na het bovenstaande uitgevoerd te hebben, wil ik dat de database ook weer automatisch opent en terugkeert naar het hoofdmenuscherm. Ik had gehoopt verwacht dat dit bv met een DoCmd.OpenDatabase zou kunnen maar helaas, deze bestaat niet. Hoe kan ik dit voor elkaar krijgen? Bij voorbaat mijn hartelijke dank.

Groeten,
Willem
 
Ik vond (vrij snel overigens) deze functie. Niet getest nog, maar kijk maar eens of hij werkt :)

Code:
Public Function OpenDB(pasDBPathName As String, pasCloseCurrent As String) As String
On Error GoTo Err_Proc

'-- Test Required Data
If Ns(pasDBPathName, "None") = "None" Then
    myM = "DATABASE PATH NAME NOT FOUND. "
    Alert
    OpenDB = "ERROR"
    Exit Function
End If

If Not FileExists(pasDBPathName) Then
    myM = "DATABASE WAS NOT FOUND IN THE FOLDER SHOWN (" & pasDBPathName & "). "
    Alert
    OpenDB = "ERROR"
    Exit Function
End If

Call Shell("msaccess.exe " & pasDBPathName, vbMaximizedFocus)
DoEvents
Select Case pasCloseCurrent
    Case "Close", "CloseCurrent"
    DoCmd.Quit
End Select

Exit Function

Err_Proc:
    msg Error
    Exit Function

End Function
 
Bij nader inzicht denk ik dat je een onoverkomelijk probleem hebt: code wordt uitgevoerd in een werkende database. Zodra een db wordt afgesloten, verdwijnen alle variabelen etc uit het geheugen, dus ook de opdracht die een nieuwe db zou moeten openen. Je kunt hooguit de db na het compileren dus geopend houden en het startformulier weer laten zien. Dat zou ook genoeg moeten zijn, denk ik zelf.
 
Hallo Redacteur,

Bedankt voor je reactie.
Ik zal iets anders moeten verzinnen. Het was te proberen; niet geschoten is altijd mis.

Groet,
Willem
 
na het comprimeren wordt de database toch automatisch gesloten en heropend. je zou de functie close dan helemaal niet nodig hebben.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan