Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Använda tabellerna i backend-backupen.

Postades av 2010-02-26 11:29:15 - Carina Svensson, i forum access, Tråden har 8 Kommentarer och lästs av 1475 personer

Hej!
Problemet i mitt förra inlägg kvarstår. Tycker att jag testat "allt", så jag hoppas fortfarande på hjälp.

Jobbar nu med en backuplösning. Har delat upp databasen i frontend och backend. Har lyckats få till så att man kan ta backup på databasens backend genom att trycka på en knapp i ett formulär.

Men hur gör man sedan om man vill att databasen ska använda sig av tabellerna i en backend-backup istället för aktuell backend? Användaren ska bara kunna göra det via ett formulär.

Jag ser två möjligheten:

1. Att man raderar databasens backend.
En kopia på backend-backupen görs som får samma namn databasens backend hade.
Denna kopia läggs in i samma katalog som databasens backend var.

2. Att man raderar tabellerna i databasens backend.
Sedan importerar man tabellerna från backend-backupen.

Vilket angreppssätt är bättre? Eller har ni någon bättre lösning?

Jag har börjat med angreppssätt 2, men stötte på problem.
Får felmeddelande 3024: "Det går inte att hitta filen",
då jag försöker ta bort en tabell från databasens backend.

Det berörda koden finns här nedanför.
Sökvägen skrivs ut rätt i MsgBox och filen finns, men
Set Db = OpenDatabase(DbPath)
misslyckas ändå och ger ovanstående felmeddelande.

Mycket tacksam för hjälp!
Carina

Sub CallDeleteTableFromBackEnd()
'This is dangerous - be careful! Make a backup of the back end database first.
Dim Result As Boolean

'sample call:
Result = DeleteTableFromBackEnd("C:\Carina\XXXXXX\XXXXXXX\Delad databas\XXXXXXXXX_2010_02_18d_be.accdb", "saknarbelopp")
Debug.Print Result
End Sub


Function DeleteTableFromBackEnd(DbPath As String, TblName As String)
'This is dangerous - be careful! Make a backup of the back end database first.
'On Error GoTo ErrorHandler

Dim Db As Database
MsgBox ("DbPath: " & DbPath)
MsgBox ("Tblname: " & TblName)
'test back end
On Error Resume Next
Set Db = OpenDatabase(DbPath)
If Err <> 0 Then
MsgBox ("Felmeddelande: " & Err.Number & "; Beskrivning: " & Err.Description)
'failed to open back end database
Exit Function
End If
Db.Execute "DROP TABLE " & TblName
If Not Db Is Nothing Then Db.Close

DeleteTableFromBackEnd = True 'defaults to false if it fails to get here

Done:
End Function






Svara

Sv: Använda tabellerna i backend-backupen.

Postades av 2010-02-26 16:22:40 - Pelle Johansson

Hej, finns verkligen filen då?

Du har också ett filsuffix som är .accdb - är det korrekt?


Svara

Sv:Använda tabellerna i backend-backupen.

Postades av 2010-02-26 16:42:24 - Carina Svensson

Hej Pelle!
Tack för ditt svar!
Ja, filen finns och det är en accdb.
Har även testat att lägga den direkt i roten och använda "C:\XXXXX_2010_02_18d_be.accdb" istället, men det blir samma felmeddelande.
Sökväg, inklusive själva filnamnet, är korrekt. Förstår inte varför det blir felmeddelande?

Är det här angreppssättet det bästa?

/Carina


Svara

Sv: Använda tabellerna i backend-backupen.

Postades av 2010-02-27 20:08:29 - Andreas Hillqvist

Jag skulle peka om det länkade tabellerna. Du kan göra detta med följande funktion:

Public Sub ReLink(FileName As String)
Dim db As DAO.Database
Dim t As DAO.TableDef

    Set db = CurrentDb
    For Each t In db.TableDefs
        If t.Attributes And DAO.TableDefAttributeEnum.dbAttachedTable Then
            t.Connect = ";DATABASE=" + FileName
            t.RefreshLink
        End If
    Next
End Sub


Svara

Sv:Använda tabellerna i backend-backupen.

Postades av 2010-02-28 10:21:42 - Carina Svensson

Tack så jättemycket Andreas! :-)
Har nu testat att hårdkoda in FileName och allt fungerar perfekt.
Nu måste jag "bara" få till så att användaren själv kan välja vilken backup som ska användas.

/Carina


Svara

Sv: Använda tabellerna i backend-backupen.

Postades av 2010-02-28 15:05:17 - Carina Svensson

Nu har jag fått till så att användaren kan "browsa" och välja vilken backendbackup som ska användas! :-)


Svara

Sv:Använda tabellerna i backend-backupen.

Postades av 2010-02-28 16:56:56 - Andreas Hillqvist

Jag har gjort min variant:

Public Sub ReLinkTablesInDatabase()
Dim FileName As String
    FileName = OpenFileDialog("Select an database you would like to link to...")
    If Len(FileName) Then
        ReLinkTables FileName, False
    Else
        MsgBox "Operation was aborted!"
    End If
End Sub

Public Function OpenFileDialog(Optional Title As String = "Select a database") As String
Dim dialog As Office.FileDialog ' Microsoft Office 12.0 Object Library
    'Set up the File Dialog.
    Set dialog = Application.FileDialog(msoFileDialogFilePicker)
    With dialog
        'Allow user only to select a single file in dialog box
        .AllowMultiSelect = False
            
        'Set the title of the dialog box.
        .Title = Title

        'Clear out the current filters, and add our own.
        With .Filters
            .Clear
            .Add "Microsoft Access Databases (*.accdb;*.mdb;*.adp;*.mda;*.accda;*.mde;*.accde;*.ade)", _
                 "*.accdb;*.mdb;*.adp;*.mda;*.accda;*.mde;*.accde;*.ade)"
                 
            .Add "All Files (*.*)", _
                 "*.*"
        End With

        'Show the dialog box.
        If .Show() Then
            'If the Show() method returns True, the user picked a file.
            OpenFileDialog = .SelectedItems(1)
        Else
            'If the Show() method returns False, the user clicked Cancel.
            OpenFileDialog = vbNullString
        End If
    End With


End Function

Public Sub ReLinkTables(FileName As String, Optional Force As Boolean = False)
Dim wrk As DAO.Workspace
Dim db As DAO.Database
Dim t As DAO.TableDef
Dim f As Boolean
Dim i As Long
On Error GoTo ReLinkTables_Err
    
    Set wrk = DBEngine.Workspaces(0)
    Set db = CurrentDb()
    
    SysCmd acSysCmdInitMeter, "Linking tables...", db.TableDefs.Count
    
    wrk.BeginTrans
    For Each t In db.TableDefs
        i = i + 1
        SysCmd acSysCmdUpdateMeter, i
        
        If t.Attributes And DAO.TableDefAttributeEnum.dbAttachedTable Then
            f = Force
            ReLinkTable t, FileName, f
        End If
    Next
    wrk.CommitTrans
    
ReLinkTables_Exit:
    SysCmd acSysCmdRemoveMeter
    Exit Sub
    
ReLinkTables_Err:
    Select Case Err.Number
    Case Else
        Select Case MsgBox(Err.Description, vbExclamation Or vbAbortRetryIgnore, "Error occured while linking tables...")
        Case vbRetry
            f = True
            Resume
        Case vbIgnore
            Resume Next
        Case Else 'vbAbort
            wrk.Rollback
            MsgBox "Operation was aborted!" + vbCrLf + _
                   "None of the tables has been changed.", vbInformation
            
            Resume ReLinkTables_Exit
        End Select
    End Select
        
End Sub

Private Sub ReLinkTable(Table As DAO.TableDef, FileName As String, Force As Boolean)
    If Force Or InStr(1, Table.Connect, FileName, vbTextCompare) = 0 Then
        Table.Connect = ";DATABASE=" + FileName
        Table.RefreshLink
    End If
End Sub

Denna kod använder transaktioner, om t.ex. länkningen misslyckas för att en tabell saknas så kan man avbryta och tabellerna är då länkade till tidigare databas, eller så kan man ignorera den tabellen.

Koden kräver dock att du laggt till en referens till "Microsoft Office XX.Y Object Library" (t.ex Microsoft Office 12.0 Object Library för Office 2007).


Med vänliga hälsningar
Andreas Hillqvist


Svara

Sv: Använda tabellerna i backend-backupen.

Postades av 2010-02-28 17:32:18 - Carina Svensson

Tack för att du delar med dig av din variant! :-)
Ska ta och testa den, men just nu sitter jag och jobbar med omsättningsdiagrammen.

Har du någon idé om hur man kan få till kvartalsdiagrammet i mitt förra inlägg?
De tidigare diagrammens datakälla skrev jag i VBA-kod, så jag har fått tänka om, nu när jag använder "Frågor" istället.

Tack än en gång!
Carina


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 159
27 952
271 704
755
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies