Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6   вперед  Ctrl      все
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
aleks222,
спасибо, но
не думай - это не для меня.
7 фев 19, 18:50    [21803795]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
vmag
Member

Откуда: MP
Сообщений: 3138
час58
Правильно ли я проверяю файл на дату модификации?
Почему-то все файлы в сети показали дату вчерашнюю.
Хотя файлы эти положены в Январе.


Не важно когда положил (это по идее будет дата создания и то в том случае если прям вот тут создал)
Ты же проверяешь дату Изменения программы?
У mdb, mde,.... по идее так: запустил,- значит уже изменил, даже если просто открыл закрыл и это можно наблюдать в свойствах файла в самой винде (дата изменения), это вам не исполняемый exe файл
7 фев 19, 21:04    [21803866]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
vmag,

И каков же выход?
Вручную жёстко в коде писать дату типа "08.02.2019" и бросать её в таблицу.
И использовать при необходимости как версию данного файла.
------------------------
Надо же как -то, что бы кодом решалось.
А то так и забыть не долго про изменение цифр версии.
В VB6 версия файла сама там генерировалась. Стоило задать начало.
В access - как решается эта вещь?
8 фев 19, 17:09    [21804676]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
vmag
Member

Откуда: MP
Сообщений: 3138
час58
И каков же выход?


Да уже писали тут про это...
В кратце:
- на общей шаре должна быть очередная версия и не важно в каком виде её признак (номер).
- на местах нужен "пускач" который при старте сравнивает номер локальной версии с номером на шаре, если
локальный номер меньше, переписывает с шары на локаль новую версию + её номер и запускает, если номера версий одинаковые, просто запускает локаль...
Готового варианта думаю никто не даст, много специфики, начиная с того у кого какая и в каком виде шара и
заканчивая прочей мелочью, в том числе организационные вопросы...
8 фев 19, 17:54    [21804723]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
vmag,
Спасибо, понятно.
Да.
- на местах нужен "пускач" который при старте сравнивает номер локальной версии с номером на шаре, если
локальный номер меньше, переписывает с шары на локаль новую версию + её номер и запускает, если номера версий одинаковые, просто запускает локаль...

Этот вариант понятен, как два пальца обасфальт.
не понятно только как пускач сравнивает версии - кто критерий для него?
Я критерий не могу придумать. Как отличать версии.....
8 фев 19, 18:39    [21804757]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
vmag
Member

Откуда: MP
Сообщений: 3138
час58,

Да уже бы сам придумал, например пускач тот же mdb или mde, в котором всего одна таблица,
с всего одним текстовым полем и всего одной записью, в которой название запускаемого файла...

При старте пускача, он смотрит имя в своей таблице и имя файла на шаре, если совпадают - запускает такой же файл с локали,
- если не совпадает, локальный файл удаляет, вместо него пишет файл с шары и его имя к себе в таблицу
вместо старого имени, соответственно запускает уже по новому имени, и так в цикле...
- файлы можно именовать так Программа-ХХХ, где XXX номер версии

можно еще одну форму в пускаче сделать, если версии не совпали, делать её видимой и запрашивать
подтверждение замены версии ХХХ на YYY
8 фев 19, 19:30    [21804814]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
vmag,
:-)
8 фев 19, 19:33    [21804817]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
vmag, у меня давно таким образом устроена замена файла программы, правда, в локальной сети:
На сервере "лежит" актуальная версия программы и служебная программка mdx поl названием Start, на рабочих местах ярлык запускает не основную программу, а программку Start, которая проверяет соответствие версии основной программы на сервере и на рабочем месте. Если версии отличаются, на рабочее место копируется, с заменой существующей, версия с сервера и после этого программа запускается на рабочем месте. Если версия не изменилась, то просто запускается программа.
Версия программы "зашита" в свойства Базы данных, т.е. Вашей программы, таким образом (см. рис):

Несколько лет назад я уже описывал эту технологию. Единственное неудобство, что версию приходится менять вручную, но это не самое страшное, зато никаких звонков и уговоров выйти из программы.

К сообщению приложен файл. Размер - 103Kb
9 фев 19, 10:32    [21805100]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Честно признаюсь, что саму идею и, частично, пути реализации позаимствовал у умных людей, что-то здесь на форуме, а что-то на других, но сейчас точно не помню где. Дурацкая привычка не делать пометок, что откуда взял.
9 фев 19, 11:00    [21805110]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1609
xax_nv
vmag, у меня давно таким образом устроена замена файла программы, правда, в локальной сети:
На сервере "лежит" актуальная версия программы и служебная программка mdx поl названием Start, на рабочих местах ярлык запускает не основную программу, а программку Start, которая проверяет соответствие версии основной программы на сервере и на рабочем месте. Если версии отличаются, на рабочее место копируется, с заменой существующей, версия с сервера и после этого программа запускается на рабочем месте. Если версия не изменилась, то просто запускается программа.
Версия программы "зашита" в свойства Базы данных, т.е. Вашей программы, таким образом (см. рис):

