Aracılığıyla paylaş


CDaoRecordset::Open

Recordset kayıtlarını almak için bu üye işlevi çağırmalıdır.

virtual void Open(
   int nOpenType = AFX_DAO_USE_DEFAULT_TYPE,
   LPCTSTR lpszSQL = NULL,
   int nOptions = 0 
);
virtual void Open(
   CDaoTableDef* pTableDef,
   int nOpenType = dbOpenTable,
   int nOptions = 0 
);
virtual void Open(
   CDaoQueryDef* pQueryDef,
   int nOpenType = dbOpenDynaset,
   int nOptions = 0 
);

Parametreler

  • nOpenType
    Aşağıdaki değerlerden biri:

    • dbOpenDynaset çift yönlü kaydırma ile dinamik küme türünde bir recordset.Bu varsayılandır.

    • dbOpenTable bir tablo türü recordset ile çift yönlü kaydırma.

    • dbOpenSnapshot bir anlık görüntü türünde recordset ile çift yönlü kaydırma.

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

    • A null işaretçisi.

    • Bir veya daha fazla tabledefs ve/veya QueryDef (virgülle ayrılmış) adı.

    • Bir sql seçin deyimi (isteğe bağlı olarak bir sql ile burada veya Siparişby yan tümcesi).

    • Doğrudan sorgu.

  • nOptions
    Aşağıdakilerden birini veya birkaçını aşağıda listelenen seçeneklerden.Varsayılan değer 0'dir.Olası değerler şunlardır:

    • dbAppendOnly yalnızca yeni kayıtlar (yalnızca dinamik küme türünde recordset) ekleyin.Bu seçenek yalnızca kayıtlar eklenebilir gerçek anlamda anlamına gelir.mfc odbc veritabanı sınıflarını alınır ve eklenen kayıtların sağlayan yalnızca ekleme seçeneğiniz vardır.

    • dbForwardOnly kayıt kümesi salt ileri kaydırma anlık görüntüsüdür.

    • dbSeeChanges düzenleme verileri bir başka kullanıcı değiştiriyorsa, bir özel durum üretir.

    • dbDenyWrite diğer kullanıcılar değiştiremez veya kayıtları ekleyin.

    • dbDenyRead diğer kullanıcılar kayıtları (yalnızca tablo türü recordset) görüntüleyemez.

    • dbReadOnly kayıtları; yalnızca görüntüleme diğer kullanıcılar bunları değiştirebilirsiniz.

    • dbInconsistent tutarsız güncelleştirmeler (yalnızca dinamik küme türünde recordset) izin verilir.

    • Not dbConsistent (yalnızca dinamik küme türünde recordset) tutarlı güncelleştirmelere izin yalnızca.

    [!NOT]

    Sabitler Not dbConsistent ve dbInconsistent karşılıklı olarak birbirini dışlar.Birini kullanın veya diğer, ancak her ikisinde de belirli bir örneği açık.

  • pTableDef
    Bir işaretçi bir CDaoTableDef nesnesi.Bu sürümü yalnızca tablo türü Recordset için geçerli değildir.Bu seçeneği kullanırken, CDaoDatabase oluşturmak için kullanılan işaretçi CDaoRecordset kullanılmaz; Bunun yerine, tabledef bulunduğu veritabanı kullanılır.

  • pQueryDef
    Bir işaretçi bir CDaoQueryDef nesnesi.Bu sürümü yalnızca dinamik küme türünde ve anlık görüntü türünde kayıt kümesi için geçerli değildir.Bu seçeneği kullanırken, CDaoDatabase oluşturmak için kullanılan işaretçi CDaoRecordset kullanılmaz; Bunun yerine, querydef bulunduğu veritabanı kullanılır.

Notlar

Önce arama açık, recordset nesnesinin oluşturmalıdır.Bunu yapmanın birkaç yolu vardır:

  • Recordset nesnesinin yapısı oluştururken bir işaretçi geçmesi bir CDaoDatabase zaten açık olan nesne.

  • Recordset nesnesinin yapısı oluştururken bir işaretçi geçmesi bir CDaoDatabase açık olmadığından nesne.Bir recordset açar bir CDaoDatabase nesne ancak recordset nesnesi kapandığında kapanmaz.

  • Recordset nesnesinin yapısı oluştururken geçmesi bir null işaretçisi.Recordset nesnesi çağrıları GetDefaultDBName Microsoft Access adını almak için.mdb dosyasını açın.Daha sonra recordset açar bir CDaoDatabase nesnesi ve Recordset'in açık olduğu sürece açık tutar.Aradığınızda Kapat Recordset ' in üzerinde CDaoDatabase nesne de kapalı.

    [!NOT]

    Ne zaman bir recordset açar CDaoDatabase nesnesi ile özel erişim veri kaynağı açar.

Sürümü için açık kullanan lpszSQL parametresi, Recordset'i açtıktan sonra birkaç yoldan birini kullanarak kayıtları alabilir.İlk seçenek dfx işlevleri sağlamaktır, DoFieldExchange.Dinamik bağlama çağırarak kullanmak için ikinci seçenek olan GetFieldValue üye işlevi.Bu seçenekleri ayrı ayrı veya birlikte uygulanabilir.Birleştirilerek oluşturulur, sql deyiminde kendiniz çağrısında geçmesi gerekecek açık.

