Niezerowa, jeśli obiekt CRecordset został pomyślnie otwarty; inny sposób 0, jeśli CDatabase::Open (Jeśli wywołana) zwraca 0.
Parametry
nOpenType
Zaakceptuj wartość domyślną, AFX_DB_USE_DEFAULT_TYPE, lub za pomocą jednej z następujących wartości z wyliczeniaOpenType:
CRecordset::dy&nasetnbsp; Zestaw rekordów z przewijania dwukierunkowego. Członkostwo i kolejność rekordów są określane, gdy zestaw rekordów jest otwarty, ale zmiany wprowadzone przez innych użytkowników do wartości danych są widoczne, po operacji pobierania. Zestawy dynamiczne są również nazywane opartych na zestawu rekordów.
CRecordset::s&napshotnbsp; Statyczny zestaw rekordów z przewijania dwukierunkowego. Członkostwa i kolejność rekordów są określane podczas otwierania zestawu rekordów; wartooci danych są określane podczas rekordy są pobierane. Zmiany wprowadzone przez innych użytkowników nie są widoczne, dopóki zamknięciu i ponownym otwarciu zestawu rekordów.
CRecordset::dynamicnbsp; Zestaw rekordów z przewijania dwukierunkowego. Zmiany wprowadzone przez innych użytkowników do wartości członkostwa, zamawianie i dane są widoczne, po operacji pobierania. &Należy zauważyć, że wiele sterowników ODBC nie obsługują ten typ zestawu rekordów.
CRecordset::forwardO&nlynbsp; Tylko do odczytu rekordów z tylko do przodu przewijanie.
Dla CRecordsetwartością domyślną jest CRecordset::snapshot. Mechanizm wartość domyślna umożliwia kreatorów Visual C++ do współdziałania zarówno z ODBC CRecordset i DAO CDaoRecordset, które mają różne ustawienia domyślne.
Aby uzyskać więcej informacji na temat tych typów rekordów, zobacz artykuł Rekordów (ODBC) w Visual C++ Programmer's Guide. Aby uzyskać pokrewne informacje zobacz artykuł "Przy użyciu bloku i przewijalne kursory" Podręcznik programisty SDK ODBC.
Przestroga Jeśli żądany typ nie jest obsługiwany, ramy zgłasza wyjątek.
lpszSQL
Wskaźnik ciąg zawierający jeden z następujących:
Wskaźnik NULL.
Nazwa tabeli.
Instrukcji SQL, Wybierz (opcjonalnie z klauzuli SQL gdzie lub ORDER BY ).
Instrukcji z CALL , na określenie nazwy predefiniowanego zapytania (procedury przechowywane). Należy uważać, że nie należy wstawiać odstępy między nawiasem sześciennym i słowo kluczowe, CALL.
Aby uzyskać więcej informacji na temat ten ciąg zobacz tabelę i dyskusja na temat roli ClassWizard na mocy uwagi.
Uwaga Kolejność kolumn w zestawie wyników, musi odpowiadać kolejności RFX lub zastąpić wywołania funkcji RFX luzem w funkcji DoFieldExchange lub DoBulkFieldExchange.
dwOptions
Maski bitów, które można określić kombinacji wartości wymienionych poniżej. Niektóre z nich są wzajemnie wykluczające. Wartością domyślną jest Brak.
CRecordset::nonenbsp; &Nie opcje ustawione. Ta wartość parametru jest wzajemnie wykluczające wszystkie inne wartości. Domyślnie zestawu rekordów mogą być aktualizowane z edycji lub usuwania i umożliwia dołączanie nowych rekordów z AddNew. Aktualizacji zależy od źródła danych, a także na opcję nOpenType , którą należy określić. Optymalizacja dla uzupełnienia luzem nie jest dostępna. Trwa pobieranie wierszy zbiorczej będą nie zaimplementowane. Usuniętych rekordów nie zostanie pominięte podczas nawigacji zestawu rekordów. Zakładki są niedostępne. Automatyczne dirty pole Sprawdzanie jest zaimplementowana.
CRecordset::appendOnlynbsp; &Nie pozwala edytować lub usuwać w zestawie rekordów. Zezwalaj tylko element AddNew . Ta opcja jest wzajemnie wykluczające z CRecordset::readOnly.
CRecordset::readO&nlynbsp; Otwórz recordset w trybie tylko do odczytu. Ta opcja jest wzajemnie wykluczające z CRecordset::appendOnly.
CRecordset::optimizeBulkAdd A prepared SQL statment umożliwia optymalizowanie, dodając wiele rekordów jednocześnie. Stosuje się tylko wtedy, gdy nie używasz funkcji ODBC API SQLSetPos aktualizacji rekordów. Pierwsza aktualizacja określa, które pola są oznaczony jako zanieczyszczony. Ta opcja jest wzajemnie wykluczające z CRecordset::useMultiRowFetch.
CRecordset::useMultiRowFetchnbsp; Wdrożenie, luzem wiersz pobieranie umożliwia wielu wierszy, które mają być pobierane w operacji pojedynczego pobrania. To jest zaawansowaną funkcją mające na celu poprawę wydajności; luzem w polu rekordu wymiany nie jest jednak obsługiwane przez ClassWizard. Ta opcja jest wzajemnie wykluczające z CRecordset::optimizeBulkAdd. &Należy zauważyć, że jeśli określisz CRecordset::useMultiRowFetch, następnie opcję CRecordset::noDirtyFieldCheck będzie włączona automatycznie (podwójne buforowanie nie będą dostępne); na zestawy rekordów tylko do przodu opcja CRecordset::useExtendedFetch będzie włączony automatycznie. Aby uzyskać więcej informacji na temat pobierania wierszy zbiorczej, zobacz artykuł rekordów: pobieranie rekordów w masowych (ODBC) w Visual C++ Programmer's Guide.
CRecordset::skipDeletedRecordsnbsp; Pomiń wszystkie usunięte rekordy podczas nawigowania za pomocą zestawu rekordów. To będzie niska wydajność w niektórych względne pobiera. Ta opcja nie jest prawidłowa w zestawy rekordów tylko do przodu. &Należy zauważyć, że CRecordset::skipDeletedRecords jest podobny do sterownika pakowania, co oznacza, że usunięte wiersze są usuwane z zestawu rekordów. Jednakże jeśli sterownik pakiety rekordów, następnie ją pominie tylko tych rekordów, które można usunąć; nie pominie rekordy usunięte przez innych użytkowników, gdy zestaw rekordów jest otwarty. CRecordset::skipDeletedRecords pominie wierszy usunięte przez innych użytkowników.
CRecordset::useBookmarksnbsp; Mogą używać zakładek w zestawie rekordów, jeśli obsługiwane. Zakładki powolne pobieranie danych, ale zwiększyć wydajność dla danych nawigacyjnych. &Nie ważne na zestawy rekordów tylko do przodu. Aby uzyskać więcej informacji, zobacz artykuł rekordów: zakładki i bezwzględne położenie (ODBC) w Visual C++ Programmer's Guide.
CRecordset::noDirtyFieldChecknbsp; Wyłącz automatyczne dirty pole Sprawdzanie (buforowanie podwójne). Poprawi to wydajność; Jednakże musi ręcznie oznaczyć pola jako zanieczyszczony przez wywołanie SetFieldDirty i SetField&Null Członkowskie funkcji.Należy zauważyć, że podwójne buforowanie w klasie, którego CRecordset jest podobny do podwójnego buforowania w klasie CDaoRecordset. Jednakże na w CRecordset, włączeniu nie, podwójne buforowanie dla poszczególnych pól; Możesz ją włączyć dla wszystkich pól albo wyłączyć dla wszystkich pól. Aby uzyskać więcej informacji na temat podwójne buforowanie zapoznaj się z artykułem DAO wymiany pól rekordów DAO: podwójne buforowanie zapisów w Visual C++ Programmer's Guide. Należy zauważyć, że jeśli określono opcję CRecordset::useMultiRowFetch, następnie CRecordset::noDirtyFieldCheck będzie włączona automatycznie; Jednakże SetFieldDirty i SetFieldNull nie można stosować na zestawy rekordów, który implementuje Pobieranie wiersza luzem.
CRecordset::executeDirectnbsp; &Nie należy używać prepared SQL statment. Wydajność należy określić tę opcję, jeśli nigdy nie zostanie wywołana funkcja Członkowskie PonówKwerendę.
CRecordset::useExte&ndedFetchnbsp; Wdrożenie procedury SQLExtendedFetch zamiast SQLFetch. To jest przeznaczony dla wykonania luzem wiersz pobieranie na zestawy rekordów tylko do przodu. Jeśli określono opcję CRecordset::useMultiRowFetch w zestawie rekordów tylko do przodu, następnie CRecordset::useExtendedFetch będzie włączona automatycznie.
CRecordset::userAllocMultiRowBuffersnbsp; Użytkownik przydzieli buforów pamięci masowej dla danych. Użyj tej opcji w połączeniu z CRecordset::useMultiRowFetch , jeśli chcesz przydzielić własne składowania; w przeciwnym razie ramach automatycznie przydzieli konieczne przechowywanie. Aby uzyskać więcej informacji, zobacz artykuł rekordów: pobieranie rekordów w masowych (ODBC) w Visual C++ Programmer's Guide. &Należy zauważyć, że określając CRecordset::userAllocMultiRowBuffers bez określania CRecordset::useMultiRowFetch spowoduje niepowodzenie potwierdzenia.
Uwagi
Należy wywołać tej funkcji Państwa, aby uruchomić kwerendę zdefiniowany przez zestaw rekordów. Przed wywołaniem otwarte, należy tworzyć obiektu recordset.
Ten zestaw rekordów połączenie ze źródłem danych zależy od sposobu konstruowania zestawu rekordów przed wywołaniem metody Open. Jeśli obiekt CDatabase można przekazać do konstruktora zestaw rekordów, który nie był podłączony do źródła danych, ta funkcja Członkowskie używa GetDefaultConnect próbuje otworzyć obiekt bazy danych. Jeśli do konstruktora rekordów można przekazać wartości NULL , konstruktora tworzy obiekt CDatabase dla Ciebie, a otwarty próbuje się połączyć obiekt bazy danych. Szczegółowe informacje na temat zamykania zestawu rekordów i połączenia tych różnych okolicznościach zobacz Zamknij.
Uwaga Dostęp do źródła danych za pośrednictwem obiektu CRecordset zawsze jest udostępniony. W przeciwieństwie do klasy CDaoRecordset nie można użyć obiektu CRecordset , aby otworzyć źródło danych w trybie dostępu wyłącznego.
Po wywołaniu otwarte, kwerenda, zazwyczaj instrukcję SQL Zaznacz , wybiera rekordy w oparciu o kryteria przedstawione w poniższej tabeli.
Wartość parametru lpszSQL
Rekordy zaznaczone są określane przez
Przykład
WARTOŚĆ NULL
Ciąg zwracany przez GetDefaultSQL.
Nazwa tabeli SQL
Wszystkie kolumny listy tabeli w DoFieldExchange lub DoBulkFieldExchange.
"Klient"
Nazwy predefiniowanego zapytania (procedury przechowywane)
Kolumny, których kwerenda jest zdefiniowana do zwrotu.
"{call OverDueAccts}"
Zaznacz listę kolumn z tabeli Lista
Określonej kolumny z określonych tabel.
"Wybierz IDklienta, CustName Z klienta"
! Ostrzeżenienbsp; &Należy uważać, że nie należy wstawiać dodatkowych odstępów w ciągu SQL. Na przykład jeśli można wstawić odstęp między nawiasem sześciennym i słowo kluczowe, CALL , MFC interpretację postrzeganego ciąg SQL jako nazwę tabeli i włączenie go do instrukcji SELECT , co spowoduje wygenerowanie wyjątku jest generowane. Podobnie, jeśli wstępnie kwerendy używa parametru wyjściowego, nie należy wstawiać spacji między nawiasem sześciennym oraz '?' symbolu. Wreszcie nie należy umieszczać spacji przed nawiasem sześciennym w instrukcji CALL lub przed Wybierz słowo kluczowe w instrukcji Wybierz.
Typowa procedura jest przekazać NULL do otwartych; w tym przypadku otwartych wywołuje GetDefaultSQL. Jeśli używasz pochodną klasy CRecordset , GetDefualtSQL podaje nazwy tabeli, który określono w ClassWizard. Zamiast tego można określić inne informacje w parametrze lpszSQL.
Niezależnie od należy przekazać, otwarte konstrukcje końcowego ciąg SQL dla kwerendy (ciąg może mieć klauzul SQL gdzie oraz ORDER BY dołączany do ciągu lpszSQL , który został przekazany), a następnie wykonuje kwerendę. Skonstruowane ciąg znaków można sprawdzić, przez wywołanie GetSQL po wywołaniu otwarte. O dodatkowe informacje, jak zestaw rekordów tworzy instrukcję SQL i wybiera rekordów, zobacz artykuł rekordów: jak zestawy rekordów wybierz rekordy (ODBC) w Visual C++ Programmer's Guide.
Członkowie danych pole klasy rekordów są powiązane z kolumny danych zaznaczone. Jeśli zwracane są wszystkie rekordy, pierwszy rekord staje się bieżącym rekordzie.
Jeśli chcesz ustawić opcje dla rekordów, takie jak filtrować lub sortować, należy określić te po konstruowania obiektu recordset, ale przed wywołaniem otwarte. Jeśli chcesz odświeżyć rekordów w zestawie rekordów po zestawie rekordów jest już otwarty, wywołanie PonówKwerendę.