CRecordset sınıfı

Veri kaynağından seçilen bir kayıt kümesini temsil eder.

Sözdizimi

class CRecordset : public CObject

Üyeler

Ortak oluşturucular

Veri Akışı Adı Açıklama
CRecordset::CRecordset Bir CRecordset nesne oluşturur. Türetilmiş sınıfınız bunu çağıran bir oluşturucu sağlamalıdır.

Genel yöntemler

Veri Akışı Adı Açıklama
CRecordset::AddNew Yeni kayıt eklemeye hazırlanır. Toplamayı tamamlamak için çağrısı Update .
CRecordset::CanAppend Üye işlevi aracılığıyla AddNew kayıt kümesine yeni kayıtlar eklenebiliyorsa sıfır olmayan döndürür.
CRecordset::CanBookmark Kayıt kümesi yer işaretlerini destekliyorsa sıfır olmayan değerini döndürür.
CRecordset::Cancel İkinci iş parçacığından zaman uyumsuz bir işlemi veya işlemi iptal eder.
CRecordset::CancelUpdate Veya Edit işlemi nedeniyle AddNew bekleyen güncelleştirmeleri iptal eder.
CRecordset::CanRestart Kayıt kümesinin sorgusunu yeniden çalıştırmak için çağrılabiliyorsa Requery sıfır olmayan döndürür.
CRecordset::CanScroll Kayıtlarda gezinebiliyorsanız sıfır olmayan değerini döndürür.
CRecordset::CanTransact Veri kaynağı işlemleri destekliyorsa sıfır olmayan değerini döndürür.
CRecordset::CanUpdate Kayıt kümesi güncelleştirilebiliyorsa sıfır olmayan bir değer döndürür (kayıtları ekleyebilir, güncelleştirebilir veya silebilirsiniz).
CRecordset::CheckRowsetError Kayıt getirme sırasında oluşturulan hataları işlemek için çağrılır.
CRecordset::Close Kayıt kümesini ve onunla ilişkili ODBC'yi HSTMT kapatır.
CRecordset::Delete Kayıt kümesinden geçerli kaydı siler. Silme işleminden sonra açıkça başka bir kayda kaydırmanız gerekir.
CRecordset::DoBulkFieldExchange Veri kaynağındaki toplu veri satırlarını kayıt kümesine değiştirmek için çağrılır. Toplu kayıt alanı değişimini (Toplu RFX) uygular.
CRecordset::DoFieldExchange Kayıt kümesinin alan veri üyeleriyle veri kaynağındaki ilgili kayıt arasında veri alışverişi yapmak için (her iki yönde de) çağrılır. Kayıt alanı değişimini (RFX) uygular.
CRecordset::Edit Geçerli kayıtta yapılan değişiklikler için hazırlanır. Düzenlemeyi tamamlamak için arayın Update .
CRecordset::FlushResultSet Önceden tanımlanmış bir sorgu kullanılırken alınması gereken başka bir sonuç kümesi varsa sıfır olmayan değerini döndürür.
CRecordset::GetBookmark Parametre nesnesine bir kaydın yer işareti değerini atar.
CRecordset::GetDefaultConnect Varsayılan bağlantı dizesi almak için çağrıldı.
CRecordset::GetDefaultSQL Yürütülecek varsayılan SQL dizesini almak için çağrıldı.
CRecordset::GetFieldValue Kayıt kümesindeki bir alanın değerini döndürür.
CRecordset::GetODBCFieldCount Kayıt kümesindeki alanların sayısını döndürür.
CRecordset::GetODBCFieldInfo Kayıt kümesindeki alanlar hakkında belirli türde bilgiler döndürür.
CRecordset::GetRecordCount Kayıt kümesindeki kayıt sayısını döndürür.
CRecordset::GetRowsetSize Tek bir getirme sırasında almak istediğiniz kayıt sayısını döndürür.
CRecordset::GetRowsFetched Getirme sırasında alınan gerçek satır sayısını döndürür.
CRecordset::GetRowStatus Getirme sonrasında satırın durumunu döndürür.
CRecordset::GetSQL Kayıt kümesi için kayıtları seçmek için kullanılan SQL dizesini alır.
CRecordset::GetStatus Kayıt kümesinin durumunu alır: geçerli kaydın dizini ve kayıtların son sayısının alınıp alınmadığı.
CRecordset::GetTableName Kayıt kümesinin temel aldığı tablonun adını alır.
CRecordset::IsBOF Kayıt kümesi ilk kayıt öncesinde konumlandırılmışsa sıfır olmayan değerini döndürür. Geçerli kayıt yok.
CRecordset::IsDeleted Kayıt kümesi silinmiş bir kayda konumlandırıldıysa sıfır olmayan değerini döndürür.
CRecordset::IsEOF Kayıt kümesi son kayıt sonrasında konumlandırıldıysa sıfır olmayan değerini döndürür. Geçerli kayıt yok.
CRecordset::IsFieldDirty Geçerli kayıtta belirtilen alan değiştirildiyse sıfır olmayan değerini döndürür.
CRecordset::IsFieldNull Geçerli kayıtta belirtilen alan null ise (değeri yok) sıfır olmayan bir değer döndürür.
CRecordset::IsFieldNullable Geçerli kayıtta belirtilen alan null (değer olmadan) olarak ayarlanabiliyorsa sıfır olmayan değerini döndürür.
CRecordset::IsOpen Daha önce çağrıldıysa Open sıfır olmayan değerini döndürür.
CRecordset::Move Kayıt kümesini geçerli kayıttan herhangi bir yönde belirtilen sayıda kayda konumlandırın.
CRecordset::MoveFirst Geçerli kaydı kayıt kümesindeki ilk kayda konumlandırın. önce için IsBOF test edin.
CRecordset::MoveLast Geçerli kaydı son kayda veya son satır kümesine yerleştirir. önce için IsEOF test edin.
CRecordset::MoveNext Geçerli kaydı bir sonraki kayda veya sonraki satır kümesine yerleştirir. önce için IsEOF test edin.
CRecordset::MovePrev Geçerli kaydı önceki kayda veya önceki satır kümesine yerleştirir. önce için IsBOF test edin.
CRecordset::OnSetOptions Belirtilen ODBC deyimi için seçenekleri ayarlamak için çağrılır (seçimde kullanılır).
CRecordset::OnSetUpdateOptions Belirtilen ODBC deyimi için seçenekleri ayarlamak (güncelleştirmede kullanılır) için çağrılır.
CRecordset::Open Tabloyu alarak veya kayıt kümesinin temsil ettiği sorguyu gerçekleştirerek kayıt kümesini açar.
CRecordset::RefreshRowset Belirtilen satırların verilerini ve durumunu yeniler.
CRecordset::Requery Seçilen kayıtları yenilemek için kayıt kümesinin sorgusunu yeniden çalıştırır.
CRecordset::SetAbsolutePosition Kayıt kümesini belirtilen kayıt numarasına karşılık gelen kayıtta konumlandırın.
CRecordset::SetBookmark Kayıt kümesini yer işareti tarafından belirtilen kayda konumlandırın.
CRecordset::SetFieldDirty Geçerli kayıtta belirtilen alanı değiştirildi olarak işaretler.
CRecordset::SetFieldNull Geçerli kayıtta belirtilen alanın değerini null (değer olmadan) olarak ayarlar.
CRecordset::SetLockingMode Kilitleme modunu "iyimser" kilitleme (varsayılan) veya "kötümser" kilitleme olarak ayarlar. Kayıtların güncelleştirmelere karşı nasıl kilitlendiğini belirler.
CRecordset::SetParamNull Belirtilen parametreyi null (değer içermeyen) olarak ayarlar.
CRecordset::SetRowsetCursorPosition İmleci satır kümesi içinde belirtilen satıra yerleştirir.
CRecordset::SetRowsetSize Getirme sırasında almak istediğiniz kayıt sayısını belirtir.
CRecordset::Update Yeni veya Edit düzenlenmiş verileri veri kaynağına kaydederek veya AddNew işlemini tamamlar.

Genel veri üyeleri

Veri Akışı Adı Açıklama
CRecordset::m_hstmt Kayıt kümesinin ODBC deyimi tutamacını içerir. HSTMT yazın.
CRecordset::m_nFields Kayıt kümesindeki alan verisi üyelerinin sayısını içerir. UINT yazın.
CRecordset::m_nParams Kayıt kümesindeki parametre veri üyesi sayısını içerir. UINT yazın.
CRecordset::m_pDatabase Kayıt kümesinin CDatabase bir veri kaynağına bağlandığı nesneye ilişkin bir işaretçi içerir.
CRecordset::m_strFilter CString Yapılandırılmış Sorgu Dili (SQL) WHERE yan tümcesini belirten bir içerir. Yalnızca belirli ölçütlere uyan kayıtları seçmek için filtre olarak kullanılır.
CRecordset::m_strSort CString SQL ORDER BY yan tümcesini belirten bir içerir. Kayıtların nasıl sıralanacağını denetlemek için kullanılır.

Açıklamalar

"Kayıt kümeleri" CRecordset olarak bilinen nesneler genellikle iki biçimde kullanılır: dinamik kümeler ve anlık görüntüler. Dinamik küme, diğer kullanıcılar tarafından yapılan veri güncelleştirmeleriyle eşitlenmiş olarak kalır. Anlık görüntü, verilerin statik bir görünümüdür. Her form, kayıt kümesi açıldığında sabit olan bir kayıt kümesini temsil eder. Dinamik kümedeki bir kayda kaydırdığınızda, diğer kullanıcılar veya uygulamanızdaki diğer kayıt kümeleri tarafından kayıtta yapılan değişiklikleri yansıtır.

Not

Açık Veritabanı Bağlantısı (ODBC) sınıfları yerine Veri Erişim Nesneleri (DAO) sınıfları ile çalışıyorsanız, bunun yerine sınıfı CDaoRecordset kullanın. Daha fazla bilgi için bkz . Genel Bakış: Veritabanı Programlama.

Her iki kayıt kümesi türüyle de çalışmak için genellikle uygulamasından CRecordsetuygulamaya özgü bir kayıt kümesi sınıfı türetirsiniz. Kayıt kümeleri bir veri kaynağından kayıtları seçer ve daha sonra şunları yapabilirsiniz:

  • Kayıtlar arasında ilerleyin.

  • Kayıtları güncelleştirin ve bir kilitleme modu belirtin.

  • Veri kaynağında bulunan kayıtlardan hangi kayıtları seçtiğini kısıtlamak için kayıt kümesini filtreleyin.

  • Kayıt kümesini sıralayın.

  • Çalışma zamanına kadar bilinmeyen bilgilerle seçimini özelleştirmek için kayıt kümesini parametreleştirin.

Sınıfınızı kullanmak için bir veritabanı açın ve bir kayıt kümesi nesnesi oluşturarak oluşturucuyu nesnenize CDatabase bir işaretçi geçirin. Ardından, nesnenin dinamik küme mi yoksa anlık görüntü mü olduğunu belirtebileceğiniz kayıt kümesinin Open üye işlevini çağırın. Çağrı Open , veri kaynağındaki verileri seçer. Kayıt kümesi nesnesi açıldıktan sonra, kayıtlarda gezinmek ve bunlar üzerinde çalışmak için üye işlevlerini ve veri üyelerini kullanın. Kullanılabilir işlemler nesnenin dinamik küme mi yoksa anlık görüntü mü olduğuna, güncelleştirilebilir mi yoksa salt okunur mu olduğuna (bu, Açık Veritabanı Bağlantısı (ODBC) veri kaynağının özelliğine ve toplu satır getirme işlemi gerçekleştirip uygulamadığınıza bağlıdır. Çağrıdan sonra değiştirilmiş veya eklenmiş olabilecek kayıtları yenilemek Open için nesnenin üye işlevini çağırın Requery . Nesnenin üye işlevini çağırın Close ve bitirdiğinizde nesneyi yok edin.

Türetilmiş CRecordset bir sınıfta, kayıt alanlarının okunmasını ve güncelleştirilmesini desteklemek için kayıt alanı değişimi (RFX) veya toplu kayıt alanı değişimi (Toplu RFX) kullanılır.

Kayıt kümeleri ve kayıt alanı değişimi hakkında daha fazla bilgi için Genel Bakış: Veritabanı Programlama, Kayıt Kümesi (ODBC), Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC) ve Kayıt Alanı Değişimi (RFX) makalelerine bakın. Dinamik kümelere ve anlık görüntülere odaklanmak için Dynaset ve Snapshot makalelerine bakın.

Devralma hiyerarşisi

CObject

CRecordset

Gereksinimler

Üstbilgi: afxdb.h

CRecordset::AddNew

Tabloya yeni kayıt eklemeye hazırlanır.

virtual void AddNew();

Açıklamalar

Yeni eklenen kaydı görmek için üye işlevini çağırmanız Requery gerekir. Kaydın alanları başlangıçta Null olur. (Veritabanı terminolojisinde Null değerin olmadığı anlamına gelir ve C++'da NULL ile aynı değildir.) İşlemi tamamlamak için üye işlevini çağırmanız Update gerekir. Update değişikliklerinizi veri kaynağına kaydeder.

Not

Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız AddNew. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

AddNew kayıt kümesinin alan veri üyelerini kullanarak yeni, boş bir kayıt hazırlar. çağrısı AddNewyaptıktan sonra, kayıt kümesinin alan veri üyelerinde istediğiniz değerleri ayarlayın. (Şunu aramanız gerekmez: Bu amaçla üye işlevini düzenleyin ; yalnızca mevcut kayıtlar için kullanın Edit .) çağrısı Updateyaptığınızda, alan veri üyelerindeki değiştirilen değerler veri kaynağına kaydedilir.

Dikkat

çağrısından Updateönce yeni bir kayda kaydırdığınızda yeni kayıt kaybolur ve hiçbir uyarı verilmez.

Veri kaynağı işlemleri destekliyorsa, aramanızı AddNew bir işlemin parçası yapabilirsiniz. İşlemler hakkında daha fazla bilgi için bkz. sınıfı CDatabase. çağrısına başlamadan önce arayın CDatabase::BeginTrans AddNew.

Not

Dinamik kümeler için kayıt kümesine son kayıt olarak yeni kayıtlar eklenir. Eklenen kayıtlar anlık görüntülere eklenmez; kayıt kümesini yenilemek için aramanız Requery gerekir.

Üye işlevi çağrılmamış bir kayıt kümesini Open çağırmak AddNew geçersizdir. CDBException eklenemiyor bir kayıt kümesi için çağırırsanız AddNew oluşturulur. çağırarak CanAppendkayıt kümesinin güncelleştirilebilir olup olmadığını belirleyebilirsiniz.

Daha fazla bilgi için şu makalelere bakın: Kayıt Kümesi: Kayıt Kümeleri Kayıtları Nasıl Güncelleştirir (ODBC), Kayıt Kümesi: Kayıtları Ekleme, Güncelleştirme ve Silme (ODBC) ve İşlem (ODBC).

Örnek

bkz . İşlem: Kayıt Kümesinde İşlem Gerçekleştirme (ODBC).

CRecordset::CanAppend

Daha önce açılan kayıt kümesinin yeni kayıtlar eklemenize izin verip vermediğini belirler.

BOOL CanAppend() const;

Dönüş değeri

Kayıt kümesi yeni kayıtlar eklemeye izin veriyorsa sıfır olmayan; aksi takdirde 0. CanAppend kayıt kümesini salt okunur olarak açtıysanız 0 döndürür.

CRecordset::CanBookmark

Kayıt kümesinin yer işaretlerini kullanarak kayıtları işaretlemenize izin verip vermediğini belirler.

BOOL CanBookmark() const;

Dönüş değeri

Kayıt kümesi yer işaretlerini destekliyorsa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bu işlev, üye işlevinin CRecordset::useBookmarks parametresindeki dwOptions seçeneğinden Open bağımsızdır. CanBookmark verilen ODBC sürücüsünün ve imleç türünün yer işaretlerini destekleyip desteklemediğini gösterir. CRecordset::useBookmarks , desteklenmeleri koşuluyla yer işaretlerinin kullanılabilir olup olmayacağını gösterir.

Not

Yer işaretleri yalnızca ileriye doğru kayıt kümelerinde desteklenmez.

Yer işaretleri ve kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) ve Kayıt Kümesi: Kaydırma (ODBC) makalelerine bakın.