İkinci sürümü kullandığınızda açık pass burada bir CDaoTableDef nesne elde edilen sütunlar üzerinden bağlamak kullanılabilir olacaktır DoFieldExchange ve dfx mekanizması ve/veya bağlama yoluyla dinamik olarak GetFieldValue.

[!NOT]

Yalnızca arama açık kullanarak bir CDaoTableDef tablo türündeki Recordset nesnesi.

Üçüncü sürümünü kullandığınızda, açık pass burada bir CDaoQueryDef nesnesi, sorgu yürütülür ve sonuçta elde edilen sütunlar üzerinden bağlamak kullanılabilir DoFieldExchange ve dfx mekanizması ve/veya bağlama yoluyla dinamik olarak GetFieldValue.

[!NOT]

Yalnızca arama açık kullanarak bir CDaoQueryDef kesit türü ve anlık görüntü türünde Recordset nesnesi.

İlk sürümü için açık kullanan lpszSQL parametresi, kayıtları olan aşağıdaki tabloda gösterilen temel alınarak seçilen ölçütleri.

Değer, lpszSQL parametresi

Seçilen kayıtları tarafından belirlenir

Örnek

NULL

Tarafından döndürülen dize GetDefaultSQL.

 

Virgülle ayrılmış listesi bir veya daha fazla tabledefs ve/veya querydef adları.

Tüm sütunları temsil DoFieldExchange.

"Customer"

SEÇİN sütun listesi from Tablo listesi

Belirtilen sütunlarından belirtilen tabledef(s) ve/veya querydef(s).

"SELECT CustId, CustName

FROM Customer"

Her zamanki gibi geçmesine yordamdır null için açık; Bu durumda, açık çağrıları GetDefaultSQL, ClassWizard oluştururken, üreten bir geçersiz kılınabilir üye işlevi bir CDaoRecordset-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 belirtmek lpszSQL parametresi.

Ne olursa olsun, pass, açık sorgu için son bir sql dizesi oluşturur (sql dizesi olabilir burada ve Siparişby yan tümceleri eklenmiş için lpszSQL , geçirilen dize) ve sonra sorguyu yürütür.Çağrılarak oluşturulan dize incelemek GetSQL sonra arama açık.

Recordset sınıf alanı veri üyeleri seçili veri sütunları bağlıdır.Herhangi bir kayıt döndürülürse, ilk kayıt geçerli kayıt olur.

Ayarlamak için Recordset ' in bir filtre veya sıralama gibi seçenekleri ayarlamak istiyorsanız, m_strSort veya m_strFilter sonra recordset nesnesi oluşturmak, ancak siz aramadan önce açık.Sonra recordset içindeki kayıt yenilemek istiyorsanız, kayıt kümesi açıksa, çağrı Requery.

Çağırırsanız, açık türünde veya anlık görüntü türünde Recordset'i veya veri kaynağı sql deyimini veya ekli bir tablo gösteren tabledef başvuruyorsa kullanamazsınız dbOpenTable bağımsız değişkeninin türü; Bunu yaparsanız, mfc bir istisna atar.Bir tabledef nesnesi bağlı bir tabloyu temsil edip etmediğini belirlemek için Oluştur bir CDaoTableDef nesnesi ve çağrı kendi GetConnect üye işlevi.

Use birlikte dbSeeChanges düzenlerken veya aynı kaydı silme makinenizde başka bir program ya da başka bir kullanıcı tarafından yapılan değişiklikleri yakalamak istiyorsanız, bayrak.Örneğin, iki kullanıcı aramak için ilk kullanıcı aynı kaydı düzenlemeyi Başlat güncelleştirme üye işlev başarılı olur.Zaman güncelleştirme ikinci kullanıcı tarafından çağrılan bir CDaoException atılır.Benzer biçimde, ikinci kullanıcı arama yapmaya çalışırsa silmek kaydı ve onu silmek için zaten ilk kullanıcı tarafından değiştirilmiş olan bir CDaoException oluşur.

Genellikle, kullanıcı bu alırsa CDaoException güncelleştirilirken, kodunuzu alanların içeriğini yenilemek ve yeni değiştirilen değerleri almak.Silme işlemi sırasında özel durum ortaya çıkarsa, kodunuzun yeni kayıt verileri kullanıcı ve verileri yakın zamanda değiştiğini belirten bir ileti görüntüleyebilirsiniz.Bu noktada, kodunuzu kullanıcı hala kaydı silmek istediğini onay isteyebilir.

İpucuİpucu

Salt ileri kaydırma seçeneğini kullanın (dbForwardOnly) uygulamanız bir Recordset'i tek bir geçiş yaptığında, performansı artırmak için bir odbc veri kaynağından açılır.

İlgili bilgiler için dao Yardımı'nda "OpenRecordset yöntemi" konusuna bakın.

Gereksinimler

Başlık: afxdao.h

Ayrıca bkz.

Başvuru

CDaoRecordset sınıfı

Hiyerarşi grafik

CDaoRecordset::Close

CDaoRecordset::CDaoRecordset