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 CRecordset
uygulamaya ö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
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 SQLSetPos
kullanarak 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ı AddNew
yaptı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ı Update
yaptığı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 CanAppend
kayı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 SQLSetConnectOption
doğ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 , AddNew
veya 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 Open
Requery
çağrılır. ODBC API işlevinin SQLExtendedFetch
dö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 SQLError ek 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 SQLError ek 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 SQLError ilgili 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 CheckRowsetError geçirmez; MFC, artık döndürene SQL_STILL_EXECUTING kadar çağrısına SQLExtendedFetch devam edecektir. |
hakkında SQLError
daha 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 Close
sonra genellikle ile new
ayrı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 NULL
iç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 CRecordset
uygulamaya ö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 SQLSetPos
kullanarak 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 Delete
kayı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_dbCust
varsayı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 CRecordset
türetilmiş bir sınıf kullanıyorsanız kullanılabilir. Doğrudan öğesinden CRecordset
bir 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
, Delete
veya 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 SQLSetPos
kullanarak 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 CRecordset
türetilmiş bir sınıf kullanıyorsanız kullanılabilir. Doğrudan öğesinden CRecordset
bir 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 DoFieldExchange
daha 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ı Edit
yaptı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 SQLSetPos
kullanarak 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ı Edit
yaparsanı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 SetLockingMode
kilitleme 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ı FlushResultSet
yaparak sonraki sonuç kümesini aldığınızda, imleciniz bu sonuç kümesinde geçerli değildir; çağrısı FlushResultSet
yaptı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 FALSE
kadar çağırmalısınız FlushResultSet
(0 değeri).
FlushResultSet
ODBC API işlevini SQLMoreResults
çağırır. veya FlushResultSet
SQL_INVALID_HANDLE
döndürürse SQLMoreResults
SQL_ERROR
, bir özel durum oluşturur. hakkında SQLMoreResults
daha fazla bilgi için bkz. Windows SDK.
çağırmak FlushResultSet
istiyorsanı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 CRecordset
sorguyu 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 SetBookmark
kayda 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 ClassWizard
bu 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ı ClassWizard
bildirerek 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ı GetSQL
yapı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 GetDefaultSQL
düzenleyebilirsiniz. Örneğin, deyimini kullanarak CALL
önceden tanımlanmış bir sorguya çağrı belirtebilirsiniz. (Bununla birlikte, öğesini düzenlerseniz GetDefaultSQL
veri 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_TYPE
aş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_CHAR
depolayabilirsiniz.
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 CRecordset
bir 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 CRecordset
tü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 SQLGetData
daha fazla bilgi için bkz. Windows SDK.
Örnek
Aşağıdaki örnek kod, doğrudan öğesinden CRecordset
bildirilen 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 CDaoRecordset
CRecordset
farklı olarak bir SetFieldValue
üye işlevi yoktur. Doğrudan öğesinden CRecordset
bir 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 MoveLast
sayı 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 wRow karşı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çerirAFX_CURRENT_RECORD_UNDEFINED
. TRUE iseIsBOF
(boş kayıt kümesi veya ilk kayıt öncesinde kaydırmayı dene), (m_lCurrentRecord
-1) olarak ayarlanırAFX_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 kadarIsEOF
çağrılarakMoveNext
gerçekleştirilmelidir. Bu üye sıfırsa, -1 değilse tarafındanGetRecordCount
dö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 ClassWizard
m_strSort
veri üyelerinde m_strFilter
belirtmiş olabileceğiniz ve belirtmiş olabileceğiniz parametrelere göre Open
tam 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 Open
hemen 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 MovePrev
IsBOF
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ı MovePrev
yaparsanı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 Open
hemen 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ı MoveNext
IsEOF
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ı MoveNext
yaparsanı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 IsBOF
bakı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 Edit
değ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 DoFieldExchange
uygulanı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 DoFieldExchange
uygulanı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ı Update
yaptığınızda değil çağırdığınızda SetFieldNull
oluş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 NULL
ayarlar; 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 NULL
ayarlayamazsınız, alanlar gibi outputColumn
.
IsFieldNullable
DoFieldExchange 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 HSTMT
ODBC deyimi veri yapısının tanıtıcısını içerir.
Açıklamalar
ODBC veri kaynağına yapılan her sorgu ile HSTMT
iliş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::outputParam
CFieldExchange::param
veya CFieldExchange::inoutParam
parametre değeriyle CFieldExchange::inputParam
kaydedilen 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_pDatabase
işaretçiyi doğrudan kullanmanız gerekmez. Ancak kendi uzantılarınızı CRecordset
yazarsanız işaretçiyi kullanmanız gerekebilir. Örneğin, kendi CDBException
iş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 nRows
Move
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 skipDeletedRecords
bakın.
Move
kayıt kümesini satır kümelerine göre yeniden konumlandırır. ve wFetchType
Move
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 wFetchType
tüm eşdeğer üye işlevleri için wFetchType
olası 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 nRows satı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 wFetchType
geç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 CDBException
oluş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 IsBOF
bakı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 IsBOF
bakı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 IsBOF
bakı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 IsBOF
bakı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_TYPE
kabul edin veya aşağıdaki değerlerden enum OpenType
birini 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
CRecordset
varsayılan değer şeklindedirCRecordset::snapshot
. Varsayılan değer mekanizması, Visual C++ sihirbazlarının hem ODBCCRecordset
hem de DAOCDaoRecordset
ile 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 SQLWHERE
veyaORDER BY
yan tümcesi ile).CALL
Önceden tanımlanmış sorgunun adını belirten bir deyim (saklı yordam). Küme ayracı ileCALL
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 veyaDelete
ileEdit
güncelleştirilebilir ve ileAddNew
yeni kayıtların eklenmesine izin verir. Güncelleştirilebilirlik, veri kaynağına ve belirttiğiniz seçeneğenOpenType
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 veyaEdit
Delete
izin verme. Yalnızca izin verAddNew
. Bu seçenek ileCRecordset::readOnly
birbirini dışlar.CRecordset::readOnly
Kayıt kümesini salt okunur olarak açın. Bu seçenek ileCRecordset::appendOnly
birbirini 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şleviniSQLSetPos
kullanmıyorsanız geçerlidir. İlk güncelleştirme, hangi alanların kirli olarak işaretleneceğini belirler. Bu seçenek ileCRecordset::useMultiRowFetch
birbirini 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ındanClassWizard
desteklenmez. Bu seçenek ileCRecordset::optimizeBulkAdd
birbirini dışlar. belirtirsenizCRecordset::useMultiRowFetch
, seçenekCRecordset::noDirtyFieldCheck
otomatik olarak açılır (çift arabelleğe alma kullanılamaz); yalnızca ileri kayıt kümelerinde seçenekCRecordset::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 veCRecordset::skipDeletedRecords
seçenek kümesiyle çağırırsanızMove
onaylanırMove
.CRecordset::skipDeletedRecords
sü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 veSetFieldNull
üye işlevlerini çağırarakSetFieldDirty
alanları el ile kirli olarak işaretlemeniz gerekir. sınıfında çift arabelleğe alma, sınıfındaCRecordset
CDaoRecordset
çift arabelleğe alma işlemine benzer. Ancak içinde,CRecordset
tek 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ğiniCRecordset::useMultiRowFetch
CRecordset::noDirtyFieldCheck
belirtirseniz, otomatik olarak açılır; ancakSetFieldDirty
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ılmayacaksaRequery
bu seçeneği belirtin.CRecordset::useExtendedFetch
yerineSQLFetch
uygulayınSQLExtendedFetch
. Bu, yalnızca ileriye doğru kayıt kümelerinde toplu satır getirme uygulamak için tasarlanmıştır. SeçeneğiCRecordset::useMultiRowFetch
yalnızca ileriye doğru kayıt kümesinde belirtirseniz otomatikCRecordset::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ğiCRecordset::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ç belirtmedenCRecordset::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 GetDefaultSQL döndürülen dize. |
|
SQL tablo adı | veya DoBulkFieldExchange iç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 ClassWizard
belirttiğ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 Open
sonra ç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 wRow
sıfır değerini geçirirseniz satır kümesindeki her satır yenilenir.
kullanmak RefreshRowset
iç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 wLockType
olası 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 SQLSetPos
daha 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 Requery
kayı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 SetAbsolutePosition
de 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ı GetBookmark
yapı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ı Requery
yaparsanı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 NULL
kayı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.
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 NULL
ayarlar; 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 NULL
ayarlayamazsı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 NULL
kayı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 SetFieldNull
Null bayrağını kaldırmanız gerekmez. Alanın Null olmasına izin verilip verilmeyeceğini belirlemek için öğesini çağırın IsFieldNullable
.
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 NULL
ayarlar; 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 NULL
ayarlayamazsı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 DoFieldExchange
uygulanı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 LockMode
birini içerir:
optimistic
İyimser kilitleme yalnızca çağrısıUpdate
sırasında güncelleştirilen kaydı kilitler.pessimistic
Kötümser kilitleme, çağrılır çağrılmazEdit
kaydı kilitler ve arama tamamlananaUpdate
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ı Edit
yapı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 SetRowsetCursorPosition
iç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 wLockType
olası 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 SQLSetPos
daha 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ı SetRowsetSize
yaparken dikkatli olun. Veriler için depolama alanını el ile ayırıyorsanız (içinde dwOptions parametresinin Open
seçeneğiyle CRecordset::userAllocMultiRowBuffers
belirtildiği gibi), çağrısı SetRowsetSize
yaptı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 SQLSetPos
kullanarak 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 CDBException
oluş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ı