CRecordset::Cancel

Veri kaynağının devam eden zaman uyumsuz bir işlemi veya ikinci iş parçacığından bir işlemi iptal etmelerini ister.

void Cancel();

Açıklamalar

MFC ODBC sınıfları artık zaman uyumsuz işleme kullanmıyor; zaman uyumsuz bir işlem gerçekleştirmek için ODBC API işlevini SQLSetConnectOptiondoğrudan çağırmanız gerekir. Daha fazla bilgi için ODBC SDK Programcı Kılavuzu'ndaki "İşlevleri Zaman Uyumsuz Olarak Yürütme" bölümüne bakın.

CRecordset::CancelUpdate

Çağrılmadan önce Update veya AddNew işleminden Edit kaynaklanan bekleyen güncelleştirmeleri iptal eder.

void CancelUpdate();

Açıklamalar

Not

Bu üye işlevi toplu satır getirme kullanan kayıt kümelerinde geçerli değildir, çünkü bu tür kayıt kümeleri , AddNewveya UpdateçağıramazEdit. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Otomatik kirli alan denetimi etkinleştirilirse, CancelUpdate üye değişkenleri daha önce Edit sahip oldukları veya AddNew çağrıldıkları değerlere geri yükler; aksi takdirde, tüm değer değişiklikleri kalır. Kayıt kümesi açıldığında, varsayılan olarak otomatik alan denetimi etkinleştirilir. Devre dışı bırakmak için, Open member işlevinin dwOptions parametresinde öğesini belirtmeniz CRecordset::noDirtyFieldCheck gerekir.

Verileri güncelleştirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Ekleme, Güncelleştirme ve Silme (ODBC).

CRecordset::CanRestart

Kayıt kümesinin üye işlevini çağırarak Requery sorgunun yeniden başlatılmasına (kayıtlarını yenilemek için) izin verip vermediğini belirler.

BOOL CanRestart() const;

Dönüş değeri

Yeniden sorgulamaya izin veriliyorsa sıfır olmayan; aksi takdirde 0.

CRecordset::CanScroll

Kayıt kümesinin kaydırmaya izin verip vermeyeceğini belirler.

BOOL CanScroll() const;

Dönüş değeri

Kayıt kümesi kaydırmaya izin veriyorsa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Kaydırma hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kaydırma (ODBC).

CRecordset::CanTransact

Kayıt kümesinin işlemlere izin verip vermeyeceğini belirler.

BOOL CanTransact() const;

Dönüş değeri

Kayıt kümesi işlemlere izin veriyorsa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Daha fazla bilgi için bkz . İşlem (ODBC).

CRecordset::CanUpdate

Kayıt kümesinin güncelleştirilip güncelleştirilemeyeceğini belirler.

BOOL CanUpdate() const;

Dönüş değeri

Kayıt kümesi güncelleştirilebiliyorsa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Temel alınan veri kaynağı salt okunursa veya kayıt kümesini açtığınızda parametresinde dwOptions belirttiyseniz CRecordset::readOnly kayıt kümesi salt okunur olabilir.

CRecordset::CheckRowsetError

Kayıt getirme sırasında oluşturulan hataları işlemek için çağrılır.

virtual void CheckRowsetError(RETCODE nRetCode);

Parametreler

nRetCode
BIR ODBC API işlevi dönüş kodu. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

Bu sanal üye işlevi, kayıtlar getirildiğinde oluşan hataları işler ve toplu satır getirme sırasında kullanışlıdır. Kendi hata işlemenizi uygulamak için geçersiz kılmayı CheckRowsetError düşünebilirsiniz.

CheckRowsetError, gibi bir imleç gezinti işleminde veya herhangi Move bir işlemde otomatik olarak OpenRequeryçağrılır. ODBC API işlevinin SQLExtendedFetchdönüş değeri geçirildi. Aşağıdaki tabloda parametresi için olası değerler listelemektedir nRetCode .

nRetCode Açıklama
SQL_SUCCESS İşlev başarıyla tamamlandı; ek bilgi yoktur.
SQL_SUCCESS_WITH_INFO İşlev, büyük olasılıkla önemli olmayan bir hatayla başarıyla tamamlandı. çağrılarak SQLErrorek bilgi edinilebilir.
SQL_NO_DATA_FOUND Sonuç kümesindeki tüm satırlar getirilmiştir.
SQL_ERROR İşlev başarısız oldu. çağrılarak SQLErrorek bilgi edinilebilir.
SQL_INVALID_HANDLE İşlev geçersiz bir ortam tutamacı, bağlantı tutamacı veya deyim tanıtıcısı nedeniyle başarısız oldu. Bu, bir programlama hatası olduğunu gösterir. ile SQLErrorilgili ek bilgi yok.
SQL_STILL_EXECUTING Zaman uyumsuz olarak başlatılan bir işlev hala yürütülüyor. Varsayılan olarak, MFC bu değeri hiçbir zaman öğesine CheckRowsetErrorgeçirmez; MFC, artık döndürene SQL_STILL_EXECUTINGkadar çağrısına SQLExtendedFetch devam edecektir.

hakkında SQLErrordaha fazla bilgi için bkz. Windows SDK. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

CRecordset::Close

Kayıt kümesini kapatır.

virtual void Close();

Açıklamalar

Odbc HSTMT ve çerçevenin kayıt kümesi için ayırmış olduğu tüm bellek serbest bırakılır. çağrısından Closesonra genellikle ile newayrılmışsa C++ kayıt kümesi nesnesini silersiniz.

çağrısı yaptıktan sonra yeniden arayabilirsiniz Open Close. Bu, kayıt kümesi nesnesini yeniden kullanmanıza olanak tanır. Alternatif olarak öğesini çağırın Requery.

Örnek

// Construct a snapshot object
CCustomer rsCustSet(NULL);

if (!rsCustSet.Open())
return;

// Use the snapshot ...

// Close the snapshot
rsCustSet.Close();

// Destructor is called when the function exits

CRecordset::CRecordset

Bir CRecordset nesne oluşturur.

CRecordset(CDatabase* pDatabase = NULL);

Parametreler

pDatabase
Bir nesnenin işaretçisini CDatabase veya değerini NULLiçerir. NULL Aksi takdirde ve nesnenin CDatabase Open üye işlevi veri kaynağına bağlamak için çağrılmadıysa, kayıt kümesi kendi Open çağrısı sırasında sizin için açmaya çalışır. geçirirseniz NULL, ClassWizard ile kayıt kümesi sınıfınızı türetdiğinizde belirttiğiniz veri kaynağı bilgileri kullanılarak bir CDatabase nesne oluşturulur ve bağlanır.

Açıklamalar

Doğrudan kullanabilir CRecordset veya uygulamasından CRecordsetuygulamaya özgü bir sınıf türetebilirsiniz. Kayıt kümesi sınıflarınızı türetmek için ClassWizard kullanabilirsiniz.

Not

Türetilmiş bir sınıf kendi oluşturucusunu sağlamalıdır . Türetilmiş sınıfınızın oluşturucusunda oluşturucuyu CRecordset::CRecordsetçağırın ve uygun parametreleri ona geçirin.

Bir nesnenin sizin için otomatik olarak oluşturup bağlanması için CDatabase kayıt kümesi oluşturucunuza geçirinNULL. Bu, kayıt kümenizi oluşturmadan önce bir nesne oluşturmanızı ve bağlamanızı gerektirmeyen kullanışlı bir CDatabase kısaltmadır.

Örnek

Daha fazla bilgi için bkz . Kayıt Kümesi: Tablo için Sınıf Bildirme (ODBC).

CRecordset::Delete

Geçerli kaydı siler.

virtual void Delete();

Açıklamalar

Başarılı bir silme işleminden sonra, kayıt kümesinin alan veri üyeleri Null değerine ayarlanır ve silinen kaydın dışına taşımak için işlevlerden birini Move açıkça çağırmanız gerekir. Silinen kayıttan çıktıktan sonra bu kayda geri dönmek mümkün değildir. Veri kaynağı işlemleri destekliyorsa, çağrıyı Delete bir işlemin parçası yapabilirsiniz. Daha fazla bilgi için bkz . İşlem (ODBC).

Not

Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız Delete. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Dikkat

Kayıt kümesinin güncelleştirilebilir olması ve çağırdığınızda Deletekayıt kümesinde geçerli bir kayıt olması gerekir; aksi takdirde bir hata oluşur. Örneğin, bir kaydı silerseniz ancak yeniden aramadan Delete önce yeni bir kayda kaydırmıyorsanız, Delete bir CDBException oluşturur.

ve Edit'den farklı AddNew olarak Delete çağrısının ardından Updateçağrısı gelmez. Bir Delete çağrı başarısız olursa, alan veri üyeleri değişmeden bırakılır.

Örnek

Bu örnekte bir işlevin çerçevesinde oluşturulmuş bir kayıt kümesi gösterilmektedir. Örnekte, veri kaynağına zaten bağlı türde CDatabase bir üye değişkeninin olduğu m_dbCustvarsayılır.

// Create a derived CRecordset object
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();

if (rsCustSet.IsEOF() || !rsCustSet.CanUpdate() ||
   !rsCustSet.CanTransact())
{
   return;
}

m_dbCust.BeginTrans();

// Perhaps scroll to a new record...
// Delete the current record
rsCustSet.Delete();

// Finished commands for this transaction
if (IDYES == AfxMessageBox(_T("Commit transaction?"), MB_YESNO))
m_dbCust.CommitTrans();
else // User changed mind
m_dbCust.Rollback();

CRecordset::DoBulkFieldExchange

Veri kaynağındaki toplu veri satırlarını kayıt kümesine değiştirmek için çağrılır. Toplu kayıt alanı değişimini (Toplu RFX) uygular.

virtual void DoBulkFieldExchange(CFieldExchange* pFX);

Parametreler

pFX
Nesne işaretçisi CFieldExchange . Çerçeve, alan değişimi işlemi için bir bağlam belirtmek üzere bu nesneyi zaten ayarlamış olacaktır.

Açıklamalar

Toplu satır getirme uygulandığında, çerçeve veri kaynağından kayıt kümesi nesnenize otomatik olarak veri aktarmak için bu üye işlevini çağırır. DoBulkFieldExchange ayrıca, varsa parametre veri üyelerinizi kayıt kümesinin seçimi için SQL deyimi dizesindeki parametre yer tutucularına bağlar.

Toplu satır getirme uygulanmazsa, çerçeve çağırır DoFieldExchange. Toplu satır getirme uygulamak için üye işlevinde CRecordset::useMultiRowFetch dwOptions parametresi Open seçeneğini belirtmeniz gerekir.

Not

DoBulkFieldExchange yalnızca öğesinden CRecordsettüretilmiş bir sınıf kullanıyorsanız kullanılabilir. Doğrudan öğesinden CRecordsetbir kayıt kümesi nesnesi oluşturduysanız, verileri almak için üye işlevini çağırmanız GetFieldValue gerekir.

Toplu kayıt alanı değişimi (Toplu RFX), kayıt alanı değişimine (RFX) benzer. Veriler otomatik olarak veri kaynağından kayıt kümesi nesnesine aktarılır. Ancak, değişiklikleri veri kaynağına geri aktarmak için , Edit, Deleteveya Update çağıramazsınızAddNew. Sınıfı CRecordset şu anda toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamaz; ancak ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz.

ClassWizard toplu kayıt alanı değişimini desteklemez; bu nedenle, Toplu RFX işlevlerine çağrılar yazarak el ile geçersiz kılmanız DoBulkFieldExchange gerekir. Bu işlevler hakkında daha fazla bilgi için bkz . Kayıt Alanı Değişim İşlevleri.

Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC). İlgili bilgiler için bkz . Kayıt Alanı Değişimi (RFX).

CRecordset::DoFieldExchange

Kayıt kümesinin alan veri üyeleriyle veri kaynağındaki ilgili kayıt arasında veri alışverişi yapmak için (her iki yönde de) çağrılır. Kayıt alanı değişimini (RFX) uygular.

virtual void DoFieldExchange(CFieldExchange* pFX);

Parametreler

pFX
Nesne işaretçisi CFieldExchange . Çerçeve, alan değişimi işlemi için bir bağlam belirtmek üzere bu nesneyi zaten ayarlamış olacaktır.

Açıklamalar

Toplu satır getirme uygulanmadığında çerçeve, kayıt kümesi nesnenizin alan veri üyeleriyle veri kaynağındaki geçerli kaydın ilgili sütunları arasında otomatik olarak veri alışverişi yapmak için bu üye işlevini çağırır. DoFieldExchange ayrıca, varsa parametre veri üyelerinizi kayıt kümesinin seçimi için SQL deyimi dizesindeki parametre yer tutucularına bağlar.

Toplu satır getirme uygulanırsa, çerçeve çağırır DoBulkFieldExchange. Toplu satır getirme uygulamak için üye işlevinde CRecordset::useMultiRowFetch Open parametresinin dwOptions seçeneğini belirtmeniz gerekir.

Not

DoFieldExchange yalnızca öğesinden CRecordsettüretilmiş bir sınıf kullanıyorsanız kullanılabilir. Doğrudan öğesinden CRecordsetbir kayıt kümesi nesnesi oluşturduysanız, verileri almak için GetFieldValue üye işlevini çağırmanız gerekir.

Kayıt alanı değişimi (RFX) olarak adlandırılan alan verilerinin değişimi her iki yönde de çalışır: kayıt kümesi nesnesinin alan veri üyelerinden veri kaynağındaki kaydın alanlarına ve veri kaynağındaki kayıttan kayıt kümesi nesnesine.

Türetilmiş kayıt kümesi sınıfınız için uygulamak DoFieldExchange için normalde gerçekleştirmeniz gereken tek eylem, sınıfı ClassWizard ile oluşturmak ve alan veri üyelerinin adlarını ve veri türlerini belirtmektir. Ayrıca ClassWizard'ın parametre veri üyelerini belirtmek veya dinamik olarak bağladığınız tüm sütunlarla ilgilenmek için yazdığı koda kod ekleyebilirsiniz. Daha fazla bilgi için bkz . Kayıt Kümesi: Veri Sütunlarını Dinamik Olarak Bağlama (ODBC).

ClassWizard ile türetilmiş kayıt kümesi sınıfınızı bildirdiğinizde, sihirbaz sizin için aşağıdaki örneğe benzer bir geçersiz kılma DoFieldExchange yazar:

void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputColumn);
   // Macros such as RFX_Text() and RFX_Int() are dependent on the
   // type of the member variable, not the type of the field in the database.
   // ODBC will try to automatically convert the column value to the requested type
   RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
   RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
   RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
   RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
   RFX_Long(pFX, _T("[BillingID]"), m_BillingID);

   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Param"), m_strParam);
}

RFX işlevleri hakkında daha fazla bilgi için bkz . Kayıt Alanı Değişim İşlevleri.

hakkında DoFieldExchangedaha fazla örnek ve ayrıntı için bkz . Kayıt Alanı Değişimi: RFX Nasıl Çalışır? RFX hakkında genel bilgi için bkz . Kayıt Alanı Değişimi.

CRecordset::Edit

Geçerli kayıtta değişikliklere izin verir.

virtual void Edit();

Açıklamalar

çağrısı Edityaptıktan sonra, doğrudan değerlerini sıfırlayarak alan veri üyelerini değiştirebilirsiniz. Değişikliklerinizi veri kaynağına kaydetmek için üye işlevini çağırdığınızda Update işlem tamamlanır.

Not

Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız Edit. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Edit kayıt kümesinin veri üyelerinin değerlerini kaydeder. çağrısı Edityaparsanız, değişiklik yapın ve yeniden çağırın Edit ; kaydın değerleri ilk Edit çağrıdan önceki değerlerine geri yüklenir.

Bazı durumlarda, sütunu Null (veri içermeyen) yaparak güncelleştirmek isteyebilirsiniz. Bunu yapmak için, Null alanını işaretlemek için TRUE parametresiyle çağrısı SetFieldNull yapın; bu, sütunun güncelleştirilmesine de neden olur. Değeri değişmemiş olsa bile bir alanın veri kaynağına yazılmasını istiyorsanız TRUE parametresiyle çağrısında SetFieldDirty bulunun. Bu, alanda Null değeri olsa bile çalışır.

Veri kaynağı işlemleri destekliyorsa, çağrıyı Edit bir işlemin parçası yapabilirsiniz. Çağrıdan Edit önce ve kayıt kümesi açıldıktan sonra çağırınCDatabase::BeginTrans. Ayrıca, işlemi tamamlamak için çağrı CDatabase::CommitTrans yapmak, çağırmanın Update yerini tutmaz Edit . İşlemler hakkında daha fazla bilgi için bkz. sınıfı CDatabase.

Geçerli kilitleme moduna bağlı olarak, siz başka bir kaydı çağırana Update veya kaydırana kadar güncelleştirilmekte olan kayıt tarafından kilitlenebilir Edit veya yalnızca arama sırasında Edit kilitlenebilir. ile SetLockingModekilitleme modunu değiştirebilirsiniz.

çağrısından Updateönce yeni bir kayda kaydırdığınızda geçerli kaydın önceki değeri geri yüklenir. CDBException Güncelleştirilemez bir kayıt kümesi çağırırsanız Edit veya geçerli kayıt yoksa bir oluşturulur.

Daha fazla bilgi için İşlem (ODBC) ve Kayıt Kümesi: Kayıtları Kilitleme (ODBC) makalelerine bakın.

Örnek

// To edit a record, first set up the edit buffer
rsCustSet.Edit();

// Then edit field data members for the record
rsCustSet.m_BillingID = 2795;
rsCustSet.m_ContactFirstName = _T("Jones Mfg");

// Finally, complete the operation
if (!rsCustSet.Update())
{
   // Handle the failure to update
   AfxMessageBox(_T("Couldn't update record!"));
}

CRecordset::FlushResultSet

Birden çok sonuç kümesi varsa, önceden tanımlanmış bir sorgunun (saklı yordam) sonraki sonuç kümesini alır.

BOOL FlushResultSet();

Dönüş değeri

Alınacak daha fazla sonuç kümesi varsa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Yalnızca imleci geçerli sonuç kümesinde bitirdiğinizde çağırmalısınız FlushResultSet . çağrısı FlushResultSetyaparak sonraki sonuç kümesini aldığınızda, imleciniz bu sonuç kümesinde geçerli değildir; çağrısı FlushResultSetyaptıktan MoveNext sonra üye işlevini çağırmalısınız.

Önceden tanımlanmış bir sorgu bir çıkış parametresi veya giriş/çıkış parametreleri kullanıyorsa, bu parametre değerlerini almak için döndürene FALSEkadar çağırmalısınız FlushResultSet (0 değeri).

FlushResultSet ODBC API işlevini SQLMoreResultsçağırır. veya FlushResultSet SQL_INVALID_HANDLEdöndürürse SQLMoreResults SQL_ERROR, bir özel durum oluşturur. hakkında SQLMoreResultsdaha fazla bilgi için bkz. Windows SDK.

çağırmak FlushResultSetistiyorsanız saklı yordamınızın ilişkili alanları olması gerekir.

Örnek

Aşağıdaki kod, giriş parametresi ve çıkış parametresi ile önceden tanımlanmış bir CRecordsetsorguyu temel alan ve birden çok sonuç kümesine sahip olan - türetilmiş bir nesne olduğunu varsayarCOutParamRecordset. Geçersiz kılmanın yapısına DoFieldExchange dikkat edin.

// DoFieldExchange override
//
// Only necessary to handle parameter bindings.
// Don't use CRecordset-derived class with bound
// fields unless all result sets have same schema
// OR there is conditional binding code.
void CCourses::DoFieldExchange(CFieldExchange* pFX)
{
   pFX->SetFieldType(CFieldExchange::outputParam);
   RFX_Long(pFX, _T("Param1"), m_nCountParam);
   // The "Param1" name here is a dummy name 
   // that is never used

   pFX->SetFieldType(CFieldExchange::inputParam);
   RFX_Text(pFX, _T("Param2"), m_strNameParam);
   // The "Param2" name here is a dummy name 
   // that is never used
}

 

// Assume db is an already open CDatabase object
CCourses rs(&m_dbCust);
rs.m_strNameParam = _T("History");

// Get the first result set
// NOTE: SQL Server requires forwardOnly cursor 
//       type for multiple rowset returning stored 
//       procedures
rs.Open(CRecordset::forwardOnly,
   _T("{? = CALL GetCourses( ? )}"),
   CRecordset::readOnly);

// Loop through all the data in the first result set
while (!rs.IsEOF())
{
   CString strFieldValue;
   for (short nIndex = 0; nIndex < rs.GetODBCFieldCount(); nIndex++)
   {
      rs.GetFieldValue(nIndex, strFieldValue);

      // TO DO: Use field value string.
   }
   rs.MoveNext();
}

// Retrieve other result sets...
while (rs.FlushResultSet())
{
   // must call MoveNext because cursor is invalid
   rs.MoveNext();

   while (!rs.IsEOF())
   {
      CString strFieldValue;
      for (short nIndex = 0; nIndex < rs.GetODBCFieldCount(); nIndex++)
      {
         rs.GetFieldValue(nIndex, strFieldValue);

         // TO DO: Use field value string.
      }
      rs.MoveNext();
   }
}


// All result sets have been flushed. Cannot
// use the cursor, but the output parameter,
// m_nCountParam, has now been written.
// Note that m_nCountParam is not valid until
// CRecordset::FlushResultSet has returned FALSE,
// indicating no more result sets will be returned.

// TO DO: Use m_nCountParam

// Cleanup
rs.Close();

CRecordset::GetBookmark

Geçerli kayıt için yer işareti değerini alır.

void GetBookmark(CDBVariant& varBookmark);

Parametreler

varBookmark
Geçerli kayıtta yer işaretini temsil eden bir CDBVariant nesneye başvuru.

Açıklamalar

Yer işaretlerinin kayıt kümesinde desteklenip desteklenmediğini belirlemek için çağrısı yapın CanBookmark. Destekleniyorsa yer işaretlerinin kullanılabilir olmasını sağlamak için üye işlevinin dwOptions Open parametresinde seçeneğini ayarlamanız CRecordset::useBookmarks gerekir.

Not

Yer işaretleri desteklenmiyorsa veya kullanılamıyorsa, çağrıda GetBookmark özel durum oluşturulur. Yer işaretleri yalnızca ileriye doğru kayıt kümelerinde desteklenmez.

GetBookmark geçerli kayıt için yer işaretinin değerini bir CDBVariant nesneye atar. Farklı bir kayda geçtikten sonra istediğiniz zaman bu kayda dönmek için ilgili CDBVariant nesneyle çağrısı SetBookmark yapın.

Not

Belirli kayıt kümesi işlemlerinden sonra yer işaretleri artık geçerli olmayabilir. Örneğin, ardından öğesini çağırırsanız GetBookmark Requery, ile SetBookmarkkayda geri dönemeyebilirsiniz. öğesini güvenli bir şekilde çağırıp çağıramayacağınızı denetlemek için arayın CDatabase::GetBookmarkPersistence SetBookmark.

Yer işaretleri ve kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) ve Kayıt Kümesi: Kaydırma (ODBC) makalelerine bakın.

CRecordset::GetDefaultConnect

Varsayılan bağlantı dizesi almak için çağrıldı.

virtual CString GetDefaultConnect();

Dönüş değeri

CString Varsayılan bağlantı dizesi içeren bir.

Açıklamalar

Çerçeve, kayıt kümesinin temel aldığı veri kaynağı için varsayılan bağlantı dizesi almak için bu üye işlevini çağırır. ClassWizard tablolar ve sütunlar hakkında bilgi almak için içinde kullandığınız ClassWizard veri kaynağını belirleyerek bu işlevi sizin için uygular. Uygulamanızı geliştirirken bu varsayılan bağlantıya güvenmeyi muhtemelen uygun bulacaksınız. Ancak varsayılan bağlantı uygulamanızın kullanıcıları için uygun olmayabilir. Böyle bir durumda, 'nin sürümünü atarak ClassWizardbu işlevi yeniden oluşturmanız gerekir. bağlantı dizesi hakkında daha fazla bilgi için bkz. Veri Kaynağı (ODBC).

CRecordset::GetDefaultSQL

Yürütülecek varsayılan SQL dizesini almak için çağrıldı.

virtual CString GetDefaultSQL();

Dönüş değeri

CString Varsayılan SQL deyimini içeren bir.

Açıklamalar

Çerçeve, kayıt kümesinin temel aldığı varsayılan SQL deyimini almak için bu üye işlevini çağırır. Bu bir tablo adı veya SQL SELECT deyimi olabilir.

ile kayıt kümesi sınıfınızı ClassWizardbildirerek varsayılan SQL deyimini dolaylı olarak tanımlarsınız ve ClassWizard bu görevi sizin için gerçekleştirirsiniz.

Kendi kullanımınız için SQL deyimi dizesine ihtiyacınız varsa çağrısı GetSQLyapın. Bu, kayıt kümesinin kayıt kümesinin açıldığında kayıtlarını seçmek için kullanılan SQL deyimini döndürür. Sınıfınızın geçersiz kılmasında varsayılan SQL dizesini GetDefaultSQLdüzenleyebilirsiniz. Örneğin, deyimini kullanarak CALL önceden tanımlanmış bir sorguya çağrı belirtebilirsiniz. (Bununla birlikte, öğesini düzenlerseniz GetDefaultSQLveri kaynağındaki sütun sayısıyla eşleşecek şekilde de değiştirmeniz m_nFields gerektiğini unutmayın.)

Daha fazla bilgi için bkz . Kayıt Kümesi: Tablo için Sınıf Bildirme (ODBC).

Dikkat

Çerçeve bir tablo adını tanımlayamadığında, birden çok tablo adı sağlandıysa veya bir CALL deyimi yorumlanamadıysa tablo adı boş olur. Bir CALL deyimi kullandığınızda, küme ayracı ile CALL anahtar sözcük arasına veya küme ayracından önce veya deyimindeki SELECT anahtar sözcüğün önüne boşluk eklemeyinSELECT.

CRecordset::GetFieldValue

Geçerli kayıttaki alan verilerini alır.

void GetFieldValue(
    LPCTSTR lpszName,
    CDBVariant& varValue,
    short nFieldType = DEFAULT_FIELD_TYPE);

void GetFieldValue(
    LPCTSTR lpszName,
    CStringA& strValue
);

void GetFieldValue(
    LPCTSTR lpszName,
    CStringW& strValue
);

void GetFieldValue(
    short nIndex,
    CDBVariant& varValue,
    short nFieldType = DEFAULT_FIELD_TYPE);

void GetFieldValue(
    short nIndex,
    CStringA& strValue);

void GetFieldValue(
    short nIndex,
    CStringW& strValue);

Parametreler

lpszName
Bir alanın adı.

varValue Alanın değerini depolayacak bir CDBVariant nesneye başvuru.

nFieldType
Alanın ODBC C veri türü. varsayılan değerini kullanarak, DEFAULT_FIELD_TYPEaşağıdaki tabloya göre SQL veri türünden C veri türünü belirlemeye zorlar GetFieldValue . Aksi takdirde, veri türünü doğrudan belirtebilir veya uyumlu bir veri türü seçebilirsiniz; örneğin, herhangi bir veri türünü içine SQL_C_CHARdepolayabilirsiniz.

C veri türü SQL veri türü
SQL_C_BIT SQL_BIT
SQL_C_UTINYINT SQL_TINYINT
SQL_C_SSHORT SQL_SMALLINT
SQL_C_SLONG SQL_INTEGER
SQL_C_FLOAT SQL_REAL
SQL_C_DOUBLE SQL_FLOATSQL_DOUBLE
SQL_C_TIMESTAMP SQL_DATESQL_TIMESQL_TIMESTAMP
SQL_C_CHAR SQL_NUMERICSQL_DECIMALSQL_BIGINTSQL_CHARSQL_VARCHARSQL_LONGVARCHAR
SQL_C_BINARY SQL_BINARYSQL_VARBINARYSQL_LONGVARBINARY

ODBC veri türleri hakkında daha fazla bilgi için Windows SDK'sının Ek D'sindeki "SQL Veri Türleri" ve "C Veri Türleri" konularına bakın.

nIndex
Alanın sıfır tabanlı dizini.

strValue
Alanın veri türünden bağımsız olarak, alanın metne dönüştürülen değerini depolayacak bir CString nesne başvurusu.

Açıklamalar

Bir alanı ada veya dizine göre arayabilirsiniz. Alan değerini bir CDBVariant nesnede veya CString nesnede depolayabilirsiniz.

Toplu satır getirme işlemi uyguladıysanız, geçerli kayıt her zaman satır kümesindeki ilk kayıtta konumlandırılır. Belirli bir satır kümesi içindeki bir kayıtta kullanmak GetFieldValue için, önce üye işlevini çağırarak SetRowsetCursorPosition imleci bu satır kümesi içinde istenen satıra taşımanız gerekir. Sonra o satırı çağır GetFieldValue . Toplu satır getirme uygulamak için üye işlevinde CRecordset::useMultiRowFetch Open parametresinin dwOptions seçeneğini belirtmeniz gerekir.

Alanları tasarım zamanında statik olarak bağlamak yerine çalışma zamanında dinamik olarak getirmek için kullanabilirsiniz GetFieldValue . Örneğin, doğrudan öğesinden CRecordsetbir kayıt kümesi nesnesi bildirdiyseniz, alan verilerini almak için kullanmalısınız GetFieldValue ; kayıt alanı değişimi (RFX) veya toplu kayıt alanı değişimi (Toplu RFX) uygulanmaz.

Not

öğesinden CRecordsettüretilmeden bir kayıt kümesi nesnesi bildirirseniz, ODBC İmleç Kitaplığı yüklü değildir. İmleç kitaplığı, kayıt kümesinin en az bir ilişkili sütuna sahip olmasını gerektirir; ancak, doğrudan kullandığınızda CRecordset , sütunların hiçbiri bağlı değildir. Üye işlevi görür CDatabase::OpenEx ve CDatabase::Open imleç kitaplığının yüklenip yüklenmeyeceğini denetler.

GetFieldValue ODBC API işlevini SQLGetDataçağırır. Sürücünüz alan değerinin gerçek uzunluğu için SQL_NO_TOTAL değerinin çıkışını verirse, GetFieldValue bir özel durum oluşturur. hakkında SQLGetDatadaha fazla bilgi için bkz. Windows SDK.

Örnek

Aşağıdaki örnek kod, doğrudan öğesinden CRecordsetbildirilen bir kayıt kümesi nesnesine yönelik çağrıları GetFieldValue gösterir.

// Create and open a database object;
// do not load the cursor library
CDatabase db;
db.OpenEx(NULL, CDatabase::forceOdbcDialog);

// Create and open a recordset object
// directly from CRecordset. Note that a
// table must exist in a connected database.
// Use forwardOnly type recordset for best
// performance, since only MoveNext is required
CRecordset rs(&db);
rs.Open(CRecordset::forwardOnly, _T("SELECT * FROM Customer"));

// Create a CDBVariant object to
// store field data
CDBVariant varValue;

// Loop through the recordset,
// using GetFieldValue and
// GetODBCFieldCount to retrieve
// data in all columns
short nFields = rs.GetODBCFieldCount();
while (!rs.IsEOF())
{
   for (short index = 0; index < nFields; index++)
   {
      rs.GetFieldValue(index, varValue);
      // do something with varValue
   }
   rs.MoveNext();
}

rs.Close();
db.Close();

Not

DAO sınıfından CDaoRecordsetCRecordset farklı olarak bir SetFieldValue üye işlevi yoktur. Doğrudan öğesinden CRecordsetbir nesne oluşturursanız, nesne etkili bir şekilde salt okunur olur.

Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

CRecordset::GetODBCFieldCount

Kayıt kümesi nesnenizdeki toplam alan sayısını alır.

short GetODBCFieldCount() const;

Dönüş değeri

Kayıt kümesindeki alanların sayısı.

Açıklamalar

Kayıt kümeleri oluşturma hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Oluşturma ve Kapatma (ODBC).

CRecordset::GetODBCFieldInfo

Kayıt kümesindeki alanlar hakkında bilgi alır.

void GetODBCFieldInfo(
    LPCTSTR lpszName,
    CODBCFieldInfo& fieldinfo);

void GetODBCFieldInfo(
    short nIndex,
    CODBCFieldInfo& fieldinfo);

Parametreler

lpszName
Bir alanın adı.

fieldinfo
Bir yapıya CODBCFieldInfo başvuru.

nIndex
Alanın sıfır tabanlı dizini.

Açıklamalar

İşlevin bir sürümü, bir alanı ada göre aramanıza olanak tanır. Diğer sürüm, bir alanı dizine göre aramanızı sağlar.

Döndürülen bilgiler hakkında bir açıklama için yapıya CODBCFieldInfo bakın.

Kayıt kümeleri oluşturma hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Oluşturma ve Kapatma (ODBC).

CRecordset::GetRecordCount

Kayıt kümesinin boyutunu belirler.

long GetRecordCount() const;

Dönüş değeri

Kayıt kümesindeki kayıt sayısı; Kayıt kümesi kayıt içermiyorsa 0; veya kayıt sayısı belirlenemiyorsa -1.

Açıklamalar

Dikkat

Kayıt sayısı, kullanıcı kayıtlarda ilerledikçe görülen en yüksek numaralı kayıt olan "yüksek su işareti" olarak korunur. Toplam kayıt sayısı yalnızca kullanıcı son kaydın ötesine geçtikten sonra bilinir. Performans nedenleriyle, çağırdığınızda MoveLastsayı güncelleştirilmez. Kayıtları kendiniz saymak için sıfır dışı döndürene kadar IsEOF tekrar tekrar arayınMoveNext. aracılığıyla CRecordset:AddNew kayıt eklemek ve Update sayıyı artırır; aracılığıyla bir kaydın CRecordset::Delete silinmesi sayıyı azaltır.

CRecordset::GetRowsetSize

Belirli bir getirme sırasında almak istediğiniz satır sayısı için geçerli ayarı alır.

DWORD GetRowsetSize() const;

Dönüş değeri

Belirli bir getirme sırasında alınacak satır sayısı.

Açıklamalar

Toplu satır getirme kullanıyorsanız, kayıt kümesi açıldığında varsayılan satır kümesi boyutu 25'tir; aksi takdirde, 1 olur.

Toplu satır getirme uygulamak için üye işlevinin CRecordset::useMultiRowFetch dwOptions parametresinde Open seçeneğini belirtmeniz gerekir. Satır kümesi boyutunun ayarını değiştirmek için öğesini çağırın SetRowsetSize.

Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

CRecordset::GetRowsFetched

Bir getirmeden sonra kaç kaydın alındığını belirler.

DWORD GetRowsFetched() const;

Dönüş değeri

Belirli bir getirmeden sonra veri kaynağından alınan satır sayısı.

Açıklamalar

Bu, toplu satır getirme işlemi gerçekleştirdiğinizde kullanışlıdır. Satır kümesi boyutu normalde bir getirmeden kaç satır alınacağını gösterir. Ancak kayıt kümesindeki toplam satır sayısı, satır kümesinde kaç satır alınacağını da etkiler. Örneğin, kayıt kümenizde dört satır kümesi boyutu ayarına sahip 10 kayıt varsa, çağırarak MoveNext kayıt kümesinde döngü yapmak, son satır kümesinin yalnızca iki kayda sahip olmasına neden olur.

Toplu satır getirme uygulamak için üye işlevinin CRecordset::useMultiRowFetch dwOptions parametresinde Open seçeneğini belirtmeniz gerekir. Satır kümesi boyutunu belirtmek için SetRowsetSize öğesini çağırın.

Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Örnek

CMultiCustomer rs(&m_dbCust);

// Set the rowset size
rs.SetRowsetSize(5);

// Open the recordset
rs.Open(CRecordset::dynaset, NULL, CRecordset::useMultiRowFetch);

// loop through the recordset by rowsets
while (!rs.IsEOF())
{
   for (int rowCount = 0; rowCount < (int)rs.GetRowsFetched(); rowCount++)
   {
      // do something
   }

   rs.MoveNext();
}

rs.Close();

CRecordset::GetRowStatus

Geçerli satır kümesindeki bir satırın durumunu alır.

WORD GetRowStatus(WORD wRow) const;

Parametreler

wRow
Geçerli satır kümesindeki bir satırın tek tabanlı konumu. Bu değer 1 ile satır kümesinin boyutu arasında değişebilir.

Dönüş değeri

Satır için durum değeri. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

GetRowStatus , veri kaynağından en son alındığından bu yana satırdaki durum değişikliğini veya buna karşılık gelen wRow hiçbir satırın getirilmeyen bir değeri döndürür. Aşağıdaki tabloda olası dönüş değerleri listelemektedir.

Durum değeri Açıklama
SQL_ROW_SUCCESS Satır değiştirilmez.
SQL_ROW_UPDATED Satır güncelleştirildi.
SQL_ROW_DELETED Satır silindi.
SQL_ROW_ADDED Satır eklendi.
SQL_ROW_ERROR Bir hata nedeniyle satıra ulaşılamıyor.
SQL_ROW_NOROW Hiçbir satır öğesine wRowkarşılık gelir.

Daha fazla bilgi için bkz. Windows SDK'sında ODBC API işlevi SQLExtendedFetch .

CRecordset::GetStatus

Kayıt kümesindeki geçerli kaydın dizinini ve son kaydın görülmüş olup olmadığını belirler.

void GetStatus(CRecordsetStatus& rStatus) const;

Parametreler

rStatus
Bir nesneye CRecordsetStatus başvuru. Daha fazla bilgi için bkz . Açıklamalar.

Açıklamalar

CRecordset dizini izlemeye çalışır, ancak bazı durumlarda bu mümkün olmayabilir. Açıklama için bkz GetRecordCount .

Yapı CRecordsetStatus aşağıdaki biçimdedir:

struct CRecordsetStatus
{
    long m_lCurrentRecord;
    BOOL m_bRecordCountFinal;
};

iki üyesi CRecordsetStatus aşağıdaki anlamlara sahiptir:

  • m_lCurrentRecord Biliniyorsa kayıt kümesindeki geçerli kaydın sıfır tabanlı dizinini içerir. Dizin belirlenemezse, bu üye (-2) içerir AFX_CURRENT_RECORD_UNDEFINED . TRUE ise IsBOF (boş kayıt kümesi veya ilk kayıt öncesinde kaydırmayı dene), ( m_lCurrentRecord -1) olarak ayarlanır AFX_CURRENT_RECORD_BOF . İlk kayıtta ise 0, ikinci kayıt 1 vb. olarak ayarlanır.

  • m_bRecordCountFinal Kayıt kümesindeki toplam kayıt sayısı belirlendiyse sıfır olmayan. Genellikle bu, kayıt kümesinin başlangıcından başlayıp sıfır olmayan döndürene kadar IsEOF çağrılarak MoveNext gerçekleştirilmelidir. Bu üye sıfırsa, -1 değilse tarafından GetRecordCountdöndürülen kayıt sayısı, kayıtların yalnızca "yüksek su işareti" sayısıdır.

CRecordset::GetSQL

Kayıt kümesinin kayıtları açıldığında seçmek için kullanılan SQL deyimini almak için bu üye işlevini çağırın.

const CString& GetSQL() const;

Dönüş değeri

const SQL deyimini içeren bir CString başvuru.

Açıklamalar

Bu genellikle bir SQL SELECT deyimi olacaktır. tarafından GetSQL döndürülen dize salt okunurdur.

tarafından GetSQL döndürülen dize genellikle parametresindeki lpszSQL Open kayıt kümesine üye işlevine geçirmiş olabileceğiniz herhangi bir dizeden farklıdır. Bunun nedeni, kayıt kümesinin ile belirttiğiniz, ve ClassWizardm_strSort veri üyelerinde m_strFilter belirtmiş olabileceğiniz ve belirtmiş olabileceğiniz parametrelere göre Opentam bir SQL deyimi oluşturmasıdır. Kayıt kümesinin bu SQL deyimini nasıl oluşturması hakkında ayrıntılı bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC).

Not

Bu üye işlevini yalnızca çağrısı yaptıktan sonra çağır Open.

CRecordset::GetTableName

Kayıt kümesinin sorgusunun temel aldığı SQL tablosunun adını alır.

const CString& GetTableName() const;

Dönüş değeri

Kayıt const kümesi bir tabloyu temel alırsa tablo adını içeren bir başvuru CString ; aksi takdirde boş bir dize.

Açıklamalar

GetTableName yalnızca kayıt kümesinin birden çok tablonun veya önceden tanımlanmış bir sorgunun (saklı yordam) birleşimini değil, bir tabloyu temel alması durumunda geçerlidir. Ad salt okunur.

Not

Bu üye işlevini yalnızca çağrısı yaptıktan sonra çağır Open.

CRecordset::IsBOF

Kayıt kümesi ilk kayıt öncesinde konumlandırılmışsa sıfır olmayan değerini döndürür. Geçerli kayıt yok.

BOOL IsBOF() const;

Dönüş değeri

Kayıt kümesinde kayıt yoksa veya ilk kayıt öncesinde geriye doğru kaydırma yaptıysanız sıfır olmayan; aksi takdirde 0.

Açıklamalar

Kayıttan kayda kaydırmadan önce bu üye işlevini çağırarak kayıt kümesinin ilk kaydından önce gidip gitmediğiniz hakkında bilgi edinin. Kayıt kümesinin herhangi bir kayıt içerdiğini veya boş olup olmadığını belirlemek için ile IsEOF birlikte kullanabilirsinizIsBOF. çağrısından Openhemen sonra, kayıt kümesi hiçbir kayıt içermiyorsa sıfır IsBOF olmayan bir değer döndürür. En az bir kaydı olan bir kayıt kümesini açtığınızda, ilk kayıt geçerli kayıttır ve IsBOF 0 döndürür.

İlk kayıt geçerli kayıtsa ve öğesini çağırırsanız MovePrevIsBOF sıfır olmayan bir değer döndürür. Sıfır olmayan değerini döndürür ve IsBOF çağrısı MovePrevyaparsanız bir hata oluşur. Sıfır olmayan döndürürse IsBOF geçerli kayıt tanımlanmamış olur ve geçerli kayıt gerektiren tüm eylemler hataya neden olur.

Örnek

Bu örnek, kod kayıt kümesinde her iki yönde kaydırdıkça kayıt kümesinin sınırlarını algılamak için ve IsEOF kullanırIsBOF.

// Open a recordset; first record is current
// Open a recordset; first record is current
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();

if(rsCustSet.IsBOF())
   return;
   // The recordset is empty

// Scroll to the end of the recordset, past
// the last record, so no record is current
while (!rsCustSet.IsEOF())
   rsCustSet.MoveNext();

// Move to the last record
rsCustSet.MoveLast();

// Scroll to beginning of the recordset, before
// the first record, so no record is current
while(!rsCustSet.IsBOF())
   rsCustSet.MovePrev();

// First record is current again
rsCustSet.MoveFirst();

CRecordset::IsDeleted

Geçerli kaydın silinip silinmediğini belirler.

BOOL IsDeleted() const;

Dönüş değeri

Kayıt kümesi silinmiş bir kayıtta konumlandırıldıysa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bir kayda IsDeleted kaydırıp (sıfır olmayan) döndürürseniz TRUE , diğer kayıt kümesi işlemlerini gerçekleştirebilmek için önce başka bir kayda kaydırmanız gerekir.

sonucu IsDeleted , kayıt kümenizin türü, kayıt kümenizin güncelleştirilebilir olup olmadığı, kayıt kümesini açtığınızda seçeneği belirtip belirtmediğiniz, sürücünüzün CRecordset::skipDeletedRecords silinen kayıtları paketleyip paketlemediği ve birden çok kullanıcı olup olmadığı gibi birçok faktöre bağlıdır.

Ve sürücü paketleme hakkında CRecordset::skipDeletedRecords daha fazla bilgi için bkz . Open member işlevi.

Not

