Aracılığıyla paylaş


Kayıt Kümesi: AddNew, Edit ve Delete Nasıl Çalışır (ODBC)?

Bu konu MFC ODBC sınıfları için geçerlidir.

Bu konu CRecordset sınıfının AddNew, Düzenle ve Sil üye işlevlerinin nasıl çalıştığını açıklamaktadır.Kapsanan konular şunlardır:

  • Kayıt Eklemeler Nasıl Çalışır

  • Eklenen Kayıtların Görünürlüğü

  • Kayıtları Düzenleme Nasıl Çalışır

  • Kayıtların İşleri Nasıl Silinir

[!NOT]

Bu konu toplu satır yakalamanın uygulanmadığı CRecordset'ten türetilen nesnelere uygulanır.Toplu satır yakalama kullanıyorsanız bkz. Kayıt Kümesi: Kayıtları Toplu Yakalama (ODBC).

Ek olarak, RFX'in güncelleştirme işlemlerine ilişkin rolünü açıklayan Kayıt Alanı Değişimi: RFX Nasıl Çalışır? başlığını okumak isteyebilirsiniz.

Kayıt Ekleme

Bir kayıt kümesine yeni bir kayıt ekleme işlemi, kayıt kümesinin AddNew üye işlevini çağırmayı, yeni kayda ilişkin alan veri üyelerinin değerlerini ayarlamayı ve veri kaynağına kayıt yazmak için Update üye işlevini çağırmayı içerir.

AddNew öğesini çağırma ön koşulu olarak, kayıt kümesi salt okunur olarak açılmamış olmalıdır.CanUpdate ve CanAppend üye işlevleri bu koşulları belirlemenize izin verir.

AddNew öğesini çağırdığınızda:

  • İşlem iptal edilirse içeriğin geri yüklenebilmesi için düzenleme arabelleğindeki kayıt saklanır.

  • Alan veri üyeleri işaretlenir böylece daha sonra onlardaki değişiklikleri algılamak mümkün olur.Alan verisi üyeleri ayrıca temiz (değiştirilmemiş) olarak işaretlenir ve boş değerine ayarlanır.

AddNew başvurusunu çağırmanızın ardından, düzenleme arabelleği, değerlerle doldurulmaya hazır yeni bir boş kaydı temsil eder.Bunu yapmak için atayarak değerleri el ile ayarlayın.Bir alan için gerçek bir veri değeri belirtmek yerine Null değeri belirtmek için SetFieldNull öğesini çağırabilirsiniz.

Değişikliklerinizi uygulamak için Güncelleştir öğesini çağırın.Yeni kayıt için Güncelleştir komutunu çağırdığınızda:

  • ODBC sürücünüz :: SQLSetPos ODBC API işlevini destekliyorsa, MFC işlevi kayıtları veri kaynağına eklemek için kullanır.::SQLSetPos ile MFC, SQL deyimi oluşturmak ve işlemek zorunda olmadığından bir kaydı daha etkili bir şekilde ekleyebilir.

  • :: SQLSetPos kullanılamazsa, MFC şunları yapar:

    1. Hiçbir değişiklik algılanmazsa, Güncelleştir hiçbir şey yapmaz ve 0 döndürür.

    2. Değişiklikler bulunuyorsa Update, bir SQL INSERT ifadesi oluşturur.Bütün kirli alan veri üyeleri tarafından temsil edilen sütunlar EKLE deyiminde listelenir.Bir sütunun eklenmesini sağlamak için SetFieldDirty üye işlevini çağırın:

      SetFieldDirty( &m_dataMember, TRUE );
      
    3. Güncelleştir yeni kaydı kaydeder — EKLE deyimi yürütülür ve bir işlem sürmüyorsa kayıt veri kaynağında (ve bir anlık görüntü değilse bir kayıt kümesinde) kaydedilir.

    4. Saklı kayıt düzenleme tamponuna geri yüklenir.AddNew çağrısından önce geçerli olan kaydı EKLE deyiminin başarıyla yürütülmesine bakmaksızın tekrar geçerli olur.

    İpucuİpucu

    Yeni kaydın tam denetimi için, aşağıdaki yaklaşımı uygulayın: değer içerecek her alanın değerlerini ayarlayın ardından, alana bir işaretçi ile ve GERÇEK (varsayılan) parametresi ile SetFieldNull çağırarak Boş olarak kalacak tüm alanları açıkça ayarlayın.Bir alanın veri kaynağına yazılı olmadığından emin olmak istiyorsanız SetFieldDirty öğesini alana doğru işaretçi ile ve FALSE parametresi ile çağırın ve alanın değerini değiştirmeyin.Bir alanın Null olmasına izin verilip verilmediğini belirlemek için IsFieldNullable öğesini çağırın.

    İpucuİpucu

    Kayıt kümesi veri üyeleri değer değiştirdiğinde algılamak için, MFC bir kayıt kümesinde depolayabildiğiniz her bir veri türü için uygun bir pseudo_null değeri kullanır.PSEUDO_NULL değerine açıkça bir alan eklemeniz gerekiyorsa ve alan zaten Null olarak işaretliyse, SetFieldNull öğesini çağırıp, ilk parametrede alanın adresini, ikinci parametrede ise FALSE öğesini geçirmeniz gerekir.

Eklenen Kayıtların Görünürlüğü

Eklenen bir kayıt ne zaman kayıt kümenize görünebilir?Eklenen kayıtlar iki şeye bağlı olarak bazen görünür ve bazen de görünmez:

  • Sürücünüzün neyi yapabileceği.

  • Framework neden yararlanabilir.

ODBC sürücünüz :: SQLSetPos ODBC API işlevini destekliyorsa, MFC işlevi kayıtları eklemek için kullanır.::SQLSetPos ile, eklenen kayıtlar güncellenebilir herhangi bir MFC kayıt kümesi tarafından görülebilirİşlev için destek olmadan eklenen kayıtlar görünür duruma geçmez ve bunları görmek için Yeniden Sorgula işlevini çağırmanız gerekir.:: SQLSetPos kullanmak ayrıca daha etkilidir.

Varolan Kaydı Düzenleme

Bir kayıt kümesindeki varolan bir kaydı düzenleme işlemi, kayda gitmeyi, kayıt kümesinin Edit üye işlevini çağırmayı, yeni kayda ilişkin alan veri üyelerinin değerlerini ayarlamayı ve veri kaynağına değiştirilen kaydı yazmak için Update üye işlevini çağırmayı içerir.

Düzenle öğesini çağırma ön koşulu olarak, kayıt kümesi güncelleştirilebilir ve bir kayıt üzerinde olmalıdır.CanUpdate ve IsDeleted üye işlevleri bu koşulları belirlemenize izin verir.Geçerli kayıt da silinmemiş olmalı, kayıt kümesinde kayıtlar bulunmalıdır (hem IsBOF hem de IsEOF 0 değerine döner).

Düzenle komutunu çağırdığınızda, düzenleme ara belleğindeki kayıt (geçerli kayıt) depolanır.Saklanan kayıta ilişkin değerler daha sonra herhangi bir alanın değişip değişmediğini belirlemek için kullanılır.

Düzenle'yi çağırmanızın ardından, düzenleme arabelleği hala geçerli kaydı temsil eder, ancak şimdi alan veri üyelerinde yapılacak değişiklikleri kabul etmeye hazırdır.Kaydı değiştirmek için düzenlemek istediğiniz veri üyelerinin değerlerini elle ayarlamanız gerekir.Bir alan için gerçek bir veri değeri belirtmek yerine Null değeri belirtmek için SetFieldNull öğesini çağırabilirsiniz.Değişikliklerinizi uygulamak için Güncelleştir öğesini çağırın.

İpucuİpucu

AddNew veya Düzenle modundan çıkmak için AFX_MOVE_REFRESH parametresine sahip Move öğesini çağırın.

Güncelleştir öğesini çağırma ön koşulu olarak, kayıt kümesi boş olmamalıdır ve geçerli kayıt silinmemiş olmalıdır.IsBOF, IsEOF ve IsDeleted öğelerinin hepsi 0 döndürmelidir.

Düzenlenmiş kayıt için Güncelleştir komutunu çağırdığınızda:

  • ODBC sürücünüz :: SQLSetPos ODBC API işlevini destekliyorsa, MFC işlevi veri kaynağındaki kayıtları güncelleştirmek için kullanır.::SQLSetPos ile sürücü ikisi arasında fark olması durumunda sunucudaki kaydı güncelleyerek düzenleme arabelleğinizle sunucudaki kaydı karşılaştırır.::SQLSetPos ile MFC SQL deyimi oluşturmak ve işlemek zorunda olmadığından bir kaydı daha etkili bir şekilde güncelleyebilir.

    -veya-

  • :: SQLSetPos kullanılamazsa, MFC şunları yapar:

    1. Hiçbir değişiklik bulunmuyorsa Update hiçbir şey yapmaz ve 0 döndürür.

    2. Değişiklikler bulunuyorsa Update, bir SQL UPDATE ifadesi oluşturur.GÜNCELLEŞTİR deyiminde listelenen sütunlar değişmiş alan veri üyelerine dayanır.

    3. Güncelleştir değişiklikleri kaydeder — GÜNCELLEŞTİR deyimini yürütür — ve kayıt veri kaynağında değiştirilir, fakat işlem ilerliyorsa kaydedilmez (işlemin güncelleştirmeyi nasıl etkilediği ile ilgili bilgi için bkz: İşlem: Bir Kayıt Kümesinde (ODBC) Bir İşlem Gerçekleştirmek).ODBC kaydın bir kopyasını tutar ve bu kayıt da değişebilir.

    4. AddNew işleminden farklı olarak Düzenle işlemi saklanmış kaydı geri yüklemez.Düzenlenmiş kayıt geçerli kayıt olarak yerinde kalır.

    Uyarı notuUyarı

    Update çağırarak bir kayıt kümesini güncelleştirmeyi planladığınızda, kayıt kümenizin tablonun birincil anahtarını oluşturan tüm sütunları (veya tablodaki benzersiz dizinin tüm sütunlarını) veya sırayı tanımlayabilecek yeterli sütunu içerdiğinden emin olun.Bazı durumlarda, çerçeve, tablonuzda güncelleştirilecek kaydı tanımlamak için, yalnızca kayıt kümenizde seçili olan sütunları kullanabilir.Gerekli sütunların tümü olmadan tablodaki birden çok kayıt güncelleştirilebilir.Bu durumda Update öğesini çağırdığınızda çerçeve özel durumlar atar.

    İpucuİpucu

    AddNew veya Düzenle öğesini işlevlerden birini çağırdıktan sonra ama Güncelle öğesini çağırmadan önce çağırırsanız, düzenle ara belleği saklanmış kayıt ile yenilenir ve bu işlem sırasında yeni veya düzenlenmiş kaydın yerini alır.Bu davranış bir AddNew veya Düzenle öğesini durdurmaya ilişkin bir yol gösterir ve yeni birini başlatır: işlemde bulunan kaydın hatalı olduğunu belirlerseniz, sadece Düzenle veya AddNew öğesini tekrar çağırın.

Kayıt Silme

Kayıt kümesinden kayıt silmek için kaydırarak kayda erişmeniz ve kayıt kümesinin Sil üye işlevini çağırmanız gereklidir.AddNew ve Düzenle öğelerinden farklı olarak Sil öğesi Güncelleştir öğesine eşleşen bir çağrı gerektirmez.

silmek öğesini çağırma ön koşulu olarak, kayıt kümesi güncelleştirilebilir ve bir kayıt üzerinde olmalıdır.CanUpdate, IsBOF, IsEOF ve IsDeleted üye işlevleri bu koşulları belirlemenizi sağlar.

Sil komutunu çağırdığınızda:

  • ODBC sürücünüz :: SQLSetPos ODBC API işlevini destekliyorsa, MFC işlevi veri kaynağındaki kayıtları silmek için kullanır.:: SQLSetPos kullanmak genellikle SQL kullanmaktan daha etkilidir.

    -veya-

  • :: SQLSetPos kullanılamazsa, MFC şunları yapar:

    1. Düzenleme arabelleğindeki geçerli kayıt AddNew ve Düzenleme'de olduğu gibi yedeklenmez.

    2. Sil kaydı kaldıran bir SQL DELETE ifadesi oluşturur.

      Düzenleme arabelleğindeki geçerli kayıt AddNew ve Düzenleme'de olduğu gibi depolanmaz.

    3. Sil silme işlemini kaydeder — SİLME ifadesini gerçekleştirir.Kayıt veri kaynağında ve anlık bir görüntüyse, ODBC öğesinde, silindi olarak işaretlenir.

    4. Silinmiş kaydın değerleri hala kayıt kümesinin alan veri üyelerindedir ancak alan veri üyeleri Boş olarak işaretlenir ve kayıt kümesinin IsDeleted üye işlevi sıfır olmayan bir değere döndürür.

    [!NOT]

    Bir kaydı sildikten sonra, düzenleme arabelleğini yeni kayıttaki verilerle doldurmak için başka bir kayda gitmeniz gerekir.Sil öğesini tekrar çağırmak veya Düzenle'yi çağırmak hatadır.

Güncelleştirme işlemlerinde kullanılan SQL ifadeleri hakkında daha fazla bilgi için bkz. SQL.

Ayrıca bkz.

Kavramlar

Kayıt Kümesi (ODBC)

Kayıt Kümesi: Güncelleştirmeler Hakkında Daha Fazla Bilgi (ODBC)

Kayıt Alanı Değişimi (RFX)