Несколько лет назад я уже описывал эту технологию. Единственное неудобство, что версию приходится менять вручную, но это не самое страшное, зато никаких звонков и уговоров выйти из программы. Картинка с другого сайта.

Картинка с другого сайта.

а как программно прочитать ваше свойство?
9 фев 19, 12:39    [21805157]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Вот код модуля из Start.mbx:
Option Compare Database
Option Explicit

Private Const constrOriginMDB As String = "\\Server\XXX\XXX.mdb"
Private Const constrLocalMDB As String = "C:\XXX\XXX.mdb"

Private Const CSIDL_SysFolder = &H29

Public Function StartApplication()

Dim FSO As Object, SysFolderPatch As String
Dim oShell As Object, Str1
Set oShell = CreateObject("WScript.Shell")


Set FSO = CreateObject("Scripting.FileSystemObject")
'find if local folder exists'
If Len(constrOriginMDB) > 0 Then
    CheckLocalFolders constrLocalMDB
End If

On Error Resume Next

    
If Dir(constrLocalMDB, vbNormal) = "" Then 'if file does not exist'
    FileCopy constrOriginMDB, constrLocalMDB
Else
    If HasToBeRefreshed Then 'check if there is new version on the server'
        FileCopy constrOriginMDB, constrLocalMDB
    End If
End If
    
If Err.Number > 0 And Err.Number <> 70 Then
    Beep
    MsgBox Err.Number & vbCrLf & Err.Description
End If

On Error GoTo ErrorLabel

