Aracılığıyla paylaş


Kayıt Alanı Değişimi: RFX'in Çalışması

Bu konuda RFX işlemi açıklanmaktadır. Bu, aşağıdaki konuları kapsayan gelişmiş bir konudur:

Dekont

Bu konu, toplu satır getirmenin uygulanmadığı türetilmiş CRecordset sınıflar için geçerlidir. Toplu satır getirme kullanıyorsanız, toplu kayıt alanı değişimi (Toplu RFX) uygulanır. Toplu RFX, RFX'e benzer. Farklılıkları anlamak için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

RFX ve Kayıt Kümesi

Kayıt kümesi nesnesinin birlikte alınan alan verileri üyeleri, bir kaydın seçili sütunlarını tutan bir düzenleme arabelleği oluşturur. Kayıt kümesi ilk kez açıldığında ve ilk kaydı okumak üzereyken, RFX seçilen her sütunu uygun alan veri üyesinin adresine bağlar (ilişkilendirir). Kayıt kümesi bir kaydı güncelleştirdiğinde RFX, sürücüye SQL UPDATE veya INSERT deyimi göndermek için ODBC API işlevlerini çağırır. RFX, yazılacak sütunları belirtmek için alan veri üyeleri bilgisini kullanır.

Çerçeve, gerekirse içeriğini geri yükleyebilmesi için düzenleme arabelleği belirli aşamalarda yedekler. RFX, yeni kayıt eklemeden önce ve var olan bir kaydı düzenlemeden önce düzenleme arabelleği yedekler. Bazı durumlarda, örneğin, aşağıdaki AddNewbir Update çağrıdan sonra düzenleme arabelleği geri yükler. Örneğin, çağrısından Updateönce başka bir kayda geçerek yeni değiştirilen düzenleme arabelleğinden vazgeçerseniz düzenleme arabelleği geri yüklenmez.

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

Kayıt kümesi sınıfınızın geçersiz kılma işlemi DoFieldExchange tüm işleri yapar ve verileri her iki yönde taşır. İletişim kutusu veri değişimi (DDX) gibi RFX'in de sınıfınızın veri üyeleri hakkında bilgi alması gerekir. Sihirbaz, sihirbazla belirttiğiniz alan veri üyesi adlarına ve veri türlerine göre sizin için kayıt kümesine özgü bir uygulaması DoFieldExchange yazarak gerekli bilgileri sağlar.

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

Bu bölümde, kayıt kümesi nesnesi açılırken ve siz kayıtları eklerken, güncelleştirirken ve silerken RFX olaylarının sırası açıklanmaktadır. Kayıt Kümesi Açma Sırasında RFX İşlemlerinin Sırası tablosu ve bu konudaki Kaydırma Sırasında RFX İşlemlerinin Sırası tablosu, RFX kayıt kümesindeki bir Move komutu işlediğinde ve RFX bir güncelleştirmeyi yönetirken işlemi gösterir. Bu işlemler sırasında, DoFieldExchange birçok farklı işlemi gerçekleştirmek için çağrılır. m_nOperation Hangi işlemin istendiğini CFieldExchange nesnesinin veri üyesi belirler. Bu malzemeyi okumadan önce Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC) ve Kayıt Kümesi: Kayıt Kümelerinin Kayıtları Güncelleştirme (ODBC) konularını okumanız yararlı olabilir.

RFX: Sütunların ve Parametrelerin İlk Bağlaması

Aşağıdaki RFX etkinlikleri, bir kayıt kümesi nesnesinin Open member işlevini çağırdığınızda gösterilen sırayla gerçekleşir:

  • Kayıt kümesinin parametre veri üyeleri varsa, çerçeve, parametreleri kayıt kümesinin SQL deyimi dizesindeki parametre yer tutucularına bağlamak için çağırır DoFieldExchange . SELECT deyiminde bulunan her yer tutucu için parametre değerinin veri türüne bağımlı gösterimi kullanılır. Bu, SQL deyimi hazırlandıktan sonra ancak yürütülmeden önce gerçekleşir. Deyim hazırlama hakkında bilgi için ODBC Programcı Başvurusu'ndaki işleve bakın::SQLPrepare.

  • Çerçeve, seçilen sütunların değerlerini kayıt kümesindeki ilgili alan veri üyelerine bağlamak için ikinci bir kez çağırır DoFieldExchange . Bu, kayıt kümesi nesnesini ilk kaydın sütunlarını içeren bir düzenleme 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 tabloda, kayıt kümesini açtığınızda RFX işlemlerinin sırası gösterilmektedir.

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

Bu DoFieldExchange işlemi Veritabanı/SQL işlemi
1. Kayıt kümesini açın.
2. SQL deyimi oluşturun.
3. SQL'i gönderin.
4. Parametre veri üyelerini bağlayın.
5. Alan veri üyelerini sütunlara bağlayın.
6. ODBC taşıma işlemini yapar ve verileri doldurur.
7. C++ verilerini düzeltin.

Kayıt kümeleri, aynı SQL deyimiyle hızlı yeniden sorgulamaya olanak sağlamak için ODBC'nin hazırlanmış yürütmesini kullanır. Hazırlanan yürütme hakkında daha fazla bilgi için bkz . ODBC Programcı Başvurusu.

RFX: Kaydırma

Bir kayıttan diğerine kaydırdığınızda, çerçeve daha önce alan veri üyelerinde depolanan değerleri yeni kaydın değerleriyle değiştirmek için çağırır DoFieldExchange .

Aşağıdaki tabloda, kullanıcı kayıttan kayda geçtiğinde RFX işlemlerinin sırası gösterilmektedir.

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

Bu DoFieldExchange işlemi Veritabanı/SQL işlemi
1. Çağırın MoveNext veya diğer Move işlevlerinden birini seçin.
2. ODBC, taşıma işlemini yapar ve verileri doldurur.
3. C++ verilerini düzeltin.

RFX: Yeni Kayıtlar Ekleme ve Mevcut Kayıtları Düzenleme

Yeni kayıt eklerseniz kayıt kümesi, yeni kaydın içeriğini oluşturmak için düzenleme arabelleği olarak çalışır. Kayıt eklemede olduğu gibi, kayıtların düzenlenmesi de kayıt kümesinin alan veri üyelerinin değerlerini değiştirmeyi içerir. RFX perspektifinden bakıldığında sıra aşağıdaki gibidir:

  1. Kayıt kümesinin AddNew veya Edit üye işlevine yapılan çağrınız RFX'in geçerli düzenleme arabelleğinin daha sonra geri yüklenebilmesi için depolanmasına neden olur.

  2. AddNew veya Edit RFX'in değiştirilen alan veri üyelerini algılaması için düzenleme arabelleğindeki alanları hazırlar.

    Yeni bir kaydın, yenileriyle karşılaştıracak önceki değerleri olmadığından, AddNew her alan veri üyesinin değerini bir PSEUDO_NULL değerine ayarlar. Daha sonra çağrısı yaptığınızda UpdateRFX, her veri üyesinin değerini PSEUDO_NULL değeriyle karşılaştırır. Bir fark varsa, veri üyesi ayarlanmıştır. (PSEUDO_NULL, true Null değerine sahip bir kayıt sütunuyla aynı değildir veya bunlardan biri C++ NULL ile aynı değildir.)

    çağrısının UpdateAddNewaksine çağrısı, UpdateEdit güncelleştirilmiş değerleri PSEUDO_NULL kullanmak yerine daha önce depolanmış değerlerle karşılaştırır. Aradaki AddNew fark, karşılaştırma için daha önce depolanmış değer olmamasıdır.

  3. Değerlerini düzenlemek istediğiniz veya yeni bir kayıt için doldurulmasını istediğiniz alan verisi üyelerinin değerlerini doğrudan ayarlarsınız. Bu çağrıyı SetFieldNulliçerebilir.

  4. Güncelleştirme çağrınız, 2. adımda açıklandığı gibi değiştirilen alan veri üyelerini denetler (bkz. Kaydırma Sırasında RFX İşlemlerinin Sırası). Hiçbiri değişmediyse Update 0 döndürür. Bazı alan verileri üyeleri değiştiyse, Update kayıttaki tüm güncelleştirilmiş alanların değerlerini içeren bir SQL INSERT deyimini hazırlar ve yürütür.

  5. için AddNew, Update çağrısından önce geçerli olan kaydın önceden depolanmış değerlerini geri yükleyerek sonuç verir AddNew . için Edit, yeni, düzenlenen değerler yerinde kalır.

Aşağıdaki tabloda, yeni bir kayıt eklediğinizde veya var olan bir kaydı düzenlediğinizde RFX işlemlerinin sırası gösterilmektedir.

AddNew ve Edit Sırasında RFX İşlemlerinin Sırası

Bu DoFieldExchange işlemi Veritabanı/SQL işlemi
1. Veya Editöğesini arayınAddNew.
2. Düzenleme arabelleği yedekleyin.
3. için AddNew, alan veri üyelerini "temiz" ve Null olarak işaretleyin.
4. Kayıt kümesi alan veri üyelerine değer atayın.
5. öğesini arayın Update.
6. Değiştirilen alanları denetleyin.
7. için SQL INSERT deyimi veya için AddNewEditUPDATE deyimi oluşturun.
8. SQL'i gönderin.
9. için AddNew, düzenleme arabelleği yedeklenen içeriğine geri yükleyin. için Edityedeklemeyi silin.

RFX: Mevcut Kayıtları Silme

Bir kaydı sildiğinizde RFX, kaydın silindiğini ve bu kaydın dışına taşımanız gerektiğini anımsatıcı olarak tüm alanları NULL olarak ayarlar. Başka RFX dizisi bilgilerine ihtiyacınız yoktur.

Ayrıca bkz.

Kayıt Alanı Değişimi (RFX)
MFC ODBC Kullanma
Makrolar, Genel İşlevler ve Genel Değişkenler
CFieldExchange Sınıfı
CRecordset::D oFieldExchange