Udostępnij za pośrednictwem


CDaoRecordset::Open

 

Trzeba wywołać tę funkcję Członkowskich do pobierania rekordów zestawu rekordów.

Składnia

      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 
);

Parametry

  • nOpenType
    Jedną z następujących wartości:

    • dbOpenDynaset dynamicznego zestawu rekordów z przewijania dwukierunkowego.Domyślnie włączone.

    • dbOpenTable rekordów typu tabeli z przewijania dwukierunkowego.

    • dbOpenSnapshot zestaw rekordów typu migawka z przewijania dwukierunkowego.

  • lpszSQL
    Wskaźnik ciąg zawierający jeden z następujących:

    • A NULL wskaźnik.

    • Nazwa tabledefs lub querydefs (rozdzielanych przecinkami).

    • SQL Zaznacz instrukcji (opcjonalnie z SQL gdzie lub zamówieniaprzez klauzuli).

    • Kwerendy przekazującej.

  • nOptions
    Jeden lub więcej opcji wymienionych poniżej.Wartością domyślną jest 0.Możliwe wartości są następujące:

    • dbAppendOnly można tylko Dołącz nowe rekordy (tylko rekordów dynamicznego).Ta opcja oznacza dosłownie rekordy tylko może dołączone.Klas MFC ODBC bazy danych mają tylko Dołącz opcja umożliwiająca rekordy pobierane i dołączane.

    • dbForwardOnly zestaw rekordów jest przewijany migawki tylko do przodu.

    • dbSeeChanges wygeneruje wyjątek, jeśli inny użytkownik zmienia edycji danych.

    • dbDenyWrite innym użytkownikom nie można modyfikować lub dodawać rekordów.

    • dbDenyRead innym użytkownikom nie można wyświetlić rekordy (tylko zestaw rekordów typu tabeli).

    • dbReadOnly można tylko przeglądać rekordy; innych użytkowników można modyfikować je.

    • dbInconsistent niespójne aktualizacje są dozwolone (tylko rekordów dynamicznego).

    • dbConsistent tylko aktualizacje zgodne są dozwolone (tylko rekordów dynamicznego).

    Uwaga

    Stałe dbConsistent i dbInconsistent wzajemnie się wykluczają.Można użyć jednej lub drugiej, ale nie oba w danej instancji Otwórz.

  • pTableDef
    Wskaźnik do CDaoTableDef obiektu.Ta wersja jest prawidłowe tylko dla rekordów z tabeli typu.Przy użyciu tej opcji CDaoDatabase wskaźnik wykorzystywanych do konstruowania CDaoRecordset nie jest używany; raczej bazy danych, w którym znajduje się tabledef jest używany.

  • pQueryDef
    Wskaźnik do CDaoQueryDef obiektu.Ta wersja jest prawidłowe tylko dla dynamicznego i zestawy rekordów typu migawka.Przy użyciu tej opcji CDaoDatabase wskaźnik wykorzystywanych do konstruowania CDaoRecordset nie jest używany; raczej bazy danych, w którym znajduje się obiektu querydef jest używany.

Uwagi

Przed wywoływaniem Otwórz, należy utworzyć obiektu recordset.Aby to zrobić na wiele sposobów:

  • Utworzenia obiektu recordset przekazać wskaźnik do CDaoDatabase obiekt, który jest już otwarty.

  • Utworzenia obiektu recordset przekazać wskaźnik do CDaoDatabase obiekt, który nie jest otwarty.Otwiera zestaw rekordów CDaoDatabase obiektu, ale nie będzie go zamknąć, powoduje zamknięcie obiektu recordset.

  • Utworzenia obiektu recordset przekazać NULL wskaźnik.Wywołania obiektu recordset GetDefaultDBName Aby uzyskać nazwę programu Microsoft Access.Otworzyć plik MDB.Otwarcie zestawu rekordów CDaoDatabase obiektu i utrzymuje go otworzyć, jak zestaw rekordów jest otwarty.Po wywołaniu Zamknij na zestawie rekordów, CDaoDatabase obiektu również jest zamknięty.

    Uwaga

    Po otwarciu zestawu rekordów CDaoDatabase obiektu, otwiera źródło danych z dostępem niewyłączna.

Dla wersji Otwórz używający lpszSQL parametr, po otwarciu zestawu rekordów można pobrać rekordy w kilka sposobów.Pierwsza opcja jest aby w funkcji DFX na DoFieldExchange.Druga opcja jest użycie dynamiczne wiązanie przez wywołanie GetFieldValue funkcji składowej.Opcje te można zaimplementować oddzielnie lub w połączeniu.Jeśli są łączone, będą musiały przekazywać w instrukcji SQL samodzielnie na wywołanie Otwórz.

Kiedy używać druga wersja Otwórz gdzie przechodzą w CDaoTableDef obiektu, wynikowy kolumny będą dostępne powiązania za pośrednictwem DoFieldExchange i DFX mechanizmu lub bind dynamicznie za pomocą GetFieldValue.

