У меня есть кнопка в MS Access, которая создает папку с некоторыми изображениями, PDF-файлами и файлом Access .mdb, а затем открывает WinSCP, чтобы запустить команду для загрузки папки на FTP-сервер.
Проблема, с которой я столкнулся, заключается в том, что время от времени загрузка не удалась из-за «отсутствующего файла .ldb». По сути, происходит то, что при создании .mdb Access временно создает свой блокирующий файл .ldb, и иногда этот файл .ldb не исчезает до тех пор, пока WinSCP не начнет работать. Затем WinSCP просматривает все загружаемые файлы, попадает в .ldb и завершается сбоем из-за того, что он больше не существует.
Сначала я подумал, что файлы .ldb будут работать, но это не так.
Так что теперь я думаю, что пропустить несуществующие файлы - самое простое решение.
Возможно ли это?
(Может быть, даже задержка при запуске скрипта в качестве другого решения?)
Код для загрузки:
Dim strSFTPDir As String
strSFTPDir = "C:\Program Files (x86)\WinSCP\"
Dim UploadsDir As String
UploadsDir = DLookup("PathToPics", "Admin") & "\Uploads\*"
Call Shell(strSFTPDir & "winscp.com /log=""C:\-TabletSoftware-\TabletBE\upload.log"" /command ""open ftp://username:password@ip/"" ""put -filemask=|*.ldb " & UploadsDir & " "" ""exit"" ", vbNormalFocus)
Также еще одна полезная вещь, если кто-нибудь знает, как использовать каталоги, содержащие пробелы.
Редактировать: Ладно, я думаю У меня это работает, но поскольку ошибка изначально возникала только время от времени, время покажет.
Исправление находится в Access непосредственно перед запуском WinSCP. Это просто цикл, пока файл .ldb не будет удален.
Do While (Dir(StnPth & "\To Mail.ldb") <> "")
Loop