Oprettet man. d. 25. august 2003 kl. 11:47:06

wolker
wolker (15.390 point. Point ude: 910)

Genstart database

Findes der ikke en simpel eller rimelig simpel måde til at genstarte en Access program.
Jeg kan sikker godt lave noget med at jeg kalder en anden database, som sørger for at lukke den første ned, starte den igen og tilsidst lukker sig selv, men hvis der nu findes en nemmere måde at gøre det på, ville det være at foretrække?

Skrevet man. d. 25. august 2003 kl. 12:12:07| #1


Skrevet man. d. 25. august 2003 kl. 12:35:05| #2

staticdata
staticdata (14.989 point)
Du kan lave et batchjob i DOS, som kalder access med din database. Du kan så kalde den og efterfølgende afslutte Access.

Skrevet man. d. 25. august 2003 kl. 12:45:55| #3

terry
terry (244.612 point)
Just out of interest, what do you want to do thi sfor?

Skrevet man. d. 25. august 2003 kl. 12:46:15| #4

ferdinand.k
ferdinand.k (26.663 point)
Du kan godt snyde lidt ved at lave en "komprimer database-funktion", som lukker, og genåbner db'en.. jeg kan sende en testdb?!

Skrevet man. d. 25. august 2003 kl. 13:09:19| #5

wolker
wolker (15.390 point)
ferdinand>> kan du ikke bare lige vise koden her

Skrevet man. d. 25. august 2003 kl. 13:14:48| #6

ferdinand.k
ferdinand.k (26.663 point)
jeg har et par stykker du kan se hvis du vil, de kan lidt mere end du beder om...
Prøv nedenstående:


Private Sub cmdCheckup_Click()

    ' Do the actual work
On Error GoTo cmdCheckup_Err

    Dim db As Database
    Dim ws As Workspace
    Dim strDB As String
    Dim strLDB As String
    Dim strNewDB As String

    strDB = CStr(Me![txtFile])

    ' First, check to make sure we can get to the database exclusively
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(strDB, True)

    'Next, whack the locking file
    strLDB = Left$(strDB, Len(strDB) - 3) & "LDB"
    Kill strLDB

    ' Repair the database
    db.Close
    DBEngine.RepairDatabase strDB

    ' Compact the database
    strNewDB = Left$(strDB, Len(strDB) - 1) & "N"
    DBEngine.CompactDatabase strDB, strNewDB

    ' Kill the old database
    Kill strDB

    ' And rename the new one
    Name strNewDB As strDB

    ' Tell the user all is well
    MsgBox "Checkup completed successfully"

    ' And close
    DoCmd.Close A_FORM, Me.Name

cmdCheckup_Exit:
    Exit Sub

cmdCheckup_Err:
    Select Case Err
        Case 3356  ' Couldn't open exclusively
            MsgBox "The file is open on another machine. Cannot complete checkup. Please close and try again."
        Case Else
            MsgBox "Error " & Err & ": " & Error$, 16, "Call Programmer"
    End Select
    Resume cmdCheckup_Exit
End Sub

Skrevet man. d. 25. august 2003 kl. 13:18:45| #7

wolker
wolker (15.390 point)
terry>> det jeg ønsker er, jeg har en rutine som spærrer for shift-start, for at undgå at der kan ændres direkte i tabellerne. Men der skal være mulighed for at dem som har administrator rettigheder til databasen, at de må gå direkte ind. Jeg styrer selv alt det med logon og rettigheder.

Jeg har så oprettet et menupunkt 'Unlock database', som kun kan køres af dem som har administrator rettighed, og det er her problemet kommer, for nu skal programmet jo genstartes for at der er adgang.

Men hvis der findes en kommando der kan kalde database-vinduet frem, vil det også løse problemet, det vil faktisk være en bedre løsning.

Skrevet man. d. 25. august 2003 kl. 13:47:04| #8

terry
terry (244.612 point)
place this in a module

Option Compare Database
Option Explicit

'***************** Code Start *****************
' This code was originally written by Dev Ashish.
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Private Declare Function FindWindowEx _
    Lib "user32" Alias "FindWindowExA" _
    (ByVal hwndParent As Long, _
    ByVal hwndChildAfter As Long, _
    ByVal lpszClass As String, _
    ByVal lpszWindow As String) _
    As Long
   
Private Declare Function GetWindowLong _
    Lib "user32" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, _
    ByVal nIndex As Long) _
    As Long

Private Const GWL_STYLE = (-16)
Private Const WS_VISIBLE = &H10000000

Public Function fIsDBCVisible() As Boolean
'
' Returns true if the Database container
' window is currently visible
'
    Dim lngStyle As Long
    Dim hWnd As Long
    Const WC_MDICLIENT = "MDIClient"
    Const WC_DBC = "Odb"

    ' Find the MDIClient window first
    hWnd = FindWindowEx(hWndAccessApp, 0, _
                WC_MDICLIENT, vbNullString)
    ' Find the db container window
    hWnd = FindWindowEx(hWnd, 0, WC_DBC, vbNullString)

    If (hWnd) Then
        ' retrieve the window style
        lngStyle = GetWindowLong(hWnd, GWL_STYLE)
        fIsDBCVisible = ((lngStyle And WS_VISIBLE) = WS_VISIBLE)
    End If
   
End Function
'***************** Code Start *****************

Then place this on a form with a button
Function ToggleDbWindowState()
'To show the database window, run

If Not fIsDBCVisible Then
    DoCmd.SelectObject acTable, , True
Else
'To Hide the database window, run
    DoCmd.SelectObject acTable, , True
    DoCmd.RunCommand acCmdWindowHide
End If
End Function

Private Sub Command2_Click()
ToggleDbWindowState
End Sub

Skrevet man. d. 25. august 2003 kl. 13:48:35| #9

terry
terry (244.612 point)
and some extras :o)
You need two mor ebuttons

Private Sub Command0_Click()
WindowReSize "Max"
End Sub

Private Sub Command1_Click()
WindowReSize "Min"
End Sub

Skrevet man. d. 25. august 2003 kl. 13:50:10| #10

terry
terry (244.612 point)
you can also hide the tables, right click on the table, choose properties and then hidden

Skrevet man. d. 25. august 2003 kl. 16:07:59| #11

wolker
wolker (15.390 point)
Jeg fandt flg.

DoCmd.SelectObject acForm, , True

Den gør det jeg spurgte om ang. vis databasevindue

terry>> Så er det ikke lidt overkill at have så meget kode, som i dit eksempel eller er der noget jeg overser.
Jeg kan godt se at med din kode er det mulig at skifte tilstand fra skjult og ikke skjult ved hjælp af en knap.

Skrevet man. d. 25. august 2003 kl. 16:17:51| #12

terry
terry (244.612 point)
The code was given as is to give you some ideas. If DoCmd.SelectObject acForm, , True
does what you want then you find what you wanted from this code IKKE?

Skrevet man. d. 25. august 2003 kl. 21:35:35| #13

wolker
wolker (15.390 point)
terry>> Nej jeg fandt koden et andet sted, så det var ikk pga. din kode.

Men i kan dele pointene som tak for at i svarede.

Skrevet man. d. 25. august 2003 kl. 21:44:12| #14

terry
terry (244.612 point)
selv tak :o)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Link til et dokument

Oprettet den 10. februar 2012 kl. 14.15
omn giver 60 point for svar | Giv et svar »

Formular med flere paramtre

Oprettet den 9. februar 2012 kl. 16.48
stuegnu giver 100 point for svar | Giv et svar »

Kodemodul ???

Oprettet den 8. februar 2012 kl. 17.05
olejohn giver 200 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger