2013-07-10 3 views
-2

Этот код предназначен для обновления базы данных, но каждый раз, когда я нажимаю кнопку «начать обновление», отображается ошибка «PATH NOT FOUND».Путь не найден при запуске программы

Dim strEmpFileName As String 
Dim strBackSlash As String 
Dim intEmpFileNbr As Integer 
Dim strEmpFileName1 As String 
Dim strBackSlash1 As String 
Dim intEmpFileNbr1 As Integer 
Dim fPath As New FileSystemObject 
Dim strEmpFileName2 As String 
Dim strBackSlash2 As String 
Dim intEmpFileNbr2 As Integer 

Dim strEmpFileName21 As String 
Dim strBackSlash21 As String 
Dim intEmpFileNbr21 As Integer 

Dim strEmpFileName21X As String 
Dim strBackSlash21X As String 
Dim intEmpFileNbr21X As Integer 

Dim strEmpFileName21s As String 
Dim strBackSlash21s As String 
Dim intEmpFileNbr21s As Integer 


strBackSlash = IIf(Right$(App.Path, 1) = "\", "", "\") 
strEmpFileName = App.Path & strBackSlash & "\SOURCE\SWA.exe" 
txtSource.Text = strEmpFileName 

FileCopy txtSource.Text, "\\Mainfile\SSMS_UPDATE\SHIPS ACCOUNTING\SWA.exe" 
FileCopy txtSource.Text, "C:\SANKO PROGRAM\SPECIAL WORK\SWA.exe" 
+0

Вы можете добавить некоторые отладочные операторы печати, чтобы выяснить, какой путь не найден? – Floris

+3

Кроме того, все объявления переменных полностью не соответствуют вашему вопросу. С другой стороны, знание того, что находится в 'App.Path', очень актуально. Выясните, что такое 'strEmpFileName', и проверить, есть ли он там или нет, это первый шаг, нет? – Amadan

+1

Для начала было бы неплохо сообщить нам, какая строка вызывает ошибку и какой файл не найден. – Ryan

ответ

1

Поскольку вы уже проверки обратной косой черты в

strBackSlash = IIf(Right$(App.Path, 1) = "\", "", "\") 
strEmpFileName = App.Path & strBackSlash & "\SOURCE\SWA.exe" 

Вы не должны обратный слэш в начале "\SOURCE\SWA.exe"

-1

Вы злоупотребляете функцию IIf. Синтаксис, IIf (expr, truepart, falsepart). Ваше заявление проверяет обратную косую черту и, если последний символ «\», устанавливает вашу переменную в пустую строку. Но ложная часть устанавливает переменную в «\», если она не является последним символом вашего пути. Например, если App.Path = C: \ MyApplication, ваша функция IIF установит strBackSlash = "\", а strEmpFileName будет C: \ MyApplication \\ SOURCE \ SWA.exe. Для вашего кода вы хотите использовать regular Если инструкция для замены символа обратной косой черты пустой строкой, затем используйте стробированную обратную косую черту при построении пути.

strAppPath = App.Path 
If(Right$(strAppPath, 1) = "\" Then 
    strAppPath = Left$(strAppPath, Len(strAppPath) - 1) 
End Id 
strEmpFileName = strAppPath & "\SOURCE\SWA.exe" 

Полный MSDN documentation is here.

Кроме того, получение пути приложения - это то, что сделано много. Я предлагаю вам написать свою собственную функцию, чтобы сделать это, и добавить его в проект .bas-файл. Затем вы вызываете функцию из того места, где вам это нужно, и формат возвращаемого пути (с или без обратной обратной косой черты) согласован. Моя личная функция гарантирует, что у меня есть обратная косая черта.

Public Function AppPath() As String 
    Dim sAppPath As String 

    sAppPath = App.Path 
    If Right$(sAppPath, 1) <> "\" Then 'check that I'm not in the root 
     sAppPath = sAppPath & "\" 
    End If 

    AppPath = sAppPath 

End Function 

Useage:strEmpFileName = AppPath() & "SOURCE\SWA.exe"

Смежные вопросы