CDaoRecordset::Open

virtual void Aç (int nOpenType afx_dao_use_default_type, lpctstr = lpszSQL = null, int nOptions= 0 );
throw (CDaoException, CMemoryException);

virtual void Aç (CDaoTableDef *pTableDef,int nOpenType = dbOpenTable, int nOptions= 0 );
throw (CDaoException, CMemoryException);

virtual void Aç (CDaoQueryDef *pQueryDef,int nOpenType = dbOpenDynaset, int nOptions= 0 );
throw (CDaoException, CMemoryException);

Parametreleri

nOpenType

Aşağıdaki değerlerden birini:

lpszSQL

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

nOptions

Aşağıdakilerden birini veya birkaçını aşağıda listelenen seçenekler. Varsayılan değer 0'dır. Olası değerler aşağıdaki gibidir:

pTableDef

 Bir CDaoTableDef nesnesi için bir işaretçi. Yalnızca tablo türü Recordset'ler için geçerli değildir. Bu seçeneği kullanırken, CDaoRecordset oluşturmak için kullanılan CDaoDatabase işaretçi kullanılır; aksine, tabledef bulunduğu veritabanı kullanılır.

pQueryDef

Bir CDaoQueryDef nesnesi için bir işaretçi. Bu sürüm, yalnızca türündeki ve anlık görüntü türünde kayıt kümesi için geçerlidir. Bu seçeneği kullanırken, CDaoRecordset oluşturmak için kullanılan CDaoDatabase işaretçi kullanılır; aksine, querydef bulunduğu veritabanı kullanılır.

Açıklamalar

Recordset kayıtlarını almak için bu üye işlevi çağırmalıdır. Açıkçağırmadan önce recordset nesnesi oluşturmanız gerekir. Bunu yapmanın çeşitli yolları vardır:

Sürümü lpszSQL parametresi&ni kullanan açmak için recordset açıldıktan sonra kayıtları birkaç yoldan birini alabilirsiniz. İlk seçenek, içinde senin DoFieldExchangedfx işlevleri sağlamaktır. İkinci seçenek, dinamik bağlama GetFieldValue üye işlevini çağırarak kullanmaktır. Bu seçenekleri ayrı ayrı veya birlikte uygulanabilir. Onlar birleştirilir, sql deyiminde kendinizi Açıkçağrı geçmek olacaktır. Dinamik bağlama hakkında daha fazla bilgi için bkz: yazı dao kayıt kümesi: kayıtlarını dinamik olarak bağlama içinde Visual c++ programlama Kılavuzu.nbsp;

Burada CDaoTableDef bir nesneyi geçmek Açık ikinci sürümünü kullandığınızda, sonuç sütunları DoFieldExchange ve dfx mekanizması bağlamak ve/veya dinamik olarak GetFieldValue bağlamak için olacak.

&Notnbsp;  Yalnızca tablo türü Recordset'ler için bir CDaoTableDef nesnesi kullanarak Açık arayabilirsiniz.

CDaoQueryDef nesnesinde, sorgu yürütülür ve sonuç sütunları bağlama yoluyla DoFieldExchange ve dfx mekanizması için kullanılabilir, ve/veya GetFieldValue dinamik olarak bağlama geçmek nerede Açık üçüncü sürümünü kullandığınızda.

&Notnbsp;  Sadece bir CDaoQueryDef nesne türündeki ve anlık görüntü türünde kayıt kümesi kullanarak Açık arayabilirsiniz.

LpszSQL parametresini kullanan Açık ilk sürümü için aşağıdaki tabloda gösterilen ölçütlere göre kayıtlar seçilir.

LpszSQL parametre değeri Seçilen kayıtları tarafından belirlenir Örnek
NULL GetDefaultSQL tarafından döndürülen dize.
Bir veya daha fazla TableDef veya querydef adlarını virgülle ayrılmış listesi. DoFieldExchange temsil edilen tüm sütunlar.
"Müşteri"
Seç sütun- from Tablo-listesi Belirtilen sütun belirtilen tabledef(s) ve/veya querydef(s).
"CustId, CustName seçin
Müşteriden"

Normal prosedür boş Açıkgeçmektir; Bu durumda, Açık GetDefaultSQL, ClassWizard CDaoRecordsetoluştururken üreten bir geçersiz üye işlev çağrıları-türetilmiş sınıf. Bu değer, ClassWizard içinde belirtilen tabledef(s) ve/veya querydef adlarını verir. Bunun yerine diğer bilgileri lpszSQL parametre belirtebilirsiniz.

Ne olursa olsun size geçmek, Açık son bir sql dizesi (string sql where ve orderby yan tümceleri, geçirilen lpszSQL dizesi eklenmiş olabilir) sorgu oluşturur ve sonra sorguyu yürütür. Açık çağrıldıktan sonra GetSQL çağırarak inşa dize inceleyebilirsiniz .

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, seçeneklerini ayarlamak istediğiniz ayarlama m_strSort ya da m_strFilter sonra recordset nesnesi oluşturmak ama önce sen Açıkçağrı. Requery sonra recordset açıksa, recordset içindeki kayıt yenilemek istiyorsanız, arama.

Eğer Açık bir türündeki veya anlık görüntü türü kayıt kümesi üzerinde arama veya veri kaynağı sql deyimi veya ekli bir tablo gösteren bir tabledef başvuruyorsa, dbOpenTable türü değişkeni için kullanamazsınız; Bunu yaparsanız, mfc bir istisna atar. Bir tabledef nesnesi bağlı bir tablo gösterir olup olmadığını belirlemek için bir CDaoTableDef nesnesi oluşturun ve GetConnect üye işlevi çağrısı.

Düzenleme ya da silme aynı kayıt başka bir kullanıcı veya bilgisayarınızdaki başka bir program tarafından yapılan değişiklikleri yakalamak istiyorsanız, dbSeeChanges bayrağı kullanın. Örneğin, iki kullanıcı aynı kaydı düzenlemeyi başlatırsanız, Update üye işlevi çağırmak için ilk kullanıcı başarılı olur. Güncelleştirme ikinci kullanıcı tarafından çağrıldığında, bir CDaoException oluşturuldu. Benzer şekilde, ikinci kullanıcı kaydı silmek için silme çağrısı dener ve zaten ilk kullanıcı tarafından değiştirilmiş bir CDaoException oluşur.

Genellikle kullanıcı bu CDaoException güncelleştirilirken alırsa, kodunuzu alanların içeriğini yenilemek ve yeni değiştirilmiş değerleri almak. Silme işlemi özel durum oluşursa, kodunuzu verileri son zamanlarda değişti yeni kayıt verileri kullanıcı ve bildiren bir ileti görüntüleyebilirsiniz. Bu noktada, kodunuzu kullanıcı hala kaydını silmek istiyor onay isteyebilir.

İpucu Açılmış bir odbc veri kaynağından bir recordset üzerinden uygulama tek bir geçiş yaptığında performansını artırmak için seçeneği (dbForwardOnly) kullanımı yalnızca ileri kaydırma.

Açılış kayıt kümeleri hakkında daha fazla bilgi için bkz: makaleleri dao kayıt kümesi: kayıt kümeleri oluşturma ve dao: oluşturma, açma ve kapatma dao nesneleri Visual c++ Programcı Kılavuzu. İlgili bilgiler için "OpenRecordset yöntemi" dao Yardım konusuna bakın.

CDaoRecordset ge&nel bakış |nbsp; Sınıf üyeleri | Hiyerarşi çizelgesi

Ayrıca bkz: CDaoRecordset::Close, CDaoRecordset::CDaoRecordset

Index