Toplu satır getirme işlemini uyguladıysanız çağırmamalısınız IsDeleted. Bunun yerine GetRowStatus üye işlevini çağırın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

CRecordset::IsEOF

Kayıt kümesi son kayıt sonrasında konumlandırıldıysa sıfır olmayan değerini döndürür. Geçerli kayıt yok.

BOOL IsEOF() const;

Dönüş değeri

Kayıt kümesinde kayıt yoksa veya son kaydın ötesine geçtiyseniz sıfır olmayan; aksi takdirde 0.

Açıklamalar

Kayıttan kayda kaydırdığınızda kayıt kümesinin son kaydının ötesine geçtiğinizi öğrenmek için bu üye işlevini çağırın. Kayıt kümesinin herhangi bir kayıt mı içerdiğini yoksa boş mu olduğunu belirlemek için de kullanabilirsiniz IsEOF . çağrısından Openhemen sonra, kayıt kümesi hiçbir kayıt içermiyorsa sıfır IsEOF olmayan bir değer döndürür. En az bir kaydı olan bir kayıt kümesini açtığınızda, ilk kayıt geçerli kayıttır ve IsEOF 0 döndürür.

Çağrısı MoveNextIsEOF yaptığınızda son kayıt geçerli kayıtsa sıfır olmayan bir değer döndürür. Sıfır olmayan değerini döndürür ve IsEOF çağrısı MoveNextyaparsanız bir hata oluşur. Sıfır olmayan döndürürse IsEOF geçerli kayıt tanımlanmamış olur ve geçerli kayıt gerektiren tüm eylemler hataya neden olur.

Örnek

örneğine IsBOFbakın.

CRecordset::IsFieldDirty

Belirtilen alan veri üyesinin bu tarihten sonra mı AddNew yoksa çağrıldığından mı Edit değiştirildiğini belirler.

BOOL IsFieldDirty(void* pv);

Parametreler

pv
Durumunu denetlemek istediğiniz alan veri üyesinin işaretçisi veya NULL alanlardan herhangi birinin kirli olup olmadığını belirlemek için.

Dönüş değeri

Belirtilen alan veri üyesi çağrıldıktan AddNew sonra değiştiyse sıfır olmayan veya Editdeğilse 0.

Açıklamalar

Tüm kirli alan veri üyelerindeki veriler, geçerli kayıt üye işlevine CRecordset yapılan bir çağrıyla güncelleştirildiğinde (veya AddNewçağrısının Edit ardından) veri kaynağındaki Update kayda aktarılır.

Not

Bu üye işlevi, toplu satır getirme kullanan kayıt kümelerinde geçerli değildir. Toplu satır getirme işlemi uyguladıysanız, IsFieldDirty her zaman YANLIŞ döndürür ve başarısız onaylama işlemiyle sonuçlanır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Alanın kirli durumu yeniden değerlendirildiğinden, aramaIsFieldDirty, SetFieldDirty'ye yapılan önceki çağrıların etkilerini sıfırlar. AddNew Bu durumda, geçerli alan değeri sahte null değerden farklıysa, alan durumu kirli olarak ayarlanır. Edit Bu durumda, alan değeri önbelleğe alınan değerden farklıysa, alan durumu kirli olarak ayarlanır.

IsFieldDirty aracılığıyla DoFieldExchangeuygulanır.

Kirli bayrak hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC).

CRecordset::IsFieldNull

Geçerli kayıtta belirtilen alan Null ise (değeri yok) sıfır olmayan bir değer döndürür.

BOOL IsFieldNull(void* pv);

Parametreler

pv
Durumunu denetlemek istediğiniz alan veri üyesinin işaretçisi veya NULL alanlardan birinin Null olup olmadığını belirlemek için.

Dönüş değeri

Belirtilen alan veri üyesi Null olarak işaretlenmişse sıfır olmayan; aksi takdirde 0.

Açıklamalar

Bir kayıt kümesinin belirtilen alan veri üyesinin Null olarak işaretlenip işaretlenmediğini belirlemek için bu üye işlevini çağırın. (Veritabanı terminolojisinde Null değerin olmadığı anlamına gelir ve C++ ile aynı NULL değildir.) Alan veri üyesi Null olarak işaretlenirse, geçerli kaydın değeri olmayan bir sütunu olarak yorumlanır.

Not

Bu üye işlevi, toplu satır getirme kullanan kayıt kümelerinde geçerli değildir. Toplu satır getirme işlemi uyguladıysanız, IsFieldNull her zaman döndürülecek FALSE ve başarısız onaylama işlemine neden olacaktır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

IsFieldNull aracılığıyla DoFieldExchangeuygulanır.

CRecordset::IsFieldNullable

Geçerli kayıtta belirtilen alan Null (değer olmadan) olarak ayarlanabiliyorsa sıfır olmayan değerini döndürür.

BOOL IsFieldNullable(void* pv);

Parametreler

pv
Durumunu denetlemek istediğiniz alan veri üyesinin işaretçisi veya NULL alanlardan herhangi birinin Null değere ayarlanabilir olup olmadığını belirleme.

Açıklamalar

Belirtilen alan veri üyesinin "null atanabilir" olup olmadığını belirlemek için bu üye işlevini çağırın (Null değerine ayarlanabilir; C++ NULL , veritabanı terminolojisinde "değere sahip değil" anlamına gelen Null ile aynı değildir.

Not

Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız IsFieldNullable. Bunun yerine, bir alanın Null değerine ayarlanıp ayarlanamayacağını belirlemek için üye işlevini çağırın GetODBCFieldInfo . Toplu satır getirme gerçekleştirip uygulamadığınıza bakılmaksızın her zaman öğesini çağırabilirsiniz GetODBCFieldInfo. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Null olmayan bir alanın değeri olmalıdır. Kayıt eklerken veya güncelleştirirken böyle bir alanı Null olarak ayarlamaya çalışırsanız, veri kaynağı toplamayı veya güncelleştirmeyi reddeder ve Update bir özel durum oluşturur. Özel durum, çağrısı Updateyaptığınızda değil çağırdığınızda SetFieldNulloluşur.

NULL işlevinin ilk bağımsız değişkeni için kullanıldığında işlev alanlara değil param yalnızca alanlara outputColumn uygulanır. Örneğin, arama

SetFieldNull(NULL);

yalnızca outputColumn alanları olarak NULLayarlar; param alanlar etkilenmez.

Alanlar üzerinde param çalışmak için, üzerinde çalışmak istediğiniz kişinin param gerçek adresini sağlamanız gerekir, örneğin:

SetFieldNull(&m_strParam);

Başka bir deyişle, tüm param alanları olarak NULLayarlayamazsınız, alanlar gibi outputColumn .

IsFieldNullableDoFieldExchange aracılığıyla uygulanır.

CRecordset::IsOpen

Kayıt kümesinin zaten açık olup olmadığını belirler.

BOOL IsOpen() const;

Dönüş değeri

Kayıt kümesi nesnesinin Open veya Requery üye işlevinin daha önce çağrılıp kayıt kümesinin kapatılmaması durumunda sıfır olmayan; aksi takdirde 0.

CRecordset::m_hstmt

Kayıt kümesiyle ilişkilendirilmiş türünde HSTMTODBC deyimi veri yapısının tanıtıcısını içerir.

Açıklamalar

ODBC veri kaynağına yapılan her sorgu ile HSTMTilişkilendirilir.

Dikkat

Daha önce çağrılmadan önce Open kullanmayınm_hstmt.

Normalde doğrudan öğesine erişmeniz HSTMT gerekmez, ancak SQL deyimlerinin doğrudan yürütülmesi için buna ihtiyacınız olabilir. ExecuteSQL sınıfının CDatabase member işlevi, kullanma m_hstmtörneği sağlar.

CRecordset::m_nFields

Kayıt kümesi sınıfındaki alan veri üyesi sayısını içerir; diğer bir ifadeyle, veri kaynağından kayıt kümesi tarafından seçilen sütun sayısıdır.

Açıklamalar

Kayıt kümesi sınıfının oluşturucusunun doğru sayı ile başlatılması m_nFields gerekir. Toplu satır getirme uygulamadıysanız, ClassWizard kayıt kümesi sınıfınızı bildirmek için kullandığınızda bu başlatmayı sizin için yazar. El ile de yazabilirsiniz.

Çerçeve, alan veri üyeleriyle veri kaynağındaki geçerli kaydın ilgili sütunları arasındaki etkileşimi yönetmek için bu sayıyı kullanır.

Dikkat

Bu numara, parametresiyle CFieldExchange::outputColumnçağrısında veya DoBulkFieldExchange sonrasında SetFieldType kaydedilen DoFieldExchange "çıkış sütunlarının" sayısına karşılık olmalıdır.

"Kayıt Kümesi: Veri Sütunlarını Dinamik Olarak Bağlama" makalesinde açıklandığı gibi sütunları dinamik olarak bağlayabilirsiniz. Bunu yaparsanız, dinamik olarak bağlı sütunlar için veya DoBulkFieldExchange üye işlevinizdeki RFX veya Toplu RFX işlev çağrılarının sayısını yansıtacak şekilde içindeki sayısını m_nFields artırmanız DoFieldExchange gerekir.

Daha fazla bilgi için Recordset: Dynamically Binding Data Columns (ODBC) ve Recordset: Fetching Records in Bulk (ODBC) makalelerine bakın.

Örnek

bkz . Kayıt Alanı Değişimi: RFX kullanma.

CRecordset::m_nParams

Kayıt kümesi sınıfındaki parametre veri üyesi sayısını içerir; diğer bir ifadeyle, kayıt kümesinin sorgusuyla geçirilen parametre sayısıdır.

Açıklamalar

Kayıt kümesi sınıfınızda herhangi bir parametre veri üyesi varsa, sınıfın oluşturucusunun doğru sayı ile başlatılması m_nParams gerekir. değerinin m_nParams varsayılan değeri 0'dır. Parametre veri üyeleri eklerseniz (el ile yapmanız gerekir), parametre sayısını yansıtmak için sınıf oluşturucusunda el ile bir başlatma da eklemeniz gerekir (en az veya m_strSort dizenizdeki m_strFilter '' yer tutucularının sayısı kadar büyük olmalıdır).

Çerçeve, kayıt kümesinin sorgusunu parametreleştirdiğinde bu sayıyı kullanır.

Dikkat

Bu numara, içinde veya çağrısından SetFieldType sonra , , CFieldExchange::outputParamCFieldExchange::paramveya CFieldExchange::inoutParamparametre değeriyle CFieldExchange::inputParamkaydedilen DoFieldExchange "params" sayısına karşılık DoBulkFieldExchange gelir.

Örnek

Kayıt Kümesi: Kayıt Kümesini Parametreleştirme (ODBC) ve Kayıt Alanı Değişimi: RFX Kullanma makalelerine bakın.

CRecordset::m_pDatabase

Kayıt kümesinin CDatabase bir veri kaynağına bağlandığı nesneye ilişkin bir işaretçi içerir.

Açıklamalar

Bu değişken iki şekilde ayarlanır. Genellikle, kayıt kümesi nesnesini oluştururken zaten bağlı CDatabase olan bir nesneye işaretçi geçirirsiniz. Bunun yerine geçirirseniz NULL , CRecordset sizin için bir CDatabase nesne oluşturur ve bunu bağlar. Her iki durumda da işaretçiyi CRecordset bu değişkende depolar.

Normalde içinde depolanan m_pDatabaseişaretçiyi doğrudan kullanmanız gerekmez. Ancak kendi uzantılarınızı CRecordsetyazarsanız işaretçiyi kullanmanız gerekebilir. Örneğin, kendi CDBExceptionişaretçinizi atarsanız işaretçiye ihtiyacınız olabilir. Veya aynı CDatabase nesneyi kullanarak işlem çalıştırma, zaman aşımlarını ayarlama veya SQL deyimlerini doğrudan yürütmek için sınıfın ExecuteSQL CDatabase üye işlevini çağırma gibi bir işlem yapmanız gerekiyorsa buna ihtiyacınız olabilir.

CRecordset::m_strFilter

Kayıt kümesi nesnesini oluşturulduktan sonra, ancak üye işlevini çağırmadan önce, sql WHERE yan tümcesi Open içeren bir CString depolamak için bu veri üyesini kullanın.

Açıklamalar

Kayıt kümesi, veya Requery çağrısı sırasında seçtiği kayıtları kısıtlamak (veya filtrelemek) için bu dizeyi Open kullanır. Bu, "California'da bulunan tüm satış temsilcileri" ("eyalet = CA") gibi kayıtların bir alt kümesini seçmek için kullanışlıdır. Yan WHERE tümcenin ODBC SQL söz dizimi şudur:

WHERE search-condition

Dizenize anahtar sözcüğünü WHERE eklemeyin. Çerçeve bunu sağlar.

Ayrıca, her yer tutucu için sınıfınızda bir parametre veri üyesi bildirerek ve çalışma zamanında kayıt kümesine parametreler geçirerek filtre dizenizi parametreleştirebilirsiniz. Bu, çalışma zamanında filtreyi oluşturmanıza olanak tanır. Daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümesini Parametreleştirme (ODBC).

SQL WHERE yan tümceleri hakkında daha fazla bilgi için bkz . SQL. Kayıtları seçme ve filtreleme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Filtreleme (ODBC).

Örnek

CCustomer rsCustSet(&m_dbCust);

// Set the filter
rsCustSet.m_strFilter = _T("L_Name = 'Flanders'");

// Run the filtered query
rsCustSet.Open(CRecordset::snapshot, _T("Customer"));

CRecordset::m_strSort

Kayıt kümesi nesnesini oluşturulduktan sonra, ancak üye işlevini çağırmadan önce, sql ORDER BY yan tümcesi Open içeren bir CString depolamak için bu veri üyesini kullanın.

Açıklamalar

Kayıt kümesi, veya Requery çağrısı sırasında seçtiği kayıtları sıralamak için bu dizeyi Open kullanır. Bir veya daha fazla sütundaki kayıt kümesini sıralamak için bu özelliği kullanabilirsiniz. Yan ORDER BY tümce için ODBC SQL söz dizimi şu şekildedir:

ORDER BY sort-specification [, sort-specification]...

burada sıralama belirtimi bir tamsayı veya sütun adıdır. Sıralama dizesindeki sütun listesine "ASC" veya "DESC" ekleyerek artan veya azalan düzen de belirtebilirsiniz (düzen varsayılan olarak artan düzendir). Seçili kayıtlar önce listelenen ilk sütuna, sonra ikinciye göre vb. sıralanır. Örneğin, bir "Müşteriler" kayıt kümesini soyadına ve ardından adlara göre sıralayabilirsiniz. Listeleyebileceğiniz sütun sayısı veri kaynağına bağlıdır. Daha fazla bilgi için bkz. Windows SDK.

Dizenize anahtar sözcüğünü ORDER BY eklemeyin. Çerçeve bunu sağlar.

SQL yan tümceleri hakkında daha fazla bilgi için bkz . SQL. Kayıtları sıralama hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Sıralama (ODBC).

Örnek

CCustomer rsCustSet(&m_dbCust);

// Set the sort string
rsCustSet.m_strSort = _T("L_Name, ContactFirstName");

// Run the sorted query
rsCustSet.Open(CRecordset::snapshot, _T("Customer"));

CRecordset::Move

Kayıt kümesi içindeki geçerli kayıt işaretçisini ileri veya geri taşır.

virtual void Move(
    long nRows,
    WORD wFetchType = SQL_FETCH_RELATIVE);

Parametreler

nRows
İleri veya geri taşınacak satır sayısı. Pozitif değerler, kayıt kümesinin sonuna doğru ilerler. Negatif değerler başa doğru geriye doğru hareket eder.

wFetchType
Getirilecek satır kümesini Move belirler. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

için nRowsMove 0 değerini geçirirseniz, geçerli kaydı yeniler; Move geçerli AddNew kaydı veya Edit modu sona erdirir ve geçerli kaydın değerini çağrılmadan önce AddNew geri Edit yükler.

Not

Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız. Daha fazla bilgi edinmek için bkz. CRecordset::IsDeleted. seçeneğinin ayarlandığı bir CRecordset skipDeletedRecords dosyasını açtığınızda, Move parametre 0 ise nRows onaylar. Bu davranış, aynı verileri kullanan diğer istemci uygulamaları tarafından silinen satırların yenilenmesini engeller. dwOption açıklaması için içindeki Open parametresine skipDeletedRecordsbakın.

Move kayıt kümesini satır kümelerine göre yeniden konumlandırır. ve wFetchTypeMove değerlerini nRows temel alarak uygun satır kümesini getirir ve ardından bu satır kümesindeki ilk kaydı geçerli kayıt yapar. Toplu satır getirme uygulamadıysanız satır kümesi boyutu her zaman 1 olur. Satır kümesi getirilirken, Move getirmeden CheckRowsetError kaynaklanan hataları işlemek için üye işlevini doğrudan çağırır.

Geçirdiğiniz değerlere bağlı olarak, Move diğer CRecordset üye işlevlerine eşdeğerdir. Özellikle değeri wFetchType , daha sezgisel ve genellikle geçerli kaydı taşımak için tercih edilen yöntem olan bir üye işlevini gösterebilir.

Aşağıdaki tabloda, ve temelinde getirilecek wFetchType satır kümesi Move ve nRowsöğesine karşılık gelen wFetchTypetüm eşdeğer üye işlevleri için wFetchTypeolası değerler listelenir.

wFetchType Getirilen satır kümesi Eşdeğer üye işlevi
SQL_FETCH_RELATIVE (varsayılan değer) Satır kümesinin geçerli satır kümesinin ilk satırından satır nRows başlatması.
SQL_FETCH_NEXT Sonraki satır kümesi; nRows yoksayılır. MoveNext
SQL_FETCH_PRIOR Önceki satır kümesi; nRows yoksayılır. MovePrev
SQL_FETCH_FIRST Kayıt kümesindeki ilk satır kümesi; nRows yoksayılır. MoveFirst
SQL_FETCH_LAST Kayıt kümesindeki son tam satır kümesi; nRows yoksayılır. MoveLast
SQL_FETCH_ABSOLUTE 0 ise nRows> , satır kümesi kayıt kümesinin başından başlayarak satırları başlatır nRows . 0 ise nRows< , satır kümesi kayıt kümesinin sonundaki satırları başlatır nRows . = 0 ise nRows , dosya başlangıcı (BOF) koşulu döndürülür. SetAbsolutePosition
SQL_FETCH_BOOKMARK Yer işareti değeri öğesine karşılık gelen nRowssatırdan başlayan satır kümesi. SetBookmark

Not

Yalnızca ileriye doğru kayıt kümeleri için yalnızca Move değeri SQL_FETCH_NEXT ile wFetchTypegeçerlidir.

Dikkat

Kayıt kümesinde kayıt yoksa çağrısı Move özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsEOFöğesini çağırınIsBOF.

Not

Kayıt kümesinin başını veya sonunu kaydırdıysanız (IsBOF veya IsEOF sıfır olmayan bir değer döndürürse), işlevi Move çağırmak büyük olasılıkla bir CDBExceptionoluşturur. Örneğin sıfır olmayan döndürür ve IsBOF döndürmezse IsEOF MoveNext bir özel durum oluşturur, ancak MovePrev oluşturmaz.

Not

Geçerli kayıt güncelleştirilirken veya eklenirken ararsanız Move , güncelleştirmeler uyarı olmadan kaybolur.

Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC). İlgili bilgiler için bkz. Windows SDK'sında ODBC API işlevi SQLExtendedFetch .

Örnek

// rs is a CRecordset or a CRecordset-derived object

// Change the rowset size to 5
rs.SetRowsetSize(5);

// Open the recordset
rs.Open(CRecordset::dynaset, NULL, CRecordset::useMultiRowFetch);

// Move to the first record in the recordset
rs.MoveFirst();

// Move to the sixth record
rs.Move(5);
// Other equivalent ways to move to the sixth record:
rs.Move(6, SQL_FETCH_ABSOLUTE);
rs.SetAbsolutePosition(6);
// In this case, the sixth record is the first record in the next rowset,
// so the following are also equivalent:
rs.MoveFirst();
rs.Move(1, SQL_FETCH_NEXT);

rs.MoveFirst();
rs.MoveNext();

CRecordset::MoveFirst

İlk satır kümesindeki ilk kaydı geçerli kayıt yapar.

void MoveFirst();

Açıklamalar

Toplu satır getirmenin uygulanıp uygulanmadığına bakılmaksızın, bu her zaman kayıt kümesindeki ilk kayıt olacaktır.

Kayıt kümesini açtıktan hemen sonra çağırmanız MoveFirst gerekmez. Bu sırada, ilk kayıt (varsa) otomatik olarak geçerli kayıt olur.

Not

Bu üye işlevi yalnızca ileriye doğru kayıt kümeleri için geçerli değildir.

Not

Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız. IsDeleted Ayrıntılar için üye işlevine bakın.

Dikkat

Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsEOFöğesini çağırınIsBOF.

Not

Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.

Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Örnek

örneğine IsBOFbakın.

CRecordset::MoveLast

Son tam satır kümesindeki ilk kaydı geçerli kayıt yapar.

void MoveLast();

Açıklamalar

Toplu satır getirme uygulamadıysanız, kayıt kümenizin satır kümesi boyutu 1'tir, bu nedenle MoveLast kayıt kümesindeki son kayda geçer.

Not

Bu üye işlevi yalnızca ileriye doğru kayıt kümeleri için geçerli değildir.

Not

Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız. IsDeleted Ayrıntılar için üye işlevine bakın.

Dikkat

Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsEOFöğesini çağırınIsBOF.

Not

Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.

Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Örnek

örneğine IsBOFbakın.

CRecordset::MoveNext

Sonraki satır kümesindeki ilk kaydı geçerli kayıt yapar.

void MoveNext();

Açıklamalar

Toplu satır getirme uygulamadıysanız, kayıt kümenizin satır kümesi boyutu 1'tir, bu nedenle MoveNext sonraki kayda geçer.

Not

Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız. IsDeleted Ayrıntılar için üye işlevine bakın.

Dikkat

Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsEOFöğesini çağırınIsBOF.

Not

Ayrıca çağrısı öncesinde de aramanız IsEOF MoveNextönerilir. Örneğin, kayıt kümesinin sonunu kaydırdıysanız sıfır IsEOF olmayan bir değer döndürür; sonraki bir çağrısı MoveNext özel durum oluşturur.

Not

Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.

Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Örnek

örneğine IsBOFbakın.

CRecordset::MovePrev

Önceki satır kümesindeki ilk kaydı geçerli kayıt yapar.

void MovePrev();

Açıklamalar

Toplu satır getirme uygulamadıysanız, kayıt kümenizin satır kümesi boyutu 1'tir, bu nedenle MovePrev önceki kayda geçer.

Not

Bu üye işlevi yalnızca ileriye doğru kayıt kümeleri için geçerli değildir.

Not

Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız. IsDeleted Ayrıntılar için üye işlevine bakın.

Dikkat

Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsEOFöğesini çağırınIsBOF.

Not

Ayrıca çağrısı öncesinde de aramanız IsBOF MovePrevönerilir. Örneğin, kayıt kümesinin başlangıcının ilerisine kaydırdıysanız sıfır IsBOF olmayan bir değer döndürür; sonraki bir çağrısı MovePrev özel durum oluşturur.

Not

Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.

Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Örnek

örneğine IsBOFbakın.

CRecordset::OnSetOptions

Belirtilen ODBC deyimi için seçenekleri ayarlamak için çağrılır (seçimde kullanılır).

virtual void OnSetOptions(HSTMT hstmt);

Parametreler

hstmt
HSTMT Seçenekleri ayarlanacak ODBC deyiminin değeri.

Açıklamalar

Belirtilen ODBC deyimi için seçenekleri ayarlama çağrısı OnSetOptions (seçimde kullanılır). Çerçeve, kayıt kümesi için başlangıç seçeneklerini ayarlamak üzere bu üye işlevini çağırır. OnSetOptions kaydırılabilir imleçler ve imleç eşzamanlılığı için veri kaynağının desteğini belirler ve kayıt kümesinin seçeneklerini buna göre ayarlar. (Seçim işlemleri için kullanılırken OnSetOptions , OnSetUpdateOptions güncelleştirme işlemleri için kullanılır.)

Sürücüye veya veri kaynağına özgü seçenekleri ayarlamak için geçersiz kılın OnSetOptions . Örneğin, veri kaynağınız özel erişim için açmayı destekliyorsa, bu beceriden yararlanmak için geçersiz kılabilirsiniz OnSetOptions .

İmleçler hakkında daha fazla bilgi için bkz . ODBC.

CRecordset::OnSetUpdateOptions

Belirtilen ODBC deyimi için seçenekleri ayarlamak (güncelleştirmede kullanılır) için çağrılır.

virtual void OnSetUpdateOptions(HSTMT hstmt);

Parametreler

hstmt
HSTMT Seçenekleri ayarlanacak ODBC deyiminin değeri.

Açıklamalar

Belirtilen ODBC deyimi için seçenekleri ayarlama çağrısı OnSetUpdateOptions (güncelleştirmede kullanılır). Çerçeve, kayıt kümesindeki kayıtları güncelleştirmek için bir HSTMT oluşturduğunda bu üye işlevini çağırır. (Seçim işlemleri için kullanılırken OnSetOptions , OnSetUpdateOptions güncelleştirme işlemleri için kullanılır.) OnSetUpdateOptions veri kaynağının kaydırılabilir imleçler ve imleç eşzamanlılığı desteğini belirler ve kayıt kümesinin seçeneklerini buna göre ayarlar.

Veritabanına erişmek için bu deyim kullanılmadan önce ODBC deyiminin seçeneklerini ayarlamak için geçersiz kılın OnSetUpdateOptions .

İmleçler hakkında daha fazla bilgi için bkz . ODBC.

CRecordset::Open

Tabloyu alarak veya kayıt kümesinin temsil ettiği sorguyu gerçekleştirerek kayıt kümesini açar.

virtual BOOL Open(
    UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
    LPCTSTR lpszSQL = NULL,
    DWORD dwOptions = none);

Parametreler

nOpenType
varsayılan değerini AFX_DB_USE_DEFAULT_TYPEkabul edin veya aşağıdaki değerlerden enum OpenTypebirini kullanın:

  • CRecordset::dynaset çift yönlü kaydırmaya sahip bir kayıt kümesi. Kayıt kümesinin açılması kayıtların üyeliğini ve sırasını belirler, ancak diğer kullanıcılar tarafından veri değerlerinde yapılan değişiklikler bir getirme işleminden sonra görünür. Dinamik kümeler, anahtar kümesi temelli kayıt kümeleri olarak da bilinir.

  • CRecordset::snapshot çift yönlü kaydırma ile statik kayıt kümesi. Kayıt kümesinin açılması, kayıtların üyeliğini ve sırasını belirler. Kayıt getirilerek veri değerleri belirlenir. Kayıt kümesi kapatılıp yeniden açılana kadar diğer kullanıcılar tarafından yapılan değişiklikler görünmez.

  • CRecordset::dynamic çift yönlü kaydırmaya sahip bir kayıt kümesi. Diğer kullanıcılar tarafından üyelik, sıralama ve veri değerlerinde yapılan değişiklikler getirme işleminden sonra görünür. Birçok ODBC sürücüsü bu tür kayıt kümesini desteklemez.

  • CRecordset::forwardOnly Yalnızca ileri kaydırmaya sahip salt okunur kayıt kümesi.

    için CRecordsetvarsayılan değer şeklindedir CRecordset::snapshot. Varsayılan değer mekanizması, Visual C++ sihirbazlarının hem ODBC CRecordset hem de DAO CDaoRecordsetile etkileşim kurmasına olanak tanır ve bu da farklı varsayılanlara sahiptir.

Bu kayıt kümesi türleri hakkında daha fazla bilgi için bkz . Kayıt Kümesi (ODBC). İlgili bilgiler için Windows SDK'sında "Blok ve Kaydırılabilir İmleçleri Kullanma" bölümüne bakın.

Dikkat

İstenen tür desteklenmiyorsa, çerçeve bir özel durum oluşturur.

lpszSQL
Aşağıdakilerden birini içeren bir dize işaretçisi:

  • İşaretçi NULL .

  • Tablonun adı.

  • SQL SELECT deyimi (isteğe bağlı olarak SQL WHERE veya ORDER BY yan tümcesi ile).

  • CALL Önceden tanımlanmış sorgunun adını belirten bir deyim (saklı yordam). Küme ayracı ile CALL anahtar sözcük arasına boşluk eklememeye dikkat edin.

Bu dize hakkında daha fazla bilgi için Açıklamalar bölümünde ClassWizard'ın rolünün tablosuna ve tartışmalarına bakın.

Not

Sonuç kümenizdeki sütunların sırası, veya DoBulkFieldExchange işlevi geçersiz kılmanızdaki DoFieldExchange RFX veya Toplu RFX işlev çağrılarının sırasıyla eşleşmelidir.

dwOptions
Aşağıda listelenen değerlerin bir bileşimini belirtebilen bit maskesi. Bunlardan bazıları birbirini dışlar. Varsayılan değer şudur: none.

  • CRecordset::none Seçenek ayarlanmadı. Bu parametre değeri diğer tüm değerlerle birbirini dışlar. Varsayılan olarak, kayıt kümesi veya Delete ile Edit güncelleştirilebilir ve ile AddNewyeni kayıtların eklenmesine izin verir. Güncelleştirilebilirlik, veri kaynağına ve belirttiğiniz seçeneğe nOpenType bağlıdır. Toplu eklemeler için iyileştirme kullanılamaz. Toplu satır getirme uygulanmaz. Kayıt kümesi gezintisi sırasında silinen kayıtlar atlanmayacaktır. Yer işaretleri kullanılamaz. Otomatik kirli alan denetimi uygulanır.

  • CRecordset::appendOnly Kayıt kümesinde veya Edit Delete izin verme. Yalnızca izin ver AddNew . Bu seçenek ile CRecordset::readOnlybirbirini dışlar.

  • CRecordset::readOnly Kayıt kümesini salt okunur olarak açın. Bu seçenek ile CRecordset::appendOnlybirbirini dışlar.

  • CRecordset::optimizeBulkAdd Bir kerede çok sayıda kayıt eklemeyi iyileştirmek için hazırlanmış bir SQL deyimi kullanın. Yalnızca kayıt kümesini güncelleştirmek için ODBC API işlevini SQLSetPos kullanmıyorsanız geçerlidir. İlk güncelleştirme, hangi alanların kirli olarak işaretleneceğini belirler. Bu seçenek ile CRecordset::useMultiRowFetchbirbirini dışlar.

  • CRecordset::useMultiRowFetch Tek bir getirme işleminde birden çok satırın alınmasına izin vermek için toplu satır getirme uygulayın. Bu, performansı geliştirmek için tasarlanmış gelişmiş bir özelliktir; ancak, toplu kayıt alanı değişimi tarafından ClassWizarddesteklenmez. Bu seçenek ile CRecordset::optimizeBulkAddbirbirini dışlar. belirtirseniz CRecordset::useMultiRowFetch, seçenek CRecordset::noDirtyFieldCheck otomatik olarak açılır (çift arabelleğe alma kullanılamaz); yalnızca ileri kayıt kümelerinde seçenek CRecordset::useExtendedFetch otomatik olarak açılır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

  • CRecordset::skipDeletedRecords Kayıt kümesinde gezinirken silinen tüm kayıtları atlayın. Bu, belirli göreli getirme işlemlerinde performansı yavaşlatacaktır. Bu seçenek yalnızca ileriye doğru kayıt kümelerinde geçerli değildir. nRows parametresi 0 olarak ayarlanırsa ve CRecordset::skipDeletedRecords seçenek kümesiyle çağırırsanız Move onaylanırMove. CRecordset::skipDeletedRecordssürücü paketlemeye benzer; bu da silinen satırların kayıt kümesinden kaldırıldığı anlamına gelir. Ancak, sürücünüz kayıtları paketlerse, yalnızca sildiğiniz kayıtları atlar; kayıt kümesi açıkken diğer kullanıcılar tarafından silinen kayıtları atlamaz. CRecordset::skipDeletedRecords diğer kullanıcılar tarafından silinen satırları atlar.

  • CRecordset::useBookmarks Destekleniyorsa kayıt kümesindeki yer işaretlerini kullanabilir. Yer işaretleri veri alımını yavaşlatsa da veri gezintisi performansını artırır. Yalnızca iletilen kayıt kümelerinde geçerli değil. Daha fazla bilgi için bkz . Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC).

  • CRecordset::noDirtyFieldCheck Otomatik kirli alan denetimini (çift arabelleğe alma) kapatın. Bu, performansı geliştirir; ancak ve SetFieldNull üye işlevlerini çağırarak SetFieldDirty alanları el ile kirli olarak işaretlemeniz gerekir. sınıfında çift arabelleğe alma, sınıfında CRecordset CDaoRecordsetçift arabelleğe alma işlemine benzer. Ancak içinde, CRecordsettek tek alanlarda çift arabelleğe almayı etkinleştiremezsiniz; tüm alanlar için etkinleştirebilir veya tüm alanlar için devre dışı bırakabilirsiniz. seçeneğini CRecordset::useMultiRowFetchCRecordset::noDirtyFieldCheck belirtirseniz, otomatik olarak açılır; ancak SetFieldDirty SetFieldNull toplu satır getirme uygulayan kayıt kümelerinde kullanılamaz.

  • CRecordset::executeDirect Hazırlanmış bir SQL deyimi kullanmayın. Gelişmiş performans için üye işlevi hiçbir zaman çağrılmayacaksa Requery bu seçeneği belirtin.

  • CRecordset::useExtendedFetchyerine SQLFetchuygulayınSQLExtendedFetch. Bu, yalnızca ileriye doğru kayıt kümelerinde toplu satır getirme uygulamak için tasarlanmıştır. Seçeneği CRecordset::useMultiRowFetch yalnızca ileriye doğru kayıt kümesinde belirtirseniz otomatik CRecordset::useExtendedFetch olarak açılır.

  • CRecordset::userAllocMultiRowBuffers Kullanıcı veriler için depolama arabellekleri ayırır. Kendi depolama alanınızı ayırmak istiyorsanız ile bu seçeneği CRecordset::useMultiRowFetch kullanın. Aksi takdirde, çerçeve gerekli depolamayı otomatik olarak ayırır. Daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC). CRecordset::userAllocMultiRowBuffers Başarısız bir onay ile sonuç belirtmeden CRecordset::useMultiRowFetch belirtme.

Dönüş değeri

Nesne başarıyla açıldıysa CRecordset sıfır olmayan; aksi takdirde (çağrılırsa CDatabase::Open ) 0 döndürür.

Açıklamalar

Kayıt kümesi tarafından tanımlanan sorguyu çalıştırmak için bu üye işlevini çağırmanız gerekir. çağrısından Openönce kayıt kümesi nesnesini oluşturmanız gerekir.

Bu kayıt kümesinin veri kaynağına bağlantısı, çağırmadan Openönce kayıt kümesini nasıl oluşturduğunuza bağlıdır. Veri kaynağına bağlanmamış bir CDatabase nesneyi kayıt kümesi oluşturucusna geçirirseniz, bu üye işlevi veritabanı nesnesini açmaya çalışmak için kullanır GetDefaultConnect . Kayıt kümesi oluşturucusna NULL geçirirseniz, oluşturucu sizin için bir CDatabase nesne oluşturur ve Open veritabanı nesnesini bağlamaya çalışır. Bu farklı koşullar altında kayıt kümesini ve bağlantıyı kapatma hakkında ayrıntılı bilgi için bkz Close. .

Not

Bir nesne üzerinden CRecordset veri kaynağına erişim her zaman paylaşılır. sınıfından CDaoRecordset farklı olarak, özel erişime sahip bir CRecordset veri kaynağını açmak için nesne kullanamazsınız.

çağırdığınızda Open, genellikle SQL SELECT deyimi olan bir sorgu, aşağıdaki tabloda gösterilen ölçütlere göre kayıtları seçer.

Parametrenin lpszSQL değeri Seçilen kayıtlar Örnek
NULL tarafından GetDefaultSQLdöndürülen dize.
SQL tablo adı veya DoBulkFieldExchangeiçindeki tablo listesinin DoFieldExchange tüm sütunları. "Customer"
Önceden tanımlanmış sorgu (saklı yordam) adı Sorgunun döndürmek için tanımlandığı sütunlar. "{call OverDueAccts}"
SELECT sütun-listesi FROM tablo-listesi Belirtilen tablolardan belirtilen sütunlar. "SELECT CustId, CustName FROM

Customer"

Dikkat

SQL dizenize fazladan boşluk eklemeyin. Örneğin, küme ayracı ile CALL anahtar sözcüğü arasına boşluk eklerseniz, MFC SQL dizesini tablo adı olarak yanlış yorumlar ve bunu bir SELECT deyimine ekler ve bu da bir özel durum oluşur. Benzer şekilde, önceden tanımlanmış sorgunuz bir çıkış parametresi kullanıyorsa küme ayracı ile '' simgesi arasına boşluk eklemeyin. Son olarak, bir deyimdeki küme ayracından önce veya deyimindeki CALL anahtar sözcüğünden SELECT SELECT önce boşluk eklememelisiniz.

Her zamanki yordam adresine geçmektir NULL Open; bu durumda GetDefaultSQL'i Opençağırır. Türetilmiş CRecordset bir sınıf kullanıyorsanız, GetDefaultSQL içinde ClassWizardbelirttiğiniz tablo adlarını verir. Bunun yerine parametresinde lpszSQL başka bilgiler belirtebilirsiniz.

Ne geçirirseniz geçirin, Open sorgu için son bir SQL dizesi oluşturur (dizede geçirdiğiniz dizeye lpszSQL SQL WHERE ve ORDER BY yan tümceleri eklenmiş olabilir) ve sorguyu yürütür. çağrısından Opensonra çağırarakGetSQL, oluşturduğunuz dizeyi inceleyebilirsiniz. Kayıt kümesinin sql deyimi oluşturma ve kayıtları seçme hakkında daha fazla ayrıntı için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC).

Kayıt kümesi sınıfınızın alan verileri üyeleri, seçilen verilerin sütunlarına bağlıdır. Herhangi bir kayıt döndürülürse, ilk kayıt geçerli kayıt olur.

Kayıt kümesi için filtre veya sıralama gibi seçenekleri ayarlamak istiyorsanız, kayıt kümesi nesnesini oluşturarak ancak çağırmadan Openönce bunları belirtin. Kayıt kümesi zaten açık olduktan sonra kayıt kümesindeki kayıtları yenilemek istiyorsanız çağrısında bulunur Requery.

Daha fazla örnek de dahil olmak üzere daha fazla bilgi için bkz . Kayıt Kümesi (ODBC), Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC) ve Kayıt Kümesi: Kayıt Kümeleri Oluşturma ve Kapatma (ODBC).

Örnek

Aşağıdaki kod örnekleri çağrının Open farklı biçimlerini gösterir.

// rsSnap, rsLName, and rsDefault are CRecordset or CRecordset-derived 
// objects

// Open rs using the default SQL statement, implement bookmarks, and turn 
// off automatic dirty field checking
rsSnap.Open(CRecordset::snapshot, NULL, CRecordset::useBookmarks |
   CRecordset::noDirtyFieldCheck);

// Pass a complete SELECT statement and open as a dynaset
rsLName.Open(CRecordset::dynaset, _T("Select L_Name from Customer"));

// Accept all defaults
rsDefault.Open();

CRecordset::RefreshRowset

Geçerli satır kümesindeki bir satırın verilerini ve durumunu güncelleştirir.

void RefreshRowset(
    WORD wRow,
    WORD wLockType = SQL_LOCK_NO_CHANGE);

Parametreler

wRow
Geçerli satır kümesindeki bir satırın tek tabanlı konumu. Bu değer sıfırdan satır kümesinin boyutuna kadar değişebilir.

wLockType
Satırın yenilendikten sonra nasıl kilitlendiğini gösteren değer. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

için wRowsıfır değerini geçirirseniz satır kümesindeki her satır yenilenir.

kullanmak RefreshRowsetiçin üye işlevinde Open seçeneğini belirterek CRecordset::useMulitRowFetch toplu satır getirme işlemini uygulamış olmanız gerekir.

RefreshRowset ODBC API işlevini SQLSetPosçağırır. wLockType parametresi, yürütüldükten sonra SQLSetPos satırın kilit durumunu belirtir. Aşağıdaki tabloda için wLockTypeolası değerler açıklanmaktadır.

wLockType Açıklama
SQL_LOCK_NO_CHANGE (varsayılan değer) Sürücü veya veri kaynağı, satırın çağrılmadan önce RefreshRowset olduğu gibi aynı kilitli veya kilitsiz durumda olmasını sağlar.
SQL_LOCK_EXCLUSIVE Sürücü veya veri kaynağı satırı özel olarak kilitler. Tüm veri kaynakları bu tür bir kilidi desteklemez.
SQL_LOCK_UNLOCK Sürücü veya veri kaynağı satırın kilidini açar. Tüm veri kaynakları bu tür bir kilidi desteklemez.

hakkında SQLSetPosdaha fazla bilgi için bkz. Windows SDK. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

CRecordset::Requery

Kayıt kümesini yeniden oluşturur (yeniler).

virtual BOOL Requery();

Dönüş değeri

Kayıt kümesi başarıyla yeniden oluşturulduysa sıfır olmayan; aksi takdirde 0.

Açıklamalar

Herhangi bir kayıt döndürülürse, ilk kayıt geçerli kayıt olur.

Kayıt kümesinin sizin veya diğer kullanıcıların veri kaynağına yaptığı eklemeleri ve silmeleri yansıtması için, çağırarak Requerykayıt kümesini yeniden oluşturmanız gerekir. Kayıt kümesi bir dinamik kümeyse, sizin veya diğer kullanıcıların mevcut kayıtlarında (eklemeleri değil) yaptığı güncelleştirmeleri otomatik olarak yansıtır. Kayıt kümesi bir anlık görüntüyse, diğer kullanıcılar tarafından yapılan düzenlemeleri, eklemeleri ve silmeleri yansıtmak için aramanız Requery gerekir.

Dinamik küme veya anlık görüntü için, kayıt kümesini yeni bir filtre veya sıralama ya da yeni parametre değerleri kullanarak yeniden oluşturmak istediğiniz zaman çağırın Requery . öğesine ve çağrısından Requeryönce yeni değerler m_strFilter atayarak yeni filtre veya m_strSort sıralama özelliğini ayarlayın. çağrısı Requeryöncesinde parametre veri üyelerine yeni değerler atayarak yeni parametreler ayarlayın. Filtre ve sıralama dizeleri değişmezse, sorguyu yeniden kullanabilir ve bu da performansı artırır.

Kayıt kümesini yeniden oluşturma girişimi başarısız olursa, kayıt kümesi kapatılır. çağrısından Requeryönce, üye işlevini çağırarak kayıt kümesinin yeniden sorgulanıp sorgulanamadığını CanRestart belirleyebilirsiniz. CanRestart bunun başarılı olacağını garanti Requery etmez.

Dikkat

Yalnızca Requery çağrısı yaptıktan sonra arayın Open.

Örnek

Bu örnek, farklı bir sıralama düzeni uygulamak için kayıt kümesini yeniden oluşturur.

CCustomer rsCustSet(&m_dbCust);

// Open the recordset
rsCustSet.Open();

// Use the recordset ...

// Set the sort order and Requery the recordset
rsCustSet.m_strSort = _T("L_Name, ContactFirstName");
if (!rsCustSet.CanRestart())
return;    // Unable to requery

if (!rsCustSet.Requery())
// Requery failed, so take action
AfxMessageBox(_T("Requery failed!"));

CRecordset::SetAbsolutePosition

Kayıt kümesini belirtilen kayıt numarasına karşılık gelen kayıtta konumlandırın.

void SetAbsolutePosition(long nRows);

Parametreler

nRows
Kayıt kümesindeki geçerli kaydın tek tabanlı sıralı konumu.

Açıklamalar

SetAbsolutePosition geçerli kayıt işaretçisini bu sıralı konuma göre taşır.

Not

Bu üye işlevi yalnızca ileriye doğru kayıt kümelerinde geçerli değildir.

ODBC kayıt kümeleri için mutlak konum ayarı 1, kayıt kümesindeki ilk kayda başvurur; 0 ayarı, dosya başlangıcı (BOF) konumuna başvurur.

Negatif değerleri öğesine SetAbsolutePositionde geçirebilirsiniz. Bu durumda, kayıt kümesinin konumu kayıt kümesinin sonundan değerlendirilir. Örneğin, SetAbsolutePosition( -1 ) geçerli kayıt işaretçisini kayıt kümesindeki son kayda taşır.

Not

Mutlak konum, vekil kayıt numarası olarak kullanılmak üzere tasarlanmamıştır. Önceki kayıtlar silindiğinde kaydın konumu değiştiğinden yer işaretleri yine de belirli bir konuma geri dönmenin önerilen yoludur. Ayrıca, bir yan tümcesi kullanılarak ORDER BY sql deyimiyle oluşturulmadığı sürece kayıt kümesi içindeki tek tek kayıtların sırası garanti edilmediğinden, kayıt kümesi yeniden oluşturulursa belirli bir kaydın aynı mutlak konuma sahip olacağından emin olamazsınız.

Kayıt kümesi gezintisi ve yer işaretleri hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın.

CRecordset::SetBookmark

Kayıt kümesini belirtilen yer işaretini içeren kayda konumlandırıyor.

void SetBookmark(const CDBVariant& varBookmark);

Parametreler

varBookmark
Belirli bir CDBVariant kaydın yer işareti değerini içeren bir nesneye başvuru.

Açıklamalar

Yer işaretlerinin kayıt kümesinde desteklenip desteklenmediğini belirlemek için çağrısı yapın CanBookmark. Destekleniyorsa yer işaretlerinin kullanılabilir olmasını sağlamak için üye işlevinin dwOptions Open parametresinde seçeneğini ayarlamanız CRecordset::useBookmarks gerekir.

Not

Yer işaretleri desteklenmiyorsa veya kullanılamıyorsa, çağrıda SetBookmark özel durum oluşturulur. Yer işaretleri yalnızca ileriye doğru kayıt kümelerinde desteklenmez.

Önce geçerli kaydın yer işaretini almak için çağrısı GetBookmarkyapın ve bu da yer işareti değerini bir CDBVariant nesneye kaydeder. Daha sonra kaydedilen yer işareti değerini kullanarak çağırarak SetBookmark bu kayda dönebilirsiniz.

Not

Belirli kayıt kümesi işlemlerinin ardından, çağrısından SetBookmarkönce yer işareti kalıcılığını denetlemeniz gerekir. Örneğin, ile GetBookmark bir yer işareti alıp çağrısı Requeryyaparsanız, yer işareti artık geçerli olmayabilir. öğesini güvenli bir şekilde çağırıp çağıramayacağınızı denetlemek için arayın CDatabase::GetBookmarkPersistence SetBookmark.

Yer işaretleri ve kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) ve Kayıt Kümesi: Kaydırma (ODBC) makalelerine bakın.

CRecordset::SetFieldDirty

Kayıt kümesinin alan veri üyesini değiştirilmiş veya değişmemiş olarak bayraklar.

void SetFieldDirty(void* pv, BOOL bDirty = TRUE);

Parametreler

pv
veya NULLkayıt kümesindeki bir alan veri üyesinin adresini içerir. ise NULL, kayıt kümesindeki tüm alan verileri üyelerine bayrak eklenir. (C++ NULL , veritabanı terminolojisindeki Null ile aynı değildir ve bu da "değere sahip olmadığı" anlamına gelir.)

bDirty
TRUE alan veri üyesi "kirli" (değiştirildi) olarak işaretlenecekse. Aksi takdirde FALSE , alan veri üyesi "temiz" (değişmeden) olarak işaretlenecekse.

Açıklamalar

Alanları değişmemiş olarak işaretlemek, alanın güncelleştirilmemesini ve daha az SQL trafiğiyle sonuçlanmasını sağlar.

Not

Bu üye işlevi, toplu satır getirme kullanan kayıt kümelerinde geçerli değildir. Toplu satır getirme işlemini uyguladıysanız başarısız SetFieldDirty onay işlemiyle sonuçlanır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Çerçeve, değiştirilen alan veri üyelerini işaretleyerek kayıt alanı değişimi (RFX) mekanizması tarafından veri kaynağındaki kayda yazılmasını sağlar. Bir alanın değerinin değiştirilmesi genellikle alanı otomatik olarak kirli olarak ayarlar, bu nedenle nadiren kendinizi çağırmanız SetFieldDirty gerekir, ancak bazen alan veri üyesindeki değerden bağımsız olarak sütunların açıkça güncelleştirilmesini veya eklenmesini isteyebilirsiniz.

Dikkat

Bu üye işlevini yalnızca veya AddNewöğesini çağırdıktan sonra çağırabilirsinizEdit.

NULL işlevinin ilk bağımsız değişkeni için kullanıldığında işlev alanlara değil param yalnızca alanlara outputColumn uygulanır. Örneğin, arama

SetFieldNull(NULL);

yalnızca outputColumn alanları olarak NULLayarlar; param alanlar etkilenmez.

Alanlar üzerinde param çalışmak için, üzerinde çalışmak istediğiniz kişinin param gerçek adresini sağlamanız gerekir, örneğin:

SetFieldNull(&m_strParam);

Başka bir deyişle, tüm param alanları olarak NULLayarlayamazsınız, alanlar gibi outputColumn .

CRecordset::SetFieldNull

Kayıt kümesinin alan veri üyesini Null (özellikle değer içermeyen) veya Null olmayan olarak bayraklar.

void SetFieldNull(void* pv, BOOL bNull = TRUE);

Parametreler

pv
veya NULLkayıt kümesindeki bir alan veri üyesinin adresini içerir. ise NULL, kayıt kümesindeki tüm alan verileri üyelerine bayrak eklenir. (C++ NULL , veritabanı terminolojisindeki Null ile aynı değildir ve bu da "değere sahip olmadığı" anlamına gelir.)

bNull
Alan veri üyesi hiçbir değere (Null) sahip olarak işaretlenecekse sıfır olmayan. Aksi takdirde, alan veri üyesi Null olmayan olarak işaretlenecekse 0.

Açıklamalar

Kayıt kümesine yeni bir kayıt eklediğinizde, tüm alan veri üyeleri başlangıçta Null değerine ayarlanır ve "kirli" (değiştirildi) olarak işaretlenir. Bir veri kaynağından kayıt aldığınızda, sütunlarının değerleri zaten vardır veya Null'tır.

Not

Toplu satır getirme kullanan kayıt kümelerinde bu üye işlevini çağırmayın. Toplu satır getirme işlemi uyguladıysanız çağrılması SetFieldNull başarısız bir onay işlemiyle sonuçlanır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Geçerli kaydın bir alanını özellikle değere sahip değil olarak belirlemek istiyorsanız, null olarak işaretlemek için TRUE set ile bNull çağrısı SetFieldNull yapın. Bir alan daha önce Null olarak işaretlendiyse ve şimdi ona bir değer vermek istiyorsanız, yeni değerini ayarlayın. ile SetFieldNullNull bayrağını kaldırmanız gerekmez. Alanın Null olmasına izin verilip verilmeyeceğini belirlemek için öğesini çağırın IsFieldNullable.

Dikkat

Bu üye işlevini yalnızca veya AddNewöğesini çağırdıktan sonra çağırabilirsinizEdit.

NULL işlevinin ilk bağımsız değişkeni için kullanıldığında işlev alanlara değil param yalnızca alanlara outputColumn uygulanır. Örneğin, arama

SetFieldNull(NULL);

yalnızca outputColumn alanları olarak NULLayarlar; param alanlar etkilenmez.

Alanlar üzerinde param çalışmak için, üzerinde çalışmak istediğiniz kişinin param gerçek adresini sağlamanız gerekir, örneğin:

SetFieldNull(&m_strParam);

Başka bir deyişle, tüm param alanları olarak NULLayarlayamazsınız, alanlar gibi outputColumn .

Not

Parametreleri Null olarak ayarlarken, kayıt kümesi açılmadan önce çağrısı SetFieldNull bir onay ile sonuçlanır. Bu durumda çağrısında bulunur SetParamNull.

SetFieldNull aracılığıyla DoFieldExchangeuygulanır.

CRecordset::SetLockingMode

Kilitleme modunu "iyimser" kilitleme (varsayılan) veya "kötümser" kilitleme olarak ayarlar. Kayıtların güncelleştirmelere karşı nasıl kilitlendiğini belirler.

void SetLockingMode(UINT nMode);

Parametreler

nMode
aşağıdaki değerlerden enum LockModebirini içerir:

  • optimistic İyimser kilitleme yalnızca çağrısı Updatesırasında güncelleştirilen kaydı kilitler.

  • pessimistic Kötümser kilitleme, çağrılır çağrılmaz Edit kaydı kilitler ve arama tamamlanana Update veya yeni bir kayda taşınana kadar kaydı kilitli tutar.

Açıklamalar

Kayıt kümesinin güncelleştirmeler için hangi kayıt kilitleme stratejilerini kullandığını belirtmeniz gerekiyorsa bu üye işlevini çağırın. Varsayılan olarak, kayıt kümesinin kilitleme modu şeklindedir optimistic. Bunu daha dikkatli pessimistic bir kilitleme stratejisiyle değiştirebilirsiniz. SetLockingMode Kayıt kümesi nesnesini oluşturduğunuzda ve açtıktan sonra ancak çağırmadan önce çağrısı Edityapın.

CRecordset::SetParamNull

Bir parametreyi Null (özellikle değer içermeyen) veya Null olmayan olarak bayraklar.

void SetParamNull(
    int nIndex,
    BOOL bNull = TRUE);

Parametreler

nIndex
Parametresinin sıfır tabanlı dizini.

bNull
If TRUE (varsayılan değer), parametresi Null olarak işaretlenir. Aksi takdirde parametresi Null olmayan olarak işaretlenir.

Açıklamalar

'den farklı olarak SetFieldNull, kayıt kümesini açmadan önce çağırabilirsiniz SetParamNull .

SetParamNull genellikle önceden tanımlanmış sorgularla (saklı yordamlar) kullanılır.

CRecordset::SetRowsetCursorPosition

İmleci geçerli satır kümesi içindeki bir satıra taşır.

void SetRowsetCursorPosition(WORD wRow, WORD wLockType = SQL_LOCK_NO_CHANGE);

Parametreler

wRow
Geçerli satır kümesindeki bir satırın tek tabanlı konumu. Bu değer 1 ile satır kümesinin boyutu arasında değişebilir.

wLockType
Satır yenilendikten sonra nasıl kilitlendiğini gösteren değer. Ayrıntılar için bkz. Açıklamalar.

Açıklamalar

Toplu satır getirme uygulanırken kayıtlar satır kümeleri tarafından alınır ve burada getirilen satır kümesindeki ilk kayıt geçerli kayıttır. Satır kümesinde geçerli kayıt içinde başka bir kayıt yapmak için çağrısı yapın SetRowsetCursorPosition. Örneğin, kayıt kümenizin herhangi bir kaydındaki verileri dinamik olarak almak için üye işleviyle GetFieldValue birleştirebilirsinizSetRowsetCursorPosition.

kullanmak SetRowsetCursorPositioniçin, üye işlevinde parametresinin Open seçeneğini dwOptions belirterek CRecordset::useMultiRowFetch toplu satır getirme işlemini uygulamış olmanız gerekir.

SetRowsetCursorPosition ODBC API işlevini SQLSetPosçağırır. wLockType parametresi, yürütüldükten sonra SQLSetPos satırın kilit durumunu belirtir. Aşağıdaki tabloda için wLockTypeolası değerler açıklanmaktadır.

wLockType Açıklama
SQL_LOCK_NO_CHANGE (varsayılan değer) Sürücü veya veri kaynağı, satırın çağrılmadan önce SetRowsetCursorPosition olduğu gibi aynı kilitli veya kilitsiz durumda olmasını sağlar.
SQL_LOCK_EXCLUSIVE Sürücü veya veri kaynağı satırı özel olarak kilitler. Tüm veri kaynakları bu tür bir kilidi desteklemez.
SQL_LOCK_UNLOCK Sürücü veya veri kaynağı satırın kilidini açar. Tüm veri kaynakları bu tür bir kilidi desteklemez.

hakkında SQLSetPosdaha fazla bilgi için bkz. Windows SDK. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

CRecordset::SetRowsetSize

Getirme sırasında almak istediğiniz kayıt sayısını belirtir.

virtual void SetRowsetSize(DWORD dwNewRowsetSize);

Parametreler

dwNewRowsetSize
Belirli bir getirme sırasında alınacak satır sayısı.

Açıklamalar

Bu sanal üye işlevi, toplu satır getirme kullanılırken tek bir getirme sırasında kaç satır almak istediğinizi belirtir. Toplu satır getirme uygulamak için üye işlevinin CRecordset::useMultiRowFetch dwOptions parametresinde Open seçeneğini ayarlamanız gerekir.

Not

Toplu satır getirme uygulanmadan çağrılması SetRowsetSize başarısız bir onay işlemine neden olur.

Çağırmadan önce çağırarak SetRowsetSize Open başlangıçta kayıt kümesinin satır kümesi boyutunu ayarlayın. Toplu satır getirme uygulanırken varsayılan satır kümesi boyutu 25'tir.

Not

çağrısı SetRowsetSizeyaparken dikkatli olun. Veriler için depolama alanını el ile ayırıyorsanız (içinde dwOptions parametresinin Openseçeneğiyle CRecordset::userAllocMultiRowBuffers belirtildiği gibi), çağrısı SetRowsetSizeyaptıktan sonra ancak herhangi bir imleç gezintisi işlemi gerçekleştirmeden önce bu depolama arabelleklerini yeniden ayırmanız gerekip gerekmediğini denetlemeniz gerekir.

Satır kümesi boyutu için geçerli ayarı almak için öğesini çağırın GetRowsetSize.

Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

CRecordset::Update

Yeni veya Edit düzenlenmiş verileri veri kaynağına kaydederek veya AddNew işlemini tamamlar.

virtual BOOL Update();

Dönüş değeri

Bir kayıt başarıyla güncelleştirildiyse sıfır olmayan; aksi takdirde hiçbir sütun değişmediyse 0 olur. Hiçbir kayıt güncelleştirilmemişse veya birden fazla kayıt güncelleştirildiyse bir özel durum oluşturulur. Veri kaynağındaki diğer hatalar için de bir özel durum oluşturulur.

Açıklamalar

veya Edit üye işlevine yapılan çağrıdan sonra bu üye işlevini çağırınAddNew. Bu çağrı, veya Edit işlemini tamamlamak AddNew için gereklidir.

Not

Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız Update. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).

Edit Hem hem de AddNew eklenen veya düzenlenen verilerin veri kaynağına kaydedilecek şekilde yerleştirildiği bir düzenleme arabelleği hazırlayın. Update verileri kaydeder. Yalnızca değiştirilmiş olarak işaretlenen veya algılanan alanlar güncelleştirilir.

Veri kaynağı işlemleri destekliyorsa, çağrıyı Update (ve buna karşılık gelen AddNew veya Edit çağrısını) bir işlemin parçası yapabilirsiniz. İşlemler hakkında daha fazla bilgi için bkz . İşlem (ODBC).

Dikkat

veya çağrısı yapmadan ararsanız Update AddNew Edit, Update bir CDBExceptionoluşturur. veya çağırırsanızAddNew, bir Move işlemi çağırmadan önce veya kayıt kümesini veya veri kaynağı bağlantısını kapatmadan önce çağırmalısınızUpdate.Edit Aksi takdirde, değişiklikleriniz bildirimde bulunmadan kaybolur.

Hataları işleme Update hakkında ayrıntılı bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Güncelleştirme (ODBC).

Örnek

bkz . İşlem: Kayıt Kümesinde İşlem Gerçekleştirme (ODBC).

Ayrıca bkz.

CObject sınıfı
Hiyerarşi grafiği
CDatabase sınıfı
CRecordView sınıfı