Makale numarası: 151335 - Son Gözden Geçirme: 17 Ağustos 2005 Çarşamba - Gözden geçirme: 2.1

Ikili Access dosyaları ile çalışma

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ı.

Bu Sayfada

Hepsini aç | Hepsini kapa

Özet

Tek başına bir dosya bir dizi ilgili bayt disklerde bulunan birden fazla şey oluşur. Uygulamanızı bir dosyaya eriştiğinde, bunun ne Baytlar (tamsayılar, dizeler veya diğer veri türlerini) gösteren beklenen hakkındaki varsayımları yapmanız gerekir. Microsoft Excel Visual Basic for Applications, işlev ve deyimleri üzerinde Bu varsayımlar temel dosyayı işlemek izin sağlar. Işleme dosyaları, uygulama oluşturabilir, işleme ve büyük miktarda veri depolamak, birkaç veri kümesini de aynı anda erişmek ve veri diğer uygulamalarla paylaşma. Ancak, istediğiniz verileri depolamak için dosyaları kullanmak ikili erişim verir; veri türü veya standart kayıt uzunluğu gereksinimleri hakkında yapılan hiçbir varsayımlar vardır. Ancak, tam olarak nasıl verileri için dosya, doğru olarak almak için yazılan bilmelisiniz.

Daha fazla bilgi

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Rasgele dosya erişim farklı olarak, ikili dosya erişimi, değişken uzunlukta kayıt vardır. Erişilen bir ikili dosyada hiçbir harcanan alanı yok. 112 Dosya konumunda bir tamsayı olarak veri almak, bir <a0>Tamsayı</a0> veri türü, iki bayt gerektirir, çünkü bayt 112 ve 113 bir tamsayı değeri yapmak alınır.

Bu iki bayt daha önce depolanmış olarak uzun 4 baytlık bir parçası olabilir, önemli değildir. Bu dosyanın içeriğini izlemek ve bu tür eylemlerin doğru olduğundan emin olun, uygulamanızın kadar olur. Ikili dosya erişimi için bir örnek veri türü şudur:

   Type Person

      LName as String
      FName as String
      Age as Integer

   End Type
				


LName ve FName dizeleri, değişken uzunluklu veri türü olan unutmayın. Yaş bir 2 bayt veri türü, tamsayıdır.

Veri türlerine göre gerekli bayt hakkında daha fazla bilgi için bkz: çevrimiçi Yardım konusunda, "Veri türü Özet."

Access ikili dosyaların yararları

  • Değişken uzunluklu kayıtları'nı oluşturma disk alanından tasarruf etmek.
  • Okuma ve rasgele erişim için açılmış bir dosyada gibi ikili erişim için açılmış bir dosyaya yazın.

Ikili Access dosyalar dezavantajı

  • Tam olarak verileri, başarıyla işlemek için dosyaya nasıl yazıldığını bilmelisiniz.

Ikili erişim için açık olan dosyaya yazma

Değişken uzunlukta ikili erişim kayıtlarıyla olabileceğinden, gerçekte başarıyla okunabilir her alan kaydı ve boyutu hakkındaki bilgileri saklamak gereklidir. Bunu yapmanın iyi bir yolu, dize uzunluğunu belirtmek için bir tamsayı her dizesiyle saklamaktır. Böyle bir dosya oluşturma konusunda bir örnek aşağıda verilmiştir:

   Type Person

      LName as String
      FName as String
      Age as Integer

   End Type
				


   Sub WriteOneRecord(PRecord as Person)
   Dim StrSize as Integer

      ' Write the LName field and indicate the length of LName
      ' because it is a variable-length string.
      StrSize = Len(PRecord.LName)
      Put #1,,StrSize
      Put #1,,PRecord.LName

      ' Write the FName field and indicate the length of FName
      ' because it is a variable-length string.
      StrSize = Len(PRecord.FName)
      Put #1,,StrSize
      Put #1,,PRecord.FName

      ' Write the Age field - this is type integer so it is not
      ' necessary to indicate a length.
      Put #1,,PRecord.Age

   End Sub

   Sub WriteBinary()
   Dim P as Person

      ' Create a new file and open it for Binary access.
      Open "BINARY.TXT" For Binary As #1

      ' Create and write the first record.
      P.LName = "Doe"
      P.FName = "Jane"
      P.Age = 9
      WriteOneRecord P

      ' Create and write the second record.
      P.LName = "Thompson"
      P.FName = "Richard"
      P.Age = 4
      WriteOneRecord P

      ' Close the file.
      Close #1

   End Sub
				


WriteBinary makroyu çalıştırdığınızda, BINARY.TXT adlı bir dosya oluşturur.

34 Bayt (karşıt olarak aynı verilerle rasgele erişim için gereken 44 bayt) kadar bu örnekteki iki kayıtları alır. Not Defteri gibi bir metin düzenleyicisinde bu dosyayı açarken dosyanın okunamaz unutmayın. Bu, bir metin dosyası değil bir ikili dosya olur.

Sabit uzunluklu alanları ve rasgele erişim yerine, değişken uzunlukta alan ve ikili erişim kullanarak BIR denge rasgele erişim kullanarak bir tek bir işlev çağrısı ile tüm kaydı yazılabilir olur. Daha fazla esneklik ikili erişim sağlamasına karşın, g/Ç işlemleri işlemek için daha fazla kod de gerektirir.

Okuma dosyaları ikili erişimi için açıldı.

GET ifadesi bayt için kullanılan değişkeni için gereken bayt eşit bir sayı okur. Kullandığınızda değişken uzunluklu bir dizeyle Al, bir dosyadan okunan bayt sayısı, dize uzunluğu geçerli eşittir. Geçici değişken uzunluklu bir dize uzunluğunu ayarlamak için <a0></a0>, STRING $ işlevi değişken eşit boşluk veya boşluk belirli bir sayıya ayarlamak için kullanabilirsiniz.

Aşağıdaki örnekte, benzer WriteBinary makro ile oluşturulan bir dosyayı okur:

   Type Person

      LName as String
      FName as String
      Age as Integer

   End Type
				


   Sub ReadOneRecord(PRecord as Person)
   Dim StrSize As Integer

      ' Determine the size of the LName field and read it.
      Get #1, , StrSize
      PRecord.LName = String(StrSize," ")
      Get #1, , PRecord.LName

      ' Determine the size of the FName field and read it.
      Get #1, , StrSize
      PRecord.FName = String(StrSize," ")
      Get #1, , PRecord.FName

      ' Read the Age field.
      Get #1, , PRecord.Age

   End Sub


   Sub ReadBinary()
   Dim P as Person

      ' Open the file for Binary access.
      Open "BINARY.TXT" For Binary As #1

      ' Read each record in the file and display it in the Debug
      ' window.
      Do Until EOF(1)
         ReadOneRecord P
         Debug.Print P.LName, P.FName, P.Age
      Loop

      ' Close the file.
      Close #1

   End Sub
				

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 98 for Macintosh
Anahtar Kelimeler: 
kbmt kbcode kbhowto kbprogramming KB151335 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:151335  (http://support.microsoft.com/kb/151335/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.