Uwaga

Można wywołać tylko Otwórz za pomocą CDaoTableDef zestawy rekordów z tabeli Typ obiektu.

Kiedy używać trzecia wersja Otwórz gdzie przechodzą w CDaoQueryDef obiektu, że kwerenda zostanie wykonana i wynikowe kolumny będą dostępne powiązania poprzez DoFieldExchange i DFX mechanizmu lub bind dynamicznie za pomocą GetFieldValue.

Uwaga

Można wywołać tylko Otwórz za pomocą CDaoQueryDef obiektu dynamicznego i zestawy rekordów typu migawka.

Pierwsza wersja dla Otwórz używający lpszSQL parametr, wybranych na podstawie kryteriów pokazane w poniższej tabeli są rekordy.

Wartość lpszSQL parametr

Wybrane rekordy są określane przez

Przykład

WARTOŚĆ NULL

Ciąg zwracany przez GetDefaultSQL.

 

Rozdzielana przecinkami lista jednego lub więcej tabledefs i/lub nazwy querydef.

Wszystkie kolumny są reprezentowane w DoFieldExchange.

"Customer"

Wybierz kolumny listy od lista tabel

Określonej kolumny z określonym tabledef(s) lub querydef(s).

"SELECT CustId, CustName

FROM Customer"

Jest przekazanie zwykłą procedurę NULL do Otwórz; w takim przypadku Otwórz wywołania GetDefaultSQL, funkcja Członkowskie NotOverridable, ClassWizard generuje podczas tworzenia CDaoRecordset-klasy.Wartość ta daje nazwa(-y) tabledef(s) lub querydef określone w ClassWizard.Zamiast tego można określić inne informacje w lpszSQL parametru.

Niezależnie od przekazuje, Otwórz konstrukcje końcowego ciąg SQL dla kwerendy (ciąg może być SQL gdzie i zamówieniaprzez klauzul dołączane do lpszSQL ciąg zostanie przekazany), a następnie wykonuje kwerendę.Można zbadać ciąg zbudowane przez wywołanie GetSQL po wywołaniu Otwórz.

Pole danych członków klasy rekordów są powiązane z kolumn danych zaznaczone.Zwracane są wszystkie rekordy, pierwszy rekord staje się bieżącym rekordzie.

Jeśli chcesz ustawić opcje dla rekordów, takie jak filtrowanie lub sortowanie, m_strSort lub m_strFilter po konstruowania obiektu recordset, ale przed wywołaniem Otwórz.Jeśli chcesz odświeżyć rekordów w zestawie rekordów po zestawie rekordów jest już otwarty, call Requery.

Jeśli zadzwonisz Otwórz dynamicznego lub utrwalony zestaw rekordów, jeśli źródło danych odnosi się do instrukcji SQL lub tabledef, reprezentującą załączonej tabeli, nie można użyć dbOpenTable argumentu typu; Jeśli jednak MFC zgłasza wyjątek.Aby ustalić, czy obiekt tabledef reprezentuje załączonej tabeli, należy utworzyć CDaoTableDef obiektu i wywołanie jej GetConnect funkcji składowej.

Użyj dbSeeChanges flagę, jeśli chcesz zalewki zmiany wprowadzone przez innego użytkownika lub innego programu na komputerze podczas edytowania lub usuwania samego rekordu.Na przykład, jeśli dwóch użytkowników rozpocząć edycję tego samego rekordu pierwszego użytkownika do wywołania Aktualizacja Członkowskich funkcja się powiedzie.Gdy Aktualizacja jest wywoływana przez drugiego użytkownika CDaoException jest generowany.Podobnie jeśli drugi użytkownik spróbuje wywołać usunąć usunąć rekord, a już została zmieniona przez pierwszego użytkownika CDaoException występuje.

Zazwyczaj jeżeli użytkownik uzyskuje to CDaoException podczas aktualizowania, należy odświeżyć zawartość pól i pobrać zmodyfikowane wartości kodu.Jeśli wystąpi wyjątek podczas usuwania, kodu można wyświetlić dane rekordu użytkownika i komunikat informujący, że ostatnio zmieniono danych.W tym momencie kodu można zażądać potwierdzenia, że użytkownik nadal chce usunąć rekord.

Porada

Użyj opcji przewijania tylko do przodu (dbForwardOnly) aby poprawić wydajność, gdy aplikacja jednego przebiegu przez zestaw rekordów otwarty ze źródła danych ODBC.

Dla powiązanych informacji zobacz temat "Metoda OpenRecordset" w pomocy DAO.

Wymagania

Nagłówek: afxdao.h

Zobacz też

Klasa CDaoRecordset
Diagram hierarchii
CDaoRecordset::Close
CDaoRecordset::CDaoRecordset