Varsayılan değer, afx_db_use_default_type, kabul ya da enumOpenType aşağıdaki değerlerden birini kullanın :
CRecordset::dy&nasetnbsp; Bir recordset ile çift yönlü kaydırma. Üyelik ve sipariş kayıtları recordset açıldığında, ancak veri değerleri için diğer kullanıcılar tarafından yapılan değişiklikler aşağıdaki getirme işlemi görülebilir belirlenir. Kümelere olarak da bilinen anahtar kümesi kullanımlı kayıt kümeleri vardır.
CRecordset::s&napshotnbsp; Çift yönlü kaydırma ile statik kayıt kümesi. Recordset açıldığında, üyelik ve sipariş kayıtlarını belirlenir; kayıtları getirilen zaman veri değerleri belirlenir. Recordset kapalı ve daha sonra yeniden kadar diğer kullanıcılar tarafından yapılan değişiklikleri görünür değildir.
CRecordset::dynamicnbsp; Bir recordset ile çift yönlü kaydırma. Üyelik, sıralama ve veri değerleri için diğer kullanıcılar tarafından yapılan değişiklikler aşağıdaki getirme işlemi görülebilir. &Not odbc sürücülerinin çoğu bu tür bir recordset desteklemiyor.
CRecordset::forwardO&nlynbsp; Sadece ileri kaydırma ile salt okunur bir recordset.
CRecordsetiçin CRecordset::snapshotvarsayılan değerdir. Varsayılan değer mekanizması hem odbc CRecordset ve dao CDaoRecordset, farklı varsayılan ayarlar olan etkileşim için Visual c++ sihirbazları sağlar.
Bu recordset türleri hakkında daha fazla bilgi için bkz: yazı Recordset ((ODBC))Visual c++ programlama Kılavuzu. İlgili bilgiler için bkz: makale "Kullanarak blok ve kaydırılabilir göstericiler" odbc sdk Programcı Başvurusu.
Dikkat İstenen türü desteklenmiyor, çerçeve bir istisna atar.
lpszSQL
Aşağıdakilerden birini içeren bir dize işaretçisi:
Bir null işaretçi.
Bir tablo adı.
Bir seçmek sql deyimiyle (isteğe bağlı olarak bir sql where veya order by yan tümcesi).
Önceden tanımlanmış bir sorgu (saklı yordam) adını belirten call deyimi. Kaşlı ayraç ve Arama anahtar kelime arasında boşluk koymayın dikkatli olun.
Bu dize hakkında daha fazla bilgi için bkz: Tablo ve ClassWizard'ın rolü altında açıklamalar tartışma.
&Notnbsp; Sonuç kümesi sütun rfx sırasının eşleşmesi gerekir ya da toplu rfx işlev çağrıları, DoFieldExchange veya DoBulkFieldExchange işlevi geçersiz kılma.
dwOptions
Aşağıda listelenen değerleri birleşimi belirleyebilirsiniz bir bit maskesi. Bunlardan bazıları birbirini dışlar. Varsayılan değer Yok'tur..
CRecordset::nonenbsp; Seçenekleri ayarlayın. Diğer tüm değerler ile dışlayan Bu parametre değeridir. Varsayılan olarak, recordset düzenlemek ya da silmek ile güncelleştirilebilir ve Add&Newile yeni kayıt ekleme izin verir. Güncelleştirilebilme belirttiğiniz nOpenType seçeneği yanı sıra veri kaynağına bağlıdır. Optimizasyon toplu eklemeler için kullanılamaz. Satır toplu alma uygulanacaktır değil. Silinen kayıtlar recordset gezinti sırasında atlanır değil. Yer işaretleri kullanılabilir değil. Otomatik kirli alan denetimi gerçekleştirilir.
CRecordset::appendOnlynbsp;Düzenlemek veya silmek kayıt kümesinde izin vermez. Add&New yalnızca izin verin. Bu seçenek ile CRecordset::readOnly birbirini dışlayan.
CRecordset::readO&nlynbsp; Kayıt kümesi salt okunur olarak açar. Bu seçenek ile CRecordset::appendOnly birbirini dışlayan.
CRecordset::optimizeBulkAdd Aynı anda birçok kayıt ekleyerek optimize etmek için hazırlanmış bir sql deyimi kullanın. Sadece size SQLSetPos odbc API işlevi kayıt kümesini güncelleştirmeye kullanıyorsanız geçerlidir. İlk güncelleştirmek hangi alanların kirli olarak işaretlenmiş belirler. Bu seçenek ile CRecordset::useMultiRowFetch birbirini dışlayan.
CRecordset::useMultiRowFetchnbsp; Bir tek getirme işleminde alınabilmesi birden fazla satır sağlamak için satır toplu alma uygulamak. Bu, performansı artırmak için tasarlanmış gelişmiş bir özelliktir; Ancak, toplu kayıt alan değiş ClassWizard tarafından desteklenmiyor. Bu, CRecordset::optimizeBulkAddile dışlayan bir seçenektir. CRecordset::useMultiRowFetchbelirtirseniz, sonra CRecordset::noDirtyFieldCheck seçeneği otomatik olarak açılır, &Not (çift tamponlama kullanılabilir olmayacak); salt ileri kayıt kümeleri üzerinde CRecordset::useExtendedFetch seçeneği otomatik olarak açılır. Satır toplu alma hakkında daha fazla bilgi için bkz: yazı Recordset: getiriliyor kayıtları toplu (odbc)Visual c++ Programcı Kılavuzu.
CRecordset::skipDeletedRecords Tüm silinmiş kayıtları recordset ile gezinirken atlayın. Bu belirli göreli fetches performansı düşürür. Bu seçenek yalnızca ileri kayıt kümeleri üzerinde geçerli değil. CRecordset::skipDeletedRecordsAmbalaj sürücüsilinmiş satırlar recordset'ten kaldırılır anlamına gelir, benzer olduğunu unutmayın. Kayıtları sürücü paketleri, ancak sonra bu yalnızca silmek kayıtları atlar; diğer kullanıcıların recordset açıkken silinen kayıtlar atlayın değil. CRecordset::skipDeletedRecords diğer kullanıcılar tarafından silinmiş satırları atlar.
CRecordset::useBookmarks Yer imleri kayıt kümesinde destekliyorsa kullanabilirsiniz. Yer imleri veri alma yavaş ama veri gezinti performansını artırmak. Salt ileri kayıt kümeleri üzerinde geçerli değil. Daha fazla bilgi için bkz: yazı Recordset: yer imleri ve mutlak pozisyonları (odbc)Visual c++ Programcı Kılavuzu.
CRecordset::noDirtyFieldChecknbsp; Otomatik kirli alan (çift tamponlama) denetimi devre dışı bırakın. Bu performansını artırır; Ancak, SetFieldDirty ve SetField&Null üye işlevlerini çağırarak alanları olarak kirli elle işaretlemelisiniz.Bu sınıf CRecordset sınıf CDaoRecordsetçift tamponlama için benzer çift tamponlama unutmayın. Ancak, CRecordset, bireysel alanlar çift arabelleğe almayı etkinleştirmek olamaz; tüm alanları için etkinleştirmek veya tüm alanları için devre dışı. Çift arabelleğe alma hakkında daha fazla bilgi için bkz: dao makaleyi dao kaydın alan Exchange: çift arabelleğe kayıtVisual c++ Programcı Kılavuzu. CRecordset::useMultiRowFetchseçeneğini belirtirseniz, sonra CRecordset::noDirtyFieldCheck otomatik olarak açılır olduğunu unutmayın; SetFieldDirty ve SetFieldNull toplu satır getiriliyor uygulayan kayıt kümeleri üzerinde ancak kullanılamaz.
CRecordset::executeDirect Hazırlanmış bir sql deyimini kullanmayın. Requery üye işlevi asla çağrılacak, geliştirilmiş performans için bu seçeneği belirtin.
CRecordset::useExte&ndedFetchnbsp;SQLFetchyerine SQLExtendedFetch uygular. Bu yalnızca ileri kayıt kümeleri satır toplu alma uygulamak için tasarlanmıştır. Salt ileri bir kayıt kümesinde CRecordset::useMultiRowFetch seçeneğini belirtirseniz, sonra CRecordset::useExtendedFetch otomatik olarak açılır.
CRecordset::userAllocMultiRowBuffersnbsp; Kullanıcı verilerini depolama arabellekleri ayrılamadı. Kendi bellek ayırmak istiyorsanız bu seçenek CRecordset::useMultiRowFetch birlikte kullanmak; Aksi takdirde, çerçeve otomatik olarak gerekli depolama tahsis. Daha fazla bilgi için bkz: yazı Recordset: getiriliyor kayıtları toplu (odbc)Visual c++ Programcı Kılavuzu. &Not CRecordset::useMultiRowFetch belirtmeden CRecordset::userAllocMultiRowBuffers belirtilmesi başarısız bir iddianın neden olur.
Açıklamalar
Kayıt kümesi tarafından tanımlanan sorguyu çalıştırmak için bu üye işlevi çağırmalıdır. Açıkçağırmadan önce recordset nesnesi oluşturması gerekir.
Bu kayıt kümesinin veri kaynağına bağlanmak için nasıl kayıt kümesi Açıkçağırmadan önce oluşturduğunuza bağlıdır. Recordset kurucusuna veri kaynağına bağlı olmayan bir CDatabase nesnesi aktaryrsanyz, veritabanı nesnesi açmak denemek için GetDefaultConnect bu üye işlevini kullanır. Recordset yapıcısına boş geçmek, kurucu için bir CDatabase nesnesi oluşturur ve Açık veritabanı nesnesi bağlanma girişiminde bulunur. Recordset ve connection bu değişen koşullarda kapatılması ile ilgili ayrıntılar için bkz: Kapat.
&Notnbsp; Bir CRecordset nesnesi üzerinden bir veri kaynağına erişim her zaman paylaşılır. CDaoRecordset sınıfı, bir CRecordset nesnesi bir veri kaynağına özel erişimle açmak için kullanamazsınız.
Açıkaradığınızda, genellikle bir seçmek sql deyimi, sorgu aşağıdaki tabloda gösterilen ölçütlere göre kayıtları seçer.
LpszSQL parametre değeri
Seçilen kayıtları tarafından belirlenir
Örnek
NULL
GetDefaultSQL tarafından döndürülen dize.
Sql tablo adı
Tüm sütunları Tablo listesi DoFieldExchange ya da DoBulkFieldExchange.
"Müşteri"
Önceden tanımlanan sorgu (saklı yordam) adı
Sorgu dönmek için tanımlanan sütunları.
"{OverDueAccts çağrı}"
Seç sütun- from Tablo-listesi
Belirtilen tablo sütunlarından belirtilen.
"CustId, MÜŞTERİDEN CustName SE?"
! Uyarı Dikkat edin, sql dizesi fazladan boşluk koymayın. Örneğin, küme ayracı ve Arama anahtar kelime arasında boşluk eklerseniz, mfc sql dizesi olarak bir tablo adı yanlış anlaşılabilir ve bir istisna içinde sonuçlanacak bir select deyimi içine dahil. Önceden tanımlanmış sorgunuz bir çıktı parametresini kullanır, benzer şekilde, kaşlı ayraç arasında boşluk koymayın ve '?' sembolü. Son olarak, boşluk önce küme ayracı call deyimi ya da önce seçin statment seçin anahtar sözcüğü eklemeniz gerekir değil.
Normal prosedür boşAçıkgeçmektir; Bu durumda, AçıkGetDefaultSQLçağırır. Türetilmiş bir CRecordset sınıf kullanıyorsanız, GetDefualtSQL ClassWizard içinde belirtilen tablo adlarını verir. Bunun yerine diğer bilgileri lpszSQL parametre belirtebilirsiniz.
Ne olursa olsun size geçmek, Açık (dize, geçirilen lpszSQL dizesi eklenir sql where ve order by yan tümceleri olabilir) sorgu için son bir sql dizesi oluşturur ve sonra sorguyu yürütür. Açıkçağrıldıktan sonra GetSQL çağırarak inşa dize inceleyebilirsiniz. Nasıl kayıt kümesi sql deyimi oluşturur ve kayıtları seçer hakkında ek ayrıntılar için bkz makaleyi Recordset: nasıl kayıt kümeleri seçin kayıtları (odbc)Visual c++ Programcı Kılavuzu.
Recordset sınıf alanı veri üyeleri seçili veri sütunlarının bağlanmıştır. Herhangi bir kayıt döndürülürse, ilk kayıt geçerli kayıt olur.
Recordset, bir filtre veya sıralama gibi seçenekleri ayarlamak isterseniz bu recordset nesnesi oluşturmak sonra ancak Açıkaramadan önce belirtin. Requery sonra recordset açıksa, recordset içindeki kayıt yenilemek istiyorsanız, arama.
Aşağıdaki kod örnekleri farklı formlarda Açık çağrı göster.
/ / rs bir CRecordset veya
/ / CRecordset türetilen nesne
/ / Varsayılan sql deyimini kullanarak açık rs
/ / yer imleri uygular ve kapatmak
/ / Otomatik kirli alan denetleme
RS.Açık (CRecordset::snapshot, null,
nbsp; CRecordset::useBookmarks |
CRecordset::noDirtyFieldCheck);
/ / Tam bir select deyimi pass
/ / ve dinamik olarak aç
RS.Açık (CRecordset::dynaset,
_t ("select L_&Name müşteriden"));
/ / Tüm Varsayılanları kabul edin
RS.Açık)