-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"
4

2 に答える 2

-1

IIf 関数を誤用しています。構文、 IIf(expr, truepart, falsepart) . ステートメントはバックスラッシュをチェックし、最後の文字が「\」の場合は、変数を空の文字列に設定します。ただし、false の部分は、パスの最後の文字でない場合、変数を「\」に設定します。たとえば、App.Path = C:\MyApplicationの場合、IIF 関数は strBackSlash = "\" を設定し、strEmpFileName はC:\MyApplication\\SOURCE\SWA.exeになります。コードでは、通常のIfステートメントを使用してバックスラッシュ文字を空の文字列に置き換えてから、パスを作成するときにハードコーディングされたバックスラッシュを使用します。

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

完全なMSDN ドキュメントはここにあります

また、アプリケーション パスの取得は、多くの作業で行われます。これを行う独自の関数を作成し、それをプロジェクトの .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

使用法: strEmpFileName = AppPath() & "SOURCE\SWA.exe"

于 2013-07-10T14:59:32.723 に答える