Makale numarası: 190642 - Son Gözden Geçirme: 02 Mart 2005 Çarşamba - Gözden geçirme: 2.2

SORUN: ADODC adDoAddNew yeniden Konumlandır EOFAction, iş hatası

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

Belirtiler

EOF taşıdığınızda, yeni, boş bir kayıt görüntülenir ve ADO veri denetimin EOFAction özelliği, 2-adDoAddNew ayarlanır. Etmez verileri için yeni bir kayıt girin ve kayda, hata iletisini alırsınız:
Boş bir satır ekleyemiyor - en az bir sütun değeri ayarlanmış olmalıdır.

Neden

ADO, bir recordset içinde bir taşı örtülü bir güncelleştirme yapar. 2-AdDoAddNew ADO veri denetimin EOFAction özelliğini ayarladığınızda, ADO yeni bir kayıt ekler ve ilişkili denetimlerde kaydını düzenlemek kullanıcının sağlar. ADO, kullanıcı, yeni oluşturulan kaydını devre dışı geçtiğinde, bir recordset mu güncelleştirme. Kullanıcı bir kayıt eklemeye verdi, ilişkili denetimler boş bırakır ve 0, 50'yeni oluşturulan kayıt devre dışı "boş bir satır eklenemiyor - en az bir sütun değeri ayarlanmış olmalıdır" iletiyi görüntülemek, ADO denenen güncelleştirmenin neden taşır.

ADO veri denetimin EOFAction - adDoAddNew DAO veri denetimin EOFAction - Ekle yeni davranış ve uzak veri denetimin EOFAction - rdAddNew davranış farklı davranıştır. Yeni eklenen kaydını devre dışı veri denetimini veya uzaktan veri denetimini kullanırken taşırsanız, bir ileti alamazsınız.

Çözüm

Bu davranışa, hata işleme kodunu ADO veri denetimin hata olay yordamında ekleyerek çalışabilirsiniz. Hata numarası 16389 bu özel hata işlemek için kod örneği şöyledir:
    Private Sub Adodc1_Error(ByVal ErrorNumber As Long, _
        Description As String,  ByVal Scode As Long, _
        ByVal Source As String, ByVal HelpFile As String, _
        ByVal HelpContext As Long, fCancelDisplay As Boolean)

        If ErrorNumber = 16389 Then
            If Adodc1.Recordset.State = ADODB.adStateOpen Then
                Adodc1.Recordset.CancelUpdate
                Adodc1.Recordset.MoveLast
                fCancelDisplay = True
            End If
        End If
    End Sub
				

Durum

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

Daha fazla bilgi

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

Bu örnek, Visual Basic ile gelen Biblio.MDB veritabanı kullanır.
  1. Visual Basic'te, yeni bir standart exe DOSYASı) projesi oluşturun. Varsayılan olarak, Form1 oluşturulur.
  2. Proje menüsünde bileşenleri seçin ve sonra Microsoft ADO veri denetimini seçin.
  3. Bir metin kutusu ve Form1 bir ADO veri denetimi çizin.
  4. ADO veri denetimin özelliklerini ayarlayın:

    1. ConnectionString özelliği (Değiştir veri kaynağı yolunda dize aşağıda sisteminizde Biblio.MDB konumunu yansıtacak şekilde) ayarlayın:
               Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program
                    Files\Microsoft Visual Studio\VB98\Biblio.mdb
         
      								
    2. EOFAction özelliği, 2-adDoAddNew ayarlayın.
    3. RecordSource özelliği, yazarlar için ayarlayın.
  5. Metin kutusunun özelliklerini ayarlayın.

    1. DataSource özelliği ADODC1 için ayarlayın.
    2. DataField özelliği yazar ayarlayın.
  6. Uygulama sınayın.

    1. Çalıştır'ı tıklatın. Metin kutusunu ilk yazar görüntülemelidir.
    2. ADODC'ın MoveLast düğmesini tıklatın. Metin kutusunun son yazar görüntüler.
    3. ADODC'ın MoveNext düğmesini tıklatın. ADODC's ayarlandığından EOFAction 2-adDoAddNew, boş metin kutusu, veri girişini hazır görürsünüz.
    4. ADODC'ın MovePrevious düğmesi, AddNew'ı iptal etmek için Ek Yardım düğmesini tıklatın. Iletiyi görürsünüz:
      Boş bir satır ekleyemiyor - en az bir sütun değeri ayarlanmış olmalıdır.
      Ileti kutusu kullanıcının Tamam düğmesini tıklatın.
    5. Devam etmek için <a0></a0>, gerekir ya da metin kutusuna, yeni bir yazarın adını yazın sonra kayda veya Form1'ın Kapat düğmesini tıklatın.
  7. Iş kodu geçici ekleyin:

    1. Tasarım modunda, ADO veri denetimde, olay yordamı penceresini açmak için çift tıklatın.
    2. ADO veri denetimin hata olay yordamına aşağıdaki kodu kopyalayın:
               If ErrorNumber = 16389 Then
                  If Adodc1.Recordset.State = ADODB.adStateOpen Then
                      Adodc1.Recordset.CancelUpdate
                      Adodc1.Recordset.MoveLast
                      fCancelDisplay = True
                  End If
               End If
         
      								
  8. Uygulama sınayın. Artık, hata iletisi alırsınız.

Referanslar

Visual Basic'te seçme Yardım, arama... ve "ADO veri denetimi" girin.

Kendi <a0>ADO</a0> veri denetimi içeren formu, denetimi seçin ve F1 tuşuna basın.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Anahtar Kelimeler: 
kbmt kbprb KB190642 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:190642  (http://support.microsoft.com/kb/190642/en-us/ )