Call shell(SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE " & constrLocalMDB, vbNormalFocus)

DoCmd.Quit

Exit Function

ErrorLabel:
    DoCmd.Hourglass False
    DoCmd.Maximize
    Beep
    MsgBox "Something wrong with Database," & vbCrLf & "Ask DB developer to fix it@" & vbCrLf & _
            Err.Number & "@" & Err.Description & "@", vbCritical
    Application.Quit
End Function

Private Function CheckLocalFolders(strFilePath)
Dim strCurrPath As String
Dim strCurrFolder As String
Dim intPos As Integer

If Left$(strFilePath, 3) <> "C:\" Then
    MsgBox "Wrong Path Argument in CheckLocalFolders Function", vbCritical
    Exit Function
End If

strCurrPath = "C:\"
intPos = 3

Do Until intPos = 0
    intPos = InStr(intPos + 1, strFilePath, "\")
    If intPos > 0 Then
        strCurrPath = Left$(strFilePath, intPos - 1)
        If Dir(strCurrPath, vbDirectory) = "" Then
            MkDir strCurrPath
        End If
    End If
Loop
End Function

Private Function HasToBeRefreshed() As Boolean
Dim wrk As Workspace
Dim dbs As Database, cnt As Container
Dim doc As Document
Dim lngVersionOnServer As String
Dim lngVersionOnC As String

Const conPropertyNotFound = 3270    ' Property not found error.

On Error GoTo SetCustom_Err
    Set wrk = DBEngine.Workspaces(0)
    Set dbs = wrk.OpenDatabase(constrLocalMDB)
    Set cnt = dbs.Containers!Databases
    Set doc = cnt.Documents!UserDefined
    
    lngVersionOnC = doc.Properties("DB Version")
    
    Set dbs = wrk.OpenDatabase(constrOriginMDB)
    Set cnt = dbs.Containers!Databases
    Set doc = cnt.Documents!UserDefined

    lngVersionOnServer = doc.Properties("DB Version")

    Set doc = Nothing
    Set cnt = Nothing
    Set dbs = Nothing
    Set wrk = Nothing

    HasToBeRefreshed = (lngVersionOnServer <> lngVersionOnC)

    Exit Function

SetCustom_Err:
    Beep
    If Err = conPropertyNotFound Then
        MsgBox "There is no information of the DB Version.", vbExclamation
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If

    HasToBeRefreshed = False
End Function
9 фев 19, 14:18    [21805203]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1609
xax_nv,

Спасибо, я уже нашел, но и вашу методу потискаю.
С уважением.
9 фев 19, 14:29    [21805210]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
xax_nv,
Да, хороший вариант.
Ни как не найду как вывести на экран окно свойств xxx.mdb
9 фев 19, 14:43    [21805213]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
час58
как вывести на экран окно свойств xxx.mdb


Файл - Свойства базы данных - Прочие.
Название: DB Version. Тип: Текст. Значение: любое Вам понравившееся.
9 фев 19, 14:50    [21805218]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
час58,

К сообщению приложен файл. Размер - 63Kb
9 фев 19, 14:51    [21805221]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Вы смотрите свойство файла, а нужно свойство базы данных.
9 фев 19, 14:54    [21805224]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
ROI, а ты что нашёл?
Покажи.
9 фев 19, 14:54    [21805225]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
xax_nv
Member

Откуда: Нижневартовск
Сообщений: 920
Забыл указать, что я юзаю 2003 Акс, в более старших версиях видимо так же.
9 фев 19, 14:55    [21805228]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
xax_nv,

Спасибо за пояснение.
Да, нашёл.

В новых версиях
Значок офиса в левом верхнем углу
Управление
Свойства базы данных
9 фев 19, 15:07    [21805234]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
xax_nv,

Это свойство базы - значение "ВЕРСИИ", можно считывать из самой программы?
Или считывать, когда программа запущена (находится в работе.)?
Не повредит ли это работающий файл.
Или можно считывать, только извне и не при работающей программе(файле)?
10 фев 19, 10:43    [21805570]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1609
час58,
Как то вот так:
[/SRC]
Private Sub cmd_Text_Click()
Dim dbs As DAO.Database
Dim cnt As DAO.Container
Dim doc As DAO.Document
Dim prp As DAO.Property
Dim v As Variant

On Error GoTo HandleError

    Set dbs = CurrentDb
    Set cnt = dbs.Containers!Databases
    Set doc = cnt.Documents!UserDefined
    
    Me.ctr_Text = ""
    
    For Each prp In doc.Properties
    
        v = prp.Value
        Me.ctr_Text = Me.ctr_Text & vbCrLf & prp.Name & "=" & v
        
    Next

ExitProc:
    Set prp = Nothing
    Set dbs = Nothing
    Set cnt = Nothing
    Set doc = Nothing
    Exit Sub
    
HandleError:
    MsgBox vbCrLf & Err.Description & _
            vbCrLf & vbCrLf & "  &#200;&#236;&#255; &#238;&#225;&#250;&#229;&#234;&#242;&#224; = " & Me.Name & _
            vbCrLf & vbCrLf & "  &#200;&#236;&#255; &#239;&#240;&#238;&#246;&#229;&#228;&#243;&#240;&#251; = cmd_Text_Click", _
            vbCritical, "&#206;&#248;&#232;&#225;&#234;&#224; " & Err.Number
    Resume ExitProc
End Sub
[SRC VB]
10 фев 19, 11:38    [21805585]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
Я использовал код - xax_nv,
получается вот так...

Private Function FUN_VERSIYA(PATCH_K_RMK As String) As String
' ВЕРСИЯ

Dim wrk As Workspace
Dim dbs As Database, cnt As Container
Dim doc As Document
Dim lngVersionOnServer As String
Dim lngVersionOnC As String

   On Error GoTo FUN_VERSIYA_Error
'-----------------------------------------------------------------------------
FUN_VERSIYA = ""

    Set wrk = DBEngine.Workspaces(0)
    Set dbs = wrk.OpenDatabase(PATCH_K_RMK)
    Set cnt = dbs.Containers!Databases
    Set doc = cnt.Documents!UserDefined
    
    If Nz(doc.Properties("VERSII")) <> "" Then
       FUN_VERSIYA = Nz(doc.Properties("VERSII"))
    End If
    
    Set doc = Nothing
    Set cnt = Nothing
    Set dbs = Nothing
    Set wrk = Nothing
'-----------------------------------------------------------------------------
   On Error GoTo 0
   Exit Function
FUN_VERSIYA_Error:

 Call FUN_ZAPIS_V_TEXT_FILE(CurrentProject.Path & "\Ошибки программы.txt", "Не задана версия в файле " & vbTab & PATCH_K_RMK & vbTab & Nz(Err.Description))

End Function
10 фев 19, 12:34    [21805602]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
ROI
Member

Откуда: г. Тюмень
Сообщений: 1609
час58,

В принципе одно и тоже.
10 фев 19, 12:57    [21805620]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
ROI, Да.
10 фев 19, 18:26    [21805770]     Ответить | Цитировать Сообщить модератору
 Re: Замена файла XXX.mdb на удалённых рабочих местах.  [new]
час58
Member

Откуда: г. Энгельс.
Сообщений: 1562
Ещё раз спасибо xax_nv,

В итоге получилась вот такая функция получения значения из свойств базы данных, прописанных пользователем базы.
Public Function FUN_GLB_VERSION()
' версия
    On Error Resume Next
    GLB_VERSION = CurrentDb.Containers("Databases").Documents("UserDefined").Properties("VERSII").Value
End Function
16 фев 19, 18:12    [21811738]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить