Article View: pl.comp.bazy-danych.msaccess
Article #137420Re: Aktualizacja frontonu
From: medykator
Date: Thu, 30 Mar 2017 17:19
Date: Thu, 30 Mar 2017 17:19
92 lines
6196 bytes
6196 bytes
W dniu poniedziałek, 20 lutego 2017 19:46:39 UTC+1 użytkownik Jan Koc napisał:
> Witam. Proszę o pomoc .
> Usiłuję zastosować rozwiązanie Krzysztofa Pozorka do aktualizacji frontonu bazy.
> Baza oryginalna = = "X:\....\13p.accdb"
> W folderze klienta, gdzieś w sieci , znajduje się kopia nieaktualna …..\13p.accbd oraz baza = „…..\KopiarkaNowa.accdb”. Przy zamknięciu bazy „13p”, po sprawdzeniu, że jest nieaktualna, następuje otwarcie bazy KopiarkaNowa, która ładnie kopiuje nową wersję. Wszystko zgodnie z projektem KP, zmiana to zamiast skryptu normalna baza ACCBD.
> I to rozwiązanie postanowiłem poprawić. Chcę zlikwidować bazę „KopiarkaNowa” u klienta i importować ją wtedy gdy będzie potrzebna z folderu „X:\...\KopiarkaNowa.accdb. Przy pierwszym wywołaniu bazy „13p” u klienta KopiarkaNowa.accdb byłaby wycinana. W ten sposób nie musiałbym osadać KopiarkiNowej u klientów, w różnych folderach, szukać gdzie mi ją przenieśli, tłumaczyć po co jest itd.
> I tu coś nie działa.
> Po skopiowaniu (VB) KopiarkaNowa.accdb, przy próbie otwarcia otrzymuję komunikat, że „KopiarkaNowa” to nierozpoznany format bazy
> Z góry dziękuję za pomoc i przepraszam, że tak rozwlekle, ale ostatnim razem trzy tygodnie korespondowałem na grupie i dopiero gdy wszystko wyłożyłem kawa na ławę, to okazało się, że zmiana jednego ustawienia (usunięcie apostrofa ze specyfikacji exportu) załatwiała sprawę.
>
> Private Sub Form_Unload(Cancel As Integer)
> On Error Resume Next
> Dim objAcc As Access.Application
> Dim NewVer As Long, OldVer As Long, NewDb As Object
> Dim NewPath As String 'ścieżka do nowej wersji bazy na sieci
> Dim OldPath As String 'ścieżka do starego pliku bazy
> 'zamykamy, sprawdzając, czy nie ma nowej wersji programu
> NewPath = "X:\...\13p.accdb"
> Set NewDb = DBEngine.OpenDatabase(NewPath)
> NewVer = NewDb.Containers("Databases").Documents("UserDefined").Properties("WersjaProg")
> NewDb.Close
> Set NewDb = Nothing
> OldVer = DBEngine.Workspaces(0)(0).Containers("Databases").Documents("UserDefined").Properties("WersjaProg")
> If Err <> 0 Then
> MsgBox "Wystąpł błąd”
> ElseIf OldVer >= NewVer Then
> 'Ok, baza jest w aktualnej wersji
> Else
> ‘Kopiuję bazę „KopiarkaNowa” jeśli nie istnieje
> Dim strSciezkaPliku As String
> strSciezkaPliku = CurrentProject.Path & "\KopiarkaNowa.accdb"
> Dim fs
> Set fs = CreateObject("Scripting.FileSystemObject")
> If fs.FileExists(strSciezkaPliku) Then
> ‘ I tu ładnie kopiuje bazę “13p”
> Set objAcc = New Access.Application
> objAcc.OpenCurrentDatabase CurrentProject.Path & "\KopiarkaNowa.accdb", True
> objAcc.DoCmd.OpenForm "startowy", , , , , acHidden
> objAcc.Forms!startowy.Form.TimerInterval = 1000 'tchnięcie życia w wywołany formularz
> Else
> 'skopiujemy bazzę KopiarkaNowa do aktualnego katalogu
> Dim CurDB As String, KopiaDB As String, LenDB As Long, Plik As String, NrPliku As Long
> DoCmd.Hourglass -1
> CurDB = "X:\.....\KopiarkaNowa.accdb"
> Err = 0
> Plik = Space(FileLen(CurDB))
> NrPliku = FreeFile
> Open CurDB For Binary Access Read Shared As #NrPliku
> Get #NrPliku, 1, Plik
> Close #NrPliku
> If Err = 52 Then
> MsgBox "Brak dostępu do pliku
> ElseIf Err Then
> MsgBox Err.Description
> Else
> KopiaDB = CurrentProject.Path & "\KopiarkaNowa.accdb"
>
> If KopiaDB & "" <> "" Then
> Kill KopiaDB
> Err = 0
> Plik = Space(FileLen(CurDB))
> NrPliku = FreeFile
> Open KopiaDB For Binary Access Write Shared As #NrPliku
> Put #NrPliku, 1, Plik
> Close #NrPliku
> If Err = 0 Then
> Else
> MsgBox Err.Description
> End If
> End If
> DoCmd.Hourglass 0
> End If
> On Error GoTo rrr
> Set objAcc = New Access.Application
> objAcc.OpenCurrentDatabase CurrentProject.Path & "\KopiarkaNowa.accdb", True
> ‘ i tu wyskakuje komunikat o nierozpoznanym formacie bazy
> objAcc.DoCmd.OpenForm "startowy", , , , , acHidden
> 'otwieramy formularz w zewnętrznej bazie, który przejmie sterowanie nad dalszym przebiegiem operacji.
> objAcc.Forms!startowy.Form.TimerInterval = 1000 'tchnięcie życia w wywołany formularz
> End If
> End If
> rrr_Exit:
> Application.Quit
> Exit Sub
> rrr::
> MsgBox Error$
> MsgBox "Skontaktuj się z administratorem +48 694 00 55 45."
> Resume rrr_Exit
> End Sub
http://www.access24.pl
Technical Details
Message-ID:
<c7fd87bc-9c3c-47bb-9121-496bc9ae8f8f@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!y18no2165725itc.0!news-out.google.com!j72ni1419itb.0!nntp.google.com!y18no2158733itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<7f2d2dab-7fa4-4540-910b-a59d66b3b231@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 10.36.89.1 with SMTP id p1mr1551985itb.16.1490894348230; Thu, 30 Mar 2017 10:19:08 -0700 (PDT) X-Received: by 10.157.9.183 with SMTP id q52mr81144otd.11.1490894348191; Thu, 30 Mar 2017 10:19:08 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!y18no2165725itc.0!news-out.google.com!j72ni1419itb.0!nntp.google.com!y18no2158733itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.bazy-danych.msaccess Date: Thu, 30 Mar 2017 10:19:07 -0700 (PDT) In-Reply-To: <7f2d2dab-7fa4-4540-910b-a59d66b3b231@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.36.52.218; posting-account=yG2t1QoAAABxwstcgPA_w_wmVew6W-CB NNTP-Posting-Host: 178.36.52.218 References: <7f2d2dab-7fa4-4540-910b-a59d66b3b231@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <c7fd87bc-9c3c-47bb-9121-496bc9ae8f8f@googlegroups.com> Subject: Re: Aktualizacja frontonu From: medykator@gmail.com Injection-Date: Thu, 30 Mar 2017 17:19:08 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit