Makale numarası: 172711 - Son Gözden Geçirme: 20 Ocak 2007 Cumartesi - Gözden geçirme: 3.1

ACC: FileCopy ekstresi değil hedef dosya Aç

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Gelişmiş: Uzman kodlama, birlikte çalışabilirlik ve çok kullanıcılı becerileri gerektirir.

Bu Sayfada

Hepsini aç | Hepsini kapa

Belirtiler

Programsal olarak FileCopy ifade içeren bir dosyayı Visual Basic for Applications kopyaladığınızda, aşağıdaki hata iletisini alabilirsiniz:
Çalışma zamanı hatası '70'

İzin Verilmedi

Bu makalede, Visual Basic for Applications ve programlama Microsoft Access ile sağlanan araçları kullanarak Microsoft Access uygulamaları oluşturma bildiğinizi varsayar. Hakkında daha fazla bilgi için Visual Basic for Applications "Building uygulamaları ile Microsoft Access" el ile sürümü için bkz.

Neden

Dosya şu anda açık olan dosyayı kopyalarken gelen FileCopy ifade engeller bulunuyor.

Çözüm

FileCopy deyimi kullanmak yerine, programlı olarak dosya kopyalamak için aşağıdaki yöntemlerden birini kullanın.

UYARı: Açık bir dosyayı kopyalamak, aşağıdaki işlevleri sağlar. Kopyalama işlemi sürecinde, kaynak dosya değiştirildiğinde, hedef dosya eksik olabilir veya bozulabilir.

Yöntem 1 - CopyFile() işlevi Windows API çağrı

Program aracılığıyla dosya kopyalamak için bir Microsoft Windows API ' CopyFile() işlevini çağırmak için yöntemidir. Microsoft Windows API ' CopyFile() işlevini çağırmak için aşağıdaki adımları izleyin:
  1. Bu makalenin ilerisindeki adımları 1 ile 4 "Adımlar için oluşturma davranışı" bölümünü tamamlayın.
  2. Bir modül oluşturun ve tanımlamalar aşağıdaki satırları yazın bölümü:
          Option Explicit
    						
          Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
          (ByVal lpExistingFileName As String, _
          ByVal lpNewFileName As String, _
          ByVal bFailIfExists As Long) As Long
    						
  3. Aşağıdaki yordam yazın:
          Sub CopyFile(SourceFile As String, DestFile As String)
          '---------------------------------------------------------------
          ' PURPOSE: Copy a file on disk from one location to another.
          ' ACCEPTS: The name of the source file and destination file.
          ' RETURNS: Nothing
          '---------------------------------------------------------------
            Dim Result As Long
             If Dir(SourceFile) = "" Then
                MsgBox Chr(34) & SourceFile & Chr(34) & _
                   " is not valid file name."
             Else
                Result = apiCopyFile(SourceFile, DestFile, False)
             End If
          End Sub
    						
  4. Bu yordam sınamak için <a0></a0>, hata ayıklama penceresinde aşağıdaki satırı yazın ve ENTER tuşuna basın:

    CopyFile "< yolu Northwind.mdb >", "C:\Northwind.mdb"

    Bunu Microsoft Access'in başka bir kopyası şu anda açık olmasına karşın, Northwind.mdb, C sürücüsünün kök klasöre kopyalanır unutmayın.

Yöntem 2 - MS-DOS COPY komutunu arama

Program aracılığıyla dosya kopyalamak için başka bir MS-DOS COPY komutunu Shell() işlev Visual Basic for Applications çağırmak için yöntemidir. MS-DOS COPY komutunu aramak için aşağıdaki adımları izleyin:
  1. Bu makalenin ilerisindeki adımları 1 ile 4 "Adımlar için oluşturma davranışı" bölümünü tamamlayın.
  2. Bir modül oluşturun ve henüz yoksa Tanımlamalar bölümüne aşağıdaki satırı yazın:
          Option Explicit
    						
  3. Aşağıdaki yordam Microsoft Windows 95 kullanıyorsanız, aşağıdakileri yazın:
          Sub CopyFile(SourceFile As String, DestFile As String)
          '---------------------------------------------------------------
          ' PURPOSE: Copy a file on disk from one location to another.
          ' ACCEPTS: The name of the source file and destination file.
          ' RETURNS: Nothing
          '---------------------------------------------------------------
             Dim CopyString As String
             If Dir(SourceFile) = "" Then
                MsgBox Chr(34) & SourceFile & Chr(34) & _
                   " is not a valid file name."
             Else
                SourceFile = Chr(34) & SourceFile & Chr(34)
                DestFile = Chr(34) & DestFile & Chr(34)
                CopyString = "COMMAND.COM /C COPY " & SourceFile & _
                   " " & DestFile
                Call Shell(CopyString, 0)
             End If
          End Sub
    
       If you are using Microsoft Windows NT, use the same procedure, but
       change the line
    
          CopyString = "COMMAND.COM /C COPY " & SourceFile & _
    
       to:
    
          CopyString = "CMD.EXE /C COPY " & SourceFile & _
    						
  4. Bu yordam sınamak için <a0></a0>, hata ayıklama penceresinde aşağıdaki satırı yazın ve ENTER tuşuna basın:

    CopyFile "< yolu Northwind.mdb >", "C:\Northwind.mdb"

    Bunu Microsoft Access'in başka bir kopyası şu anda açık olmasına karşın, Northwind.mdb, C sürücüsünün kök klasöre kopyalanır unutmayın.

Durum

Bu davranış tasarım yüzündendir.

Daha fazla bilgi

Davranışı yeniden oluşturma adımları


  1. Microsoft Access'i başlatın.
  2. Northwind.mdb örnek veritabanını açın.
  3. Microsoft Access yeni bir örneğini başlatır.
  4. Yeni bir boş veritabanı oluşturun.
  5. Bir modül oluşturun ve henüz yoksa Tanımlamalar bölümüne aşağıdaki satırı yazın:
          Option Explicit
    						
  6. Aşağıdaki yordam yazın:
          Sub CopyFile(SourceFile As String, DestFile As String)
             FileCopy SourceFile, DestFile
          End Sub
    						
  7. Bu yordam sınamak için <a0></a0>, hata ayıklama penceresinde aşağıdaki satırı yazın ve ENTER tuşuna basın:

    CopyFile "< yolu Northwind.mdb >", "C:\Northwind.mdb"

    Not "Belirtiler" bölümünde listelenen hata alırsınız.

Referanslar

FileCopy bildirimi hakkında daha fazla bilgi için Yardım dizini "FileCopy deyim" arama

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition
Anahtar Kelimeler: 
kbmt kbprb kbprogramming KB172711 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:172711  (http://support.microsoft.com/kb/172711/en-us/ )
Retired KB ArticleKullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.