Aracılığıyla paylaş


Kayıt Alanı Değişimi: RFX Nasıl Çalışır?

Bu konu RFX işlemini açıklamaktadır. Bu, aşağıdakileri kapsayan ileri düzey bir konudur:

  • RFX ve kayıt kümesi

  • RFX işlemi

Not

Bu konu toplu satır yakalamanın uygulanmadığı CRecordset'ten türetilen sınıflara uygulanır. toplu satır yakalama kullanıyorsanız, toplu kayıt alanı değişimi (Toplu RFX) gerçekleştirilir. Toplu RFX, RFX'e benzer. Farklılıkları anlamak için bkz. Kayıt Kümesi: Kayıtları Toplu Olarak Yakalama (ODBC).

RFX ve Kayıt Kümesi

Kayıt kümesi nesnesinin alan veri üyeleri, birlikte çekilerek bir kaydın seçili sütunlarını tutan bir düzenleme arabelleği oluşturur. Kayıt kümesi ilk açıldığında ve ilk kaydı okumak üzere olduğunda, RFX her bir seçilmiş sütunu uygun alan veri üyesiyle bağlar (ilişkilendirir). Kayıt kümesi bir kaydı güncelleştirdiğinde, RFX sürücüye bir SQL GÜNCELLEŞTİR veya EKLE deyimi göndermek üzere ODBC API işlevlerini çağırır. RFX yazılacak olan sütunları belirlemek için kendi alan veri üyeleri bilgisini kullanır.

Çerçeve, belirli aşamalarda düzenleme arabelleğini yedekler böylelikle gerektiğinde içeriğini geri yükleyebilir. RFX, yeni kayıt eklemeden ve varolan kaydı düzenlemeden önce düzenleme arabelleğini yedekler. Bazı durumlarda, örneğin AddNew öğesini izleyen bir Güncelleştir çağrısından sonra, kayıt düzenleme arabelleğini geri yükler. Yeni değiştirdiğiniz düzenleme arabelleğini örneğin Güncelleştir öğesini çağırmadan önce başka bir kayda taşıyarak kapatırsanız düzenleme arabelleği geri yüklenmez.

RFX Veri kaynağı ile kayıt kümesinin alan veri üyeleri arasında veri alışverişinin yanı sıra bağlama parametrelerini yönetir. Kayıt kümesi açıldığında, tüm parametre veri üyeleri CRecordset::Open öğesinin oluşturduğu SQL deyimindeki "?" yer tutucuların sırasına göre bağlanır. Daha fazla bilgi için bkz. Kayıt Kümesi: Bir Kayıt Kümesini Parametreleştirme (ODBC).

Kayıt kümesi sınıfınız DoFieldExchange öğesinin tüm çalışmasını ve her iki yönde de veri taşıma işlemini geçersiz kılar. İletişim veri alışverişi (DDX) gibi, RFX'in sınıfınızın veri üyeleri hakkında bilgiye gereksinimi vardır. Sihirbaz, sihirbazla birlikte belirlenen alan veri üyesi adlarına ve veri türlerine dayanarak DoFieldExchange öğesinin kayıt kümesi özellikli uygulamasını yazmak yoluyla gerekli bilgiyi sağlar.

Kayıt Alanı Değiştirme İşlemi

Bu bölümde bir kayıt kümesi nesnesi açıldığında ve kayıtları eklediğinizde, güncelleştirdiğinizde ve sildiğinizde olan RFX olayları dizisi açıklanmaktadır. Bu konudaki Kayıt Kümesi Açıkken RFX İşlemlerinin Sırası tablosu ve Kaydırırken RFX İşlemlerinin Sırası tablosu RFX kayıt kümesindeki bir Taşı komutunu işlediğinde ve bir güncellemeyi yönettiğinde işlemi gösterir. Bu işlemler sırasında, DoFieldExchange çok sayıda farklı işlemi yapmak üzere çağırılır. CFieldExchange nesnesinin M_nOperation veri üyesi hangi işlemi istendiğini belirler. Bu belgeyi okumadan önce Kayıt Kümesi: Kayıt Kümeleri Kayıtları Nasıl Seçer (ODBC) ve Kayıt Kümesi: Kayıt Kümeleri Kayıtları Nasıl Günceller (ODBC) bölümlerini okumayı faydalı bulabilirsiniz.

RFX: Sütunların ve Parametrelerin Başlangıçta Bağlanması

Bir kayıt kümesi nesnesinin üye işlevini çağırdığınızda aşağıdaki RFX etkinlikleri gösterilen sırayla oluşur:

  • Kayıt kümesi deri üyeleri içeriyorsa, çerçeve kayıt kümesinin SQL ifade dizisindeki parametre yer tutucularını parametrelere bağlamak için DoFieldExchange çağırır. Parametre değerinin veri türüne bağlı gösterimi, SELECT deyiminde bulunan her bir yer tutucu için kullanılır. Bu, SQL ifadesi hazırlandıktan sonra, fakat çalıştırılmadan önce olur. Deyim hazırlama hakkında daha fazla bilgi için ODBC Programcısının Başvuru Kaynağı konusunda ::SQLPrepare işlevine bakın.

  • Çerçeve, seçili sütunların değerlerini kayıt kümesinde karşılık gelen alan veri üyelerine bağlamak için DoFieldExchange öğesini ikinci kez çağırır. Bu, kayıt kümesi nesnesini, ilk kaydın sütunlarını içeren bir düzen arabelleği olarak oluşturur.

  • Kayıt kümesi SQL deyimini yürütür ve veri kaynağı ilk kaydı seçer. Kaydın sütunları kayıt kümesinin alan veri üyelerine yüklenir.

Aşağıdaki tablo bir kayıt kümesini açtığınızda RFX işlemleri dizisini gösterir.

Kayıt Kümesi Açma Sırasında RFX İşlemlerinin Sırası

İşleminiz

DoFieldExchange işlemi

Veritabanı/SQL işlemi

1. Kayıt kümesi açın.

 

 

 

2. Bir SQL deyimi oluşturun.

 

 

 

3. SQL gönderin.

 

4. Parametre verisi üyelerini bağlayın.

 

 

5. Alan verisi üyelerini sütunlara bağlayın.

 

 

 

6. ODBC hamleyi yapar ve verileri doldurur.

 

7. C++ için verileri düzeltin.

 

Kayıt kümeleri, aynı SQL ifadesiyle daha hızlı yeniden sorgulama gerçekleştirmek için hazırlanan ODBC yürütmesini kullanır. Hazırlanan yürütme hakkında daha fazla bilgi için MSDN Kitaplığındaki ODBC SDK Programcının Başvurusu konusuna bakın.

RFX: Kaydırma

Bir kayıttan diğerine kaydırma yaptığınızda, çerçeve alan verisi üyelerinde daha önceden saklanan değerleri yeni kaydın değerleriyle değiştirmek için DoFieldExchange çağırır.

Aşağıdaki tablo kullanıcı kayıttan kayda geçerken RFX işlemleri dizisini gösterir.

Kaydırma Sırasında RFX İşlemlerinin Sırası

İşleminiz

DoFieldExchange işlemi

Veritabanı/SQL işlemi

1. MoveNext öğesini ya da diğer Taşıma işlevlerinden birini çağırın.

 

 

 

 

2. ODBC hamleyi yapar ve verileri doldurur.

 

3. C++ için verileri düzeltin.

 

RFX: Yeni Kayıt Ekleme ve Varolan Kayıtları Düzenleme

Yeni bir kayıt eklerseniz, kayıt grubu yeni kaydın içeriğini yapılandırmak için ara bellek olarak çalışır. Kayıt eklemede olduğu gibi, kayıtları düzenlemek kayıt kümesinin alan veri üyelerinin değerlerini değiştirmeyi içerir. RFX bakış açısından, sıralama aşağıdaki gibidir:

  1. Kayıt kümelerinin Yeni Ekle veya Düzenle üye işlevlerine yapılan çağrılar RFX'in geçerli düzenleme arabelleğini depolamasına neden olur böylelikle daha sonra geri yüklenebilir.

  2. AddNewveya Edit, RFX'in değiştirilen alan verisi üyelerini tespit edebilmesi için düzenleme arabelleğindeki alanları hazırlar.

    Yeni bir kaydın yeni değerlerin karşılaştırılacağı önceki bir değeri olmadığı için, AddNew her alan veri üyesinin değerini bir pseudo_null değerine ayarlar. Daha sonra, Güncelleştir çağırdığınızda, RFX her veri üyesinin değerini pseudo_null değeri ile karşılaştırır. Fark varsa, veri üyesi ayarlanmış demektir. (PSEUDO_NULL doğru bir Boş değere sahip bir kayıt sütunuyla aynı olmadığı gibi bunlardan hiçbiri C++ NULL ile aynı değildir.)

    AddNew için Güncelleştir çağrısından farklı olarak, Düzenle için Güncelleştir çağrısı PSEUDO_NULL kullanmaktansa güncelleştirilmiş değerleri daha önce saklanmış değerlerle karşılaştırır. Fark AddNew öğesinin karşılaştırma için önceden depolanan hiçbir değerinin olmamasıdır.

  3. Değerlerini düzenlemek ya da yeni bir kayıt için doldurulmasını istediğiniz alan veri üyeleri değerlerini doğrudan ayarlayın. Bu SetFieldNull öğesini çağırmayı içerir.

  4. Güncelleştir çağrınız adım 2'de açıklandığı gibi (bakınız Kaydırma Sırasında RFX İşlemlerinin Sırası tablosu) değişen alan veri üyelerini denetler. Hiçbiri değişmediyse, Güncelleştir 0 döndürür. Bazı alan veri üyeleri değiştiyse, Güncelleştir kayıt içinde tüm güncelleştirilmiş alanlar için değerleri içeren bir SQL EKLE bildirisi hazırlar ve yürütür.

  5. AddNew için, Güncelleştirme AddNew çağrısından önce geçerli olan kayıtların önceden depolanmış değerlerini geri yükleyerek sonlanır. Düzenleme için yeni, düzenlenmiş değerler yerinde kalır.

Aşağıdaki tablo yeni bir kayıt eklediğinizde ya da varolan bir kaydı düzenlediğinizde RFX işlemleri dizisini gösterir.

Yeni Ekleme ve Düzenleme Sırasında RFX İşlemlerinin Sırası

İşleminiz

DoFieldExchange işlemi

Veritabanı/SQL işlemi

1. AddNew veya Düzenle öğesini çağırın.

 

 

 

2. Düzen arabelleğini yedekleyin.

 

 

3. AddNew için, alan veri üyelerini "temiz" ve Boş olarak işaretleyin.

 

4. Kayıt kümesinin alan verisi üyelerine değerler atayın.

 

 

5. Güncelle öğesini çağırın.

 

 

 

6. Değiştirilen alanları kontrol edin.

 

 

7. AddNew için SQL INSERT deyimini veya Düzenle için UPDATE deyimini oluşturun.

 

 

 

8. SQL gönderin.

 

9. AddNew için, düzenleme arabelleğini yedeklenmiş içeriklerine geri yükleyin. Düzenleme için, yedeklemeyi silin.

 

RFX: Varolan Kayıtları Silme

Kaydı sildiğinizde, RFX, size kaydın silindiğini ve üstünden ayrılmanız gerektiğini hatırlatmak için tüm alanları NULL olarak ayarlar. Diğer bir RFX sıralama bilgisi gerekmez.

Ayrıca bkz.

Görevler

Bir MFC ODBC müşteri Ekleniyor

Başvuru

Macros, Global Functions, and Global Variables

CFieldExchange Class

CRecordset::DoFieldExchange

Kavramlar

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