Dela via


CDaoRecordset-klass

Representerar en uppsättning poster som valts från en datakälla.

Anmärkning

Data Access Object (DAO) stöds via Office 2013. DAO 3.6 är den slutliga versionen och är föråldrad.

Syntax

class CDaoRecordset : public CObject

Medlemmar

Offentliga konstruktorer

Namn Beskrivning
CDaoRecordset::CDaoRecordset Konstruerar ett CDaoRecordset objekt.

Offentliga metoder

Namn Beskrivning
CDaoRecordset::AddNew Förbereder för att lägga till en ny post. Anropa Uppdatera för att slutföra tillägget.
CDaoRecordset::CanAppend Returnerar nonzero om nya poster kan läggas till i postuppsättningen via funktionen Lägg tillNy medlem.
CDaoRecordset::CanBookmark Returnerar nonzero om postuppsättningen stöder bokmärken.
CDaoRecordset::CancelUpdate Avbryter eventuella väntande uppdateringar på grund av en åtgärd för att redigera eller lägga tillNy .
CDaoRecordset::CanRestart Returnerar nonzero om Requery kan anropas för att köra postuppsättningens fråga igen.
CDaoRecordset::CanScroll Returnerar nonzero om du kan bläddra igenom posterna.
CDaoRecordset::CanTransact Returnerar nonzero om datakällan stöder transaktioner.
CDaoRecordset::CanUpdate Returnerar nonzero om postuppsättningen kan uppdateras (du kan lägga till, uppdatera eller ta bort poster).
CDaoRecordset::Stäng Stänger postuppsättningen.
CDaoRecordset::D elete Tar bort den aktuella posten från postuppsättningen. Du måste uttryckligen rulla till en annan post efter borttagningen.
CDaoRecordset::D oFieldExchange Anropas för att utbyta data (i båda riktningarna) mellan fältdatamedlemmarna i postuppsättningen och motsvarande post i datakällan. Implementerar DAO-postfältutbyte (DFX).
CDaoRecordset::Edit Förbereder för ändringar i den aktuella posten. Anropa Update för att slutföra redigeringen.
CDaoRecordset::FillCache Fyller hela eller en del av en lokal cache för ett postuppsättningsobjekt som innehåller data från en ODBC-datakälla.
CDaoRecordset::Find Letar upp den första, nästa, föregående eller sista platsen för en viss sträng i en postuppsättning av dynasettyp som uppfyller de angivna kriterierna och gör den posten till den aktuella posten.
CDaoRecordset::FindFirst Letar upp den första posten i en postuppsättning av dynasettyp eller ögonblicksbildstyp som uppfyller de angivna kriterierna och gör den posten till den aktuella posten.
CDaoRecordset::FindLast Letar upp den sista posten i en postuppsättning av dynasettyp eller ögonblicksbildstyp som uppfyller de angivna kriterierna och gör den posten till den aktuella posten.
CDaoRecordset::FindNext Letar upp nästa post i en postuppsättning av dynasettyp eller ögonblicksbildstyp som uppfyller de angivna kriterierna och gör den posten till den aktuella posten.
CDaoRecordset::FindPrev Letar upp den tidigare posten i en postuppsättning av dynasettyp eller ögonblicksbildstyp som uppfyller de angivna kriterierna och gör den posten till den aktuella posten.
CDaoRecordset::GetAbsolutePosition Returnerar postnumret för ett postuppsättningsobjekts aktuella post.
CDaoRecordset::GetBookmark Returnerar ett värde som representerar bokmärket på en post.
CDaoRecordset::GetCacheSize Returnerar ett värde som anger antalet poster i en postuppsättning av dynasettyp som innehåller data som ska cachelagras lokalt från en ODBC-datakälla.
CDaoRecordset::GetCacheStart Returnerar ett värde som anger bokmärket för den första posten i postuppsättningen som ska cachelagras.
CDaoRecordset::GetCurrentIndex Returnerar ett CString som innehåller namnet på det index som senast användes på en indexerad tabelltyp CDaoRecordset.
CDaoRecordset::GetDateCreated Returnerar datum och tid då bastabellen bakom ett CDaoRecordset objekt skapades
CDaoRecordset::GetDateLastUpdated Returnerar datum och tid för den senaste ändringen som gjorts i utformningen av en bastabell som ligger till grund för ett CDaoRecordset objekt.
CDaoRecordset::GetDefaultDBName Returnerar namnet på standarddatakällan.
CDaoRecordset::GetDefaultSQL Anropas för att hämta sql-standardsträngen som ska köras.
CDaoRecordset::GetEditMode Returnerar ett värde som anger redigeringstillståndet för den aktuella posten.
CDaoRecordset::GetFieldCount Returnerar ett värde som representerar antalet fält i en postuppsättning.
CDaoRecordset::GetFieldInfo Returnerar specifika typer av information om fälten i postuppsättningen.
CDaoRecordset::GetFieldValue Returnerar värdet för ett fält i en postuppsättning.
CDaoRecordset::GetIndexCount Hämtar antalet index i en tabell som ligger bakom en postuppsättning.
CDaoRecordset::GetIndexInfo Returnerar olika typer av information om ett index.
CDaoRecordset::GetLastModifiedBookmark Används för att fastställa den senast tillagda eller uppdaterade posten.
CDaoRecordset::GetLockingMode Returnerar ett värde som anger vilken typ av låsning som gäller under redigeringen.
CDaoRecordset::GetName Returnerar ett CString som innehåller namnet på postuppsättningen.
CDaoRecordset::GetParamValue Hämtar det aktuella värdet för den angivna parametern som lagras i det underliggande DAOParameter-objektet.
CDaoRecordset::GetPercentPosition Returnerar positionen för den aktuella posten som en procentandel av det totala antalet poster.
CDaoRecordset::GetRecordCount Returnerar antalet poster som används i ett postuppsättningsobjekt.
CDaoRecordset::GetSQL Hämtar SQL-strängen som används för att välja poster för postuppsättningen.
CDaoRecordset::GetType Anropas för att fastställa typen av en postuppsättning: tabelltyp, dynasettyp eller ögonblicksbildstyp.
CDaoRecordset::GetValidationRule Returnerar ett CString värde som innehåller det värde som validerar data när de anges i ett fält.
CDaoRecordset::GetValidationText Hämtar den text som visas när en verifieringsregel inte uppfylls.
CDaoRecordset::IsBOF Returnerar nonzero om postuppsättningen har placerats före den första posten. Det finns ingen aktuell post.
CDaoRecordset::IsDeleted Returnerar nonzero om postuppsättningen är placerad på en borttagen post.
CDaoRecordset::IsEOF Returnerar nonzero om postuppsättningen har placerats efter den senaste posten. Det finns ingen aktuell post.
CDaoRecordset::IsFieldDirty Returnerar nonzero om det angivna fältet i den aktuella posten har ändrats.
CDaoRecordset::IsFieldNull Returnerar nonzero om det angivna fältet i den aktuella posten är Null (utan värde).
CDaoRecordset::IsFieldNullable Returnerar nonzero om det angivna fältet i den aktuella posten kan anges till Null (utan värde).
CDaoRecordset::IsOpen Returnerar nonzero om Open har anropats tidigare.
CDaoRecordset::Move Placerar postuppsättningen till ett angivet antal poster från den aktuella posten i båda riktningarna.
CDaoRecordset::MoveFirst Placerar den aktuella posten på den första posten i postuppsättningen.
CDaoRecordset::MoveLast Placerar den aktuella posten på den sista posten i postuppsättningen.
CDaoRecordset::MoveNext Placerar den aktuella posten på nästa post i postuppsättningen .
CDaoRecordset::MovePrev Placerar den aktuella posten på den tidigare posten i postuppsättningen.
CDaoRecordset::Open Skapar en ny postuppsättning från en tabell, dynaset eller ögonblicksbild.
CDaoRecordset::Requery Kör postuppsättningens fråga igen för att uppdatera de valda posterna.
CDaoRecordset::Seek Letar upp posten i ett indexerat postuppsättningsobjekt av tabelltyp som uppfyller de angivna kriterierna för det aktuella indexet och gör den posten till den aktuella posten.
CDaoRecordset::SetAbsolutePosition Anger postnumret för ett postuppsättningsobjekts aktuella post.
CDaoRecordset::SetBookmark Placerar postuppsättningen på en post som innehåller det angivna bokmärket.
CDaoRecordset::SetCacheSize Anger ett värde som anger antalet poster i en postuppsättning av dynasettyp som innehåller data som ska cachelagras lokalt från en ODBC-datakälla.
CDaoRecordset::SetCacheStart Anger ett värde som anger bokmärket för den första posten i postuppsättningen som ska cachelagras.
CDaoRecordset::SetCurrentIndex Anropad för att ange ett index för en postuppsättning av tabelltyp.
CDaoRecordset::SetFieldDirty Markerar det angivna fältet i den aktuella posten som ändrat.
CDaoRecordset::SetFieldNull Anger värdet för det angivna fältet i den aktuella posten till Null (utan värde).
CDaoRecordset::SetFieldValue Anger värdet för ett fält i en postuppsättning.
CDaoRecordset::SetFieldValueNull Anger värdet för ett fält i en postuppsättning till Null. (har inget värde).
CDaoRecordset::SetLockingMode Anger ett värde som anger vilken typ av låsning som ska tillämpas under redigeringen.
CDaoRecordset::SetParamValue Anger det aktuella värdet för den angivna parametern som lagras i det underliggande DAOParameter-objektet
CDaoRecordset::SetParamValueNull Anger det aktuella värdet för den angivna parametern till Null (utan värde).
CDaoRecordset::SetPercentPosition Anger positionen för den aktuella posten till en plats som motsvarar en procentandel av det totala antalet poster i en postuppsättning.
CDaoRecordset::Update Slutför en AddNew eller Edit åtgärd genom att spara nya eller redigerade data i datakällan.

Medlemmar i offentliga data

Namn Beskrivning
CDaoRecordset::m_bCheckCacheForDirtyFields Innehåller en flagga som anger om fält markeras automatiskt som ändrade.
CDaoRecordset::m_nFields Innehåller antalet fältdatamedlemmar i postuppsättningsklassen och antalet kolumner som valts av postuppsättningen från datakällan.
CDaoRecordset::m_nParams Innehåller antalet parameterdatamedlemmar i postmängdsklassen – antalet parametrar som skickas med postmängdens fråga
CDaoRecordset::m_pDAORecordset En pekare till DAO-gränssnittet som ligger bakom postmängdsobjektet.
CDaoRecordset::m_pDatabase Källdatabas för den här resultatuppsättningen. Innehåller en pekare till ett CDaoDatabase-objekt .
CDaoRecordset::m_strFilter Innehåller en sträng som används för att konstruera en SQL WHERE-instruktion .
CDaoRecordset::m_strSort Innehåller en sträng som används för att konstruera en SQL ORDER BY-instruktion .

Anmärkningar

Objekt som kallas "postuppsättningar" CDaoRecordset är tillgängliga i följande tre formulär:

  • Postuppsättningar av tabelltyp representerar en bastabell som du kan använda för att undersöka, lägga till, ändra eller ta bort poster från en enskild databastabell.

  • Postuppsättningar av dynasettyp är resultatet av en fråga som kan ha uppdateringsbara poster. Dessa postuppsättningar är en uppsättning poster som du kan använda för att undersöka, lägga till, ändra eller ta bort poster från en underliggande databastabell eller tabeller. Postuppsättningar av dynasettyp kan innehålla fält från en eller flera tabeller i en databas.

  • Postuppsättningar av ögonblicksbildtyp är en statisk kopia av en uppsättning poster som du kan använda för att hitta data eller generera rapporter. Dessa postuppsättningar kan innehålla fält från en eller flera tabeller i en databas men kan inte uppdateras.

Varje form av postuppsättning representerar en uppsättning poster som har åtgärdats när postuppsättningen öppnas. När du bläddrar till en post i en postuppsättning av tabelltyp eller en postuppsättning av dynasettyp återspeglar den ändringar som gjorts i posten när postuppsättningen har öppnats, antingen av andra användare eller av andra postuppsättningar i ditt program. (Det går inte att uppdatera en postuppsättning av ögonblicksbildtyp.) Du kan använda CDaoRecordset direkt eller härleda en programspecifik postuppsättningsklass från CDaoRecordset. Sedan kan du:

  • Bläddra igenom posterna.

  • Ange ett index och leta snabbt efter poster med hjälp av Sök (endast postuppsättningar av tabelltyp).

  • Hitta poster baserat på en strängjämförelse: "<", "<=", "=", ">=" eller ">" (postuppsättningar av dynasettyp och ögonblicksbildstyp).

  • Uppdatera posterna och ange ett låsningsläge (förutom postuppsättningar av ögonblicksbildstyp).

  • Filtrera postuppsättningen för att begränsa vilka poster den väljer från de som är tillgängliga i datakällan.

  • Sortera postuppsättningen.

  • Parametrisera postuppsättningen för att anpassa dess val med information som inte är känd förrän körningstiden.

Klassen CDaoRecordset tillhandahåller ett gränssnitt som liknar det för klassen CRecordset. Den största skillnaden är att klassen CDaoRecordset kommer åt data via ett DATA Access Object (DAO) baserat på OLE. Klassen CRecordset får åtkomst till DBMS via Open Database Connectivity (ODBC) och en ODBC-drivrutin för den DBMS-datorn.

Anmärkning

DAO-databasklasserna skiljer sig från MFC-databasklasserna baserat på Open Database Connectivity (ODBC). Alla DAO-databasklassnamn har prefixet "CDao". Du kan fortfarande komma åt ODBC-datakällor med DAO-klasserna. DAO-klasserna erbjuder vanligtvis överlägsna funktioner eftersom de är specifika för Microsoft Jet-databasmotorn.

Du kan antingen använda CDaoRecordset direkt eller härleda en klass från CDaoRecordset. Om du vill använda en postuppsättningsklass i båda fallen öppnar du en databas och skapar ett postuppsättningsobjekt och skickar konstruktorn en pekare till objektet CDaoDatabase . Du kan också skapa ett CDaoRecordset objekt och låta MFC skapa ett tillfälligt CDaoDatabase objekt åt dig. Anropa sedan postuppsättningens open member-funktion och ange om objektet är en postuppsättning av tabelltyp, en postuppsättning av dynasettyp eller en postuppsättning av ögonblicksbildstyp. Anrop Open väljer data från databasen och hämtar den första posten.

Använd objektets medlemsfunktioner och datamedlemmar för att bläddra igenom posterna och använda dem. Vilka åtgärder som är tillgängliga beror på om objektet är en postuppsättning av tabelltyp, en postuppsättning av dynasettyp eller en postuppsättning av ögonblicksbildstyp och om det är uppdateringsbart eller skrivskyddat – detta beror på databasens eller ODBC-datakällans kapacitet. Om du vill uppdatera poster som kan ha ändrats eller lagts till sedan anropet Open anropar du objektets funktion Requery-medlem . Anropa objektets Close medlemsfunktion och förstör objektet när du är klar med det.

CDaoRecordset använder DAO-postfältutbyte (DFX) för att stödja läsning och uppdatering av postfält via typsäkra C++-medlemmar i din CDaoRecordset eller CDaoRecordset-härledda klass. Du kan också implementera dynamisk bindning av kolumner i en databas utan att använda DFX-mekanismen med hjälp av GetFieldValue och SetFieldValue.

Relaterad information finns i avsnittet "Arkivhandlingsobjekt" i DAO-hjälpen.

Arvshierarki

CObject

CDaoRecordset

Kravspecifikation

rubrik:afxdao.h

CDaoRecordset::AddNew

Anropa den här medlemsfunktionen för att lägga till en ny post i en postuppsättning av tabelltyp eller dynasettyp.

virtual void AddNew();

Anmärkningar

Postens fält är ursprungligen Null. (I databasterminologi betyder Null att "inte ha något värde" och inte är detsamma som NULL i C++.) För att slutföra åtgärden måste du anropa funktionen Uppdatera medlem. Update sparar ändringarna i datakällan.

Försiktighet

Om du redigerar en post och sedan bläddrar till en annan post utan att anropa Updategår ändringarna förlorade utan förvarning.

Om du lägger till en post i en postuppsättning av dynasettyp genom att anropa AddNew visas posten i postuppsättningen och inkluderas i den underliggande tabellen där den blir synlig för alla nya CDaoRecordset objekt.

Positionen för den nya posten beror på typen av postuppsättning:

  • I en postuppsättning av dynasettyp, där den nya posten infogas, garanteras inte. Det här beteendet ändrades med Microsoft Jet 3.0 av prestanda- och samtidighetsskäl. Om målet är att göra den nyligen tillagda posten till den aktuella posten hämtar du bokmärket för den senast ändrade posten och flyttar till bokmärket:
rs.SetBookmark(rs.GetLastModifiedBookmark());
  • I en postuppsättning av tabelltyp som ett index har angetts för returneras posterna på rätt plats i sorteringsordningen. Om inget index har angetts returneras nya poster i slutet av postuppsättningen.

Posten som var aktuell innan du använde AddNew förblir aktuell. Om du vill göra den nya posten aktuell och postuppsättningen stöder bokmärken anropar du SetBookmark till det bokmärke som identifieras av egenskapen LastModified för det underliggande DAO-postuppsättningsobjektet. Det är användbart för att fastställa värdet för räknarfält (automatisk inkrement) i en tillagd post. Mer information finns i GetLastModifiedBookmark.

Om databasen stöder transaktioner kan du göra anropet AddNew till en del av en transaktion. Mer information om transaktioner finns i CDaoWorkspace för klass. Du bör anropa CDaoWorkspace::BeginTrans innan du anropar AddNew.

Det är inte tillåtet att anropa AddNew en postuppsättning vars Open medlemsfunktion inte har anropats. En CDaoException utlöses om du anropar AddNew en postuppsättning som inte kan läggas till. Du kan avgöra om postuppsättningen kan uppdateras genom att anropa CanAppend.

Ramverket markerar ändrade fältdatamedlemmar för att säkerställa att de skrivs till posten på datakällan av DAO-mekanismen för postfältutbyte (DFX). Om du ändrar värdet för ett fält blir fältet vanligtvis smutsigt automatiskt, så du behöver sällan anropa SetFieldDirty själv, men ibland kanske du vill se till att kolumnerna uppdateras eller infogas uttryckligen oavsett vilket värde som finns i fältdatamedlemmen. DFX-mekanismen använder också användningen av PSEUDO NULL. Mer information finns i CDaoFieldExchange::m_nOperation.

Om dubbelbuffertningsmekanismen inte används, så anger inte fältets värde automatiskt som smutsigt. I det här fallet är det nödvändigt att uttryckligen ange fältet smutsigt. Flaggan i m_bCheckCacheForDirtyFields styr den här automatiska fältkontrollen.

Anmärkning

Om posterna är dubbelbuffertade (dvs. automatisk fältkontroll är aktiverad) återställer anropet CancelUpdate medlemsvariablerna till de värden som de hade tidigare AddNew eller Edit anropades.

Relaterad information finns i avsnitten "AddNew Method", "CancelUpdate Method", "LastModified Property" och "EditMode Property" i DAO-hjälpen.

CDaoRecordset::CanAppend

Anropa den här medlemsfunktionen för att avgöra om den tidigare öppnade postuppsättningen låter dig lägga till nya poster genom att anropa funktionen Lägg tillNy medlem.

BOOL CanAppend() const;

Returvärde

Nonzero om postuppsättningen tillåter att nya poster läggs till. annars 0. CanAppend returnerar 0 om du öppnade postuppsättningen som skrivskyddad.

Anmärkningar

Relaterad information finns i avsnittet "Tilläggsmetod" i DAO-hjälpen.

CDaoRecordset::CanBookmark

Anropa den här medlemsfunktionen för att avgöra om den tidigare öppnade postuppsättningen gör att du kan markera poster individuellt med hjälp av bokmärken.

BOOL CanBookmark();

Returvärde

Nonzero om postuppsättningen stöder bokmärken, annars 0.

Anmärkningar

Om du använder postuppsättningar som helt baseras på Microsoft Jet-databasmotortabeller kan bokmärken användas förutom på postuppsättningar av ögonblicksbildstyp som flaggas som framåtriktade rullningsposter. Andra databasprodukter (externa ODBC-datakällor) kanske inte stöder bokmärken.

Relaterad information finns i avsnittet "Bookmarkable Property" (Bokmärkesbar egenskap) i DAO-hjälpen.

CDaoRecordset::CancelUpdate

Medlemsfunktionen CancelUpdate avbryter väntande uppdateringar på grund av en åtgärd för att redigera eller lägga tillNy .

virtual void CancelUpdate();

Anmärkningar

Om ett program till exempel anropar Edit eller AddNew medlemsfunktionen och inte har anropat Updateavbryter CancelUpdate eventuella ändringar som gjorts efter Edit eller AddNew anropades.

Anmärkning

Om posterna är dubbelbuffertade (dvs. automatisk fältkontroll är aktiverad) återställer anropet CancelUpdate medlemsvariablerna till de värden som de hade tidigare AddNew eller Edit anropades.

Om det inte finns någon Edit väntande åtgärd eller AddNew åtgärd gör CancelUpdate att MFC utlöser ett undantag. Anropa funktionen GetEditMode-medlem för att avgöra om det finns en väntande åtgärd som kan avbrytas.

Relaterad information finns i avsnittet "CancelUpdate-metod" i DAO-hjälpen.

CDaoRecordset::CanRestart

Anropa den här medlemsfunktionen för att avgöra om postuppsättningen tillåter omstart av frågan (för att uppdatera dess poster) genom att anropa Requery medlemsfunktionen.

BOOL CanRestart();

Returvärde

Nonzero om Requery kan anropas för att köra postuppsättningens fråga igen, annars 0.

Anmärkningar

Postuppsättningar av tabelltyp stöder Requeryinte .

Om Requery stöds inte anropar du Stängoch öppnar sedan för att uppdatera data. Du kan anropa Requery för att uppdatera ett postuppsättningsobjekts underliggande parameterfråga när parametervärdena har ändrats.

Relaterad information finns i avsnittet "Omstartsbar egenskap" i DAO-hjälpen.

CDaoRecordset::CanScroll

Anropa den här medlemsfunktionen för att avgöra om postuppsättningen tillåter rullning.

BOOL CanScroll() const;

Returvärde

Nonzero om du kan bläddra igenom posterna, annars 0.

Anmärkningar

Om du anropar Öppna med dbForwardOnlykan postuppsättningen bara rulla framåt.

Relaterad information finns i avsnittet "Positionering av aktuell postpekare med DAO" i DAO-hjälpen.

CDaoRecordset::CanTransact

Anropa den här medlemsfunktionen för att avgöra om postuppsättningen tillåter transaktioner.

BOOL CanTransact();

Returvärde

Nonzero om den underliggande datakällan stöder transaktioner, annars 0.

Anmärkningar

Relaterad information finns i avsnittet "Transaktionsegenskap" i DAO-hjälpen.

CDaoRecordset::CanUpdate

Anropa den här medlemsfunktionen för att avgöra om postuppsättningen kan uppdateras.

BOOL CanUpdate() const;

Returvärde

Nonzero om postuppsättningen kan uppdateras (lägg till, uppdatera och ta bort poster), annars 0.

Anmärkningar

En postuppsättning kan vara skrivskyddad om den underliggande datakällan är skrivskyddad eller om du angav dbReadOnly för nAlternativ när du anropade Öppna för postuppsättningen.

Relaterad information finns i avsnitten "AddNew Method", "Edit Method", "Delete Method", "Update Method" och "Updatable Property" i DAO-hjälpen.

CDaoRecordset::CDaoRecordset

Konstruerar ett CDaoRecordset objekt.

CDaoRecordset(CDaoDatabase* pDatabase = NULL);

Parameterar

pDatabase
Innehåller en pekare till ett CDaoDatabase-objekt eller värdet NULL. Om inte NULL och CDaoDatabase objektets medlemsfunktion inte har anropats Open för att ansluta den till datakällan, försöker postuppsättningen öppna den åt dig under sitt eget Öppna-anrop . Om du skickar NULL skapas och ansluts ett CDaoDatabase objekt åt dig med hjälp av den datakällsinformation som du angav om du härledde postuppsättningsklassen från CDaoRecordset.

Anmärkningar

Du kan antingen använda CDaoRecordset direkt eller härleda en programspecifik klass från CDaoRecordset. Du kan använda ClassWizard för att härleda dina postmängdsklasser.

Anmärkning

Om du härleder en CDaoRecordset klass måste din härledda klass ange en egen konstruktor. I konstruktorn för din härledda klass anropar du konstruktorn CDaoRecordset::CDaoRecordsetoch skickar lämpliga parametrar till den.

Skicka NULL till konstruktorn för postuppsättningen så att ett CDaoDatabase objekt skapas och ansluts automatiskt. Det här är en användbar genväg som inte kräver att du skapar och ansluter ett CDaoDatabase objekt innan du skapar postuppsättningen. Om objektet CDaoDatabase inte är öppet skapas även ett CDaoWorkspace-objekt för dig som använder standardarbetsytan. Mer information finns i CDaoDatabase::CDaoDatabase.

CDaoRecordset::Stäng

Om du stänger ett CDaoRecordset objekt tar du bort det från samlingen med öppna postuppsättningar i den associerade databasen.

virtual void Close();

Anmärkningar

Eftersom Close objektet inte förstörs CDaoRecordset kan du återanvända objektet genom att anropa Open samma datakälla eller en annan datakälla.

Alla väntande AddNew - eller Edit-instruktioner avbryts och alla väntande transaktioner återställs. Om du vill bevara väntande tillägg eller redigeringar anropar du Uppdatera innan du anropar Close för varje postuppsättning.

Du kan ringa Open igen efter att du har ringt Close. På så sätt kan du återanvända postuppsättningsobjektet. Ett bättre alternativ är att anropa Requery, om möjligt.

Relaterad information finns i avsnittet "Stäng metod" i DAO-hjälpen.

CDaoRecordset::D elete

Anropa den här medlemsfunktionen för att ta bort den aktuella posten i ett postuppsättningsobjekt av öppen dynasettyp eller tabelltyp.

virtual void Delete();

Anmärkningar

Efter en lyckad borttagning anges postuppsättningens fältdatamedlemmar till ett Null-värde och du måste uttryckligen anropa en av postuppsättningens navigeringsmedlemsfunktioner ( Flytta, Sök, SetBookmark och så vidare) för att kunna flytta bort den borttagna posten. När du tar bort poster från en postuppsättning måste det finnas en aktuell post i postuppsättningen innan du anropar Delete. Annars utlöser MFC ett undantag.

Delete tar bort den aktuella posten och gör den otillgänglig. Även om du inte kan redigera eller använda den borttagna posten förblir den aktuell. När du har flyttat till en annan post kan du dock inte göra den borttagna posten aktuell igen.

Försiktighet

Postuppsättningen måste vara uppdaterad och det måste finnas en giltig post som är aktuell i postuppsättningen när du anropar Delete. Om du till exempel tar bort en post men inte bläddrar till en ny post innan du anropar Delete igen, Delete utlöser en CDaoException.

Du kan ta bort en post om du använder transaktioner och anropar funktionen CDaoWorkspace::Rollback member. Om bastabellen är den primära tabellen i en kaskadborttagningsrelation kan borttagning av den aktuella posten också ta bort en eller flera poster i en sekundär tabell. Mer information finns i definitionen "kaskadborttagning" i DAO-hjälpen.

Till skillnad från AddNew och Editföljs inte ett anrop till Delete av ett anrop till Update.

Relaterad information finns i avsnitten "AddNew Method", "Edit Method", "Delete Method", "Update Method" och "Updatable Property" i DAO-hjälpen.

CDaoRecordset::D oFieldExchange

Ramverket anropar den här medlemsfunktionen för att automatiskt utbyta data mellan fältdatamedlemmarna i postuppsättningsobjektet och motsvarande kolumner i den aktuella posten i datakällan.

virtual void DoFieldExchange(CDaoFieldExchange* pFX);

Parameterar

Pfx
Innehåller en pekare till ett CDaoFieldExchange objekt. Ramverket har redan konfigurerat det här objektet för att ange en kontext för fältutbytesåtgärden.

Anmärkningar

Den binder även eventuella parameterdatamedlemmar till parameterplatshållare i SQL-instruktionssträngen för postuppsättningens val. Utbytet av fältdata, som kallas DAO-postfältutbyte (DFX), fungerar i båda riktningarna: från postuppsättningsobjektets fältdatamedlemmar till postfälten i datakällan och från posten i datakällan till postuppsättningsobjektet. Om du binder kolumner dynamiskt behöver du inte implementera DoFieldExchange.

Den enda åtgärd som du normalt måste vidta för att implementera DoFieldExchange för din härledda postuppsättningsklass är att skapa klassen med ClassWizard och ange namn och datatyper för fältdatamedlemmar. Du kan också lägga till kod i vad ClassWizard skriver för att ange parameterdatamedlemmar. Om alla fält ska bindas dynamiskt är den här funktionen inaktiv om du inte anger parameterdatamedlemmar.

När du deklarerar din härledda postuppsättningsklass med ClassWizard skriver guiden en åsidosättning av DoFieldExchange åt dig, vilket liknar följande exempel:

void CCustSet::DoFieldExchange(CDaoFieldExchange *pFX)
{
   pFX->SetFieldType(CDaoFieldExchange::param);
   DFX_Text(pFX, _T("Param"), m_strParam);
   pFX->SetFieldType(CDaoFieldExchange::outputColumn);
   DFX_Short(pFX, _T("EmployeeID"), m_EmployeeID);
   DFX_Text(pFX, _T("LastName"), m_LastName);
   DFX_Short(pFX, _T("Age"), m_Age);
   DFX_DateTime(pFX, _T("hire_date"), m_hire_date);
   DFX_DateTime(pFX, _T("termination_date"), m_termination_date);

   CDaoRecordset::DoFieldExchange(pFX);
}

CDaoRecordset::Edit

Anropa den här medlemsfunktionen för att tillåta ändringar i den aktuella posten.

virtual void Edit();

Anmärkningar

När du anropar Edit medlemsfunktionen kopieras ändringar som gjorts i den aktuella postens fält till kopieringsbufferten. När du har ändrat posten anropar Update du för att spara ändringarna. Edit sparar värdena för postuppsättningens datamedlemmar. Om du anropar Edit, gör ändringar och sedan anropar Edit igen återställs postens värden till vad de var före det första Edit anropet.

Försiktighet

Om du redigerar en post och sedan utför en åtgärd som flyttas till en annan post utan att först anropa Updategår ändringarna förlorade utan förvarning. Om du stänger postuppsättningen eller den överordnade databasen ignoreras dessutom den redigerade posten utan förvarning.

I vissa fall kanske du vill uppdatera en kolumn genom att göra den till Null (innehåller inga data). Det gör du genom att anropa SetFieldNull med en parameter av TRUE för att markera fältet Null. Detta gör också att kolumnen uppdateras. Om du vill att ett fält ska skrivas till datakällan trots att dess värde inte har ändrats anropar du SetFieldDirty med parametern TRUE. Detta fungerar även om fältet hade värdet Null.

Ramverket markerar ändrade fältdatamedlemmar för att säkerställa att de skrivs till posten på datakällan av DAO-mekanismen för postfältutbyte (DFX). Om du ändrar värdet för ett fält blir fältet vanligtvis smutsigt automatiskt, så du behöver sällan anropa SetFieldDirty själv, men ibland kanske du vill se till att kolumnerna uppdateras eller infogas uttryckligen oavsett vilket värde som finns i fältdatamedlemmen. DFX-mekanismen använder också användningen av PSEUDO NULL. Mer information finns i CDaoFieldExchange::m_nOperation.

Om dubbelbuffertningsmekanismen inte används, så anger inte fältets värde automatiskt som smutsigt. I det här fallet är det nödvändigt att uttryckligen ange fältet smutsigt. Flaggan i m_bCheckCacheForDirtyFields styr den här automatiska fältkontrollen.

När postuppsättningsobjektet är pessimistiskt låst i en miljö med flera användare förblir posten låst från tiden Edit tills uppdateringen är klar. Om postuppsättningen är optimistiskt låst låses posten och jämförs med den förredigerade posten precis innan den uppdateras i databasen. Om posten har ändrats sedan du anropade EditUpdate misslyckas åtgärden och MFC genererar ett undantag. Du kan ändra låsningsläget med SetLockingMode.

Anmärkning

Optimistisk låsning används alltid i externa databasformat, till exempel ODBC och installationsbar ISAM.

Den aktuella posten förblir aktuell när du anropar Edit. Om du vill anropa Editmåste det finnas en aktuell post. Om det inte finns någon aktuell post eller om postuppsättningen inte refererar till ett öppet postuppsättningsobjekt av tabelltyp eller dynasettyp inträffar ett undantag. Anrop Edit gör att en CDaoException utlöses under följande förhållanden:

  • Det finns ingen aktuell post.

  • Databasen eller postuppsättningen är skrivskyddad.

  • Inga fält i posten är uppdaterade.

  • Databasen eller postuppsättningen öppnades för exklusiv användning av en annan användare.

  • En annan användare har låst sidan som innehåller din post.

Om datakällan stöder transaktioner kan du göra anropsdelen Edit av en transaktion. Du bör anropa CDaoWorkspace::BeginTrans innan du anropar Edit och när postuppsättningen har öppnats. Samtal CDaoWorkspace::CommitTrans är inte en ersättning för att anropa Update för att slutföra Edit åtgärden. Mer information om transaktioner finns i klassen CDaoWorkspace.

Relaterad information finns i avsnitten "AddNew Method", "Edit Method", "Delete Method", "Update Method" och "Updatable Property" i DAO-hjälpen.

CDaoRecordset::FillCache

Anropa den här medlemsfunktionen för att cachelagra ett angivet antal poster från postuppsättningen.

void FillCache(
    long* pSize = NULL,
    COleVariant* pBookmark = NULL);

Parameterar

Psize
Anger antalet rader som ska fyllas i cacheminnet. Om du utelämnar den här parametern bestäms värdet av egenskapen CacheSize för det underliggande DAO-objektet.

pBokmärke
En COleVariant som anger ett bokmärke. Cacheminnet fylls från den post som anges av det här bokmärket. Om du utelämnar den här parametern fylls cacheminnet från den post som anges av egenskapen CacheStart för det underliggande DAO-objektet.

Anmärkningar

Cachelagring förbättrar prestandan för ett program som hämtar eller hämtar data från en fjärrserver. En cache är utrymme i lokalt minne som innehåller de data som senast hämtades från servern under antagandet att data förmodligen kommer att begäras igen medan programmet körs. När data begärs kontrollerar Microsoft Jet-databasmotorn cachen efter data först i stället för att hämta dem från servern, vilket tar längre tid. Att använda datacachelagring på icke-ODBC-datakällor har ingen effekt eftersom data inte sparas i cacheminnet.

I stället för att vänta på att cachen ska fyllas med poster när de hämtas kan du uttryckligen fylla cachen när som helst genom att anropa FillCache medlemsfunktionen. Det här är ett snabbare sätt att fylla cacheminnet eftersom FillCache hämtar flera poster samtidigt i stället för en i taget. Även om varje skärmbild av poster till exempel visas kan du låta ditt program anropa FillCache för att hämta nästa skärm med poster.

Alla ODBC-databaser som används med postuppsättningsobjekt kan ha en lokal cache. Om du vill skapa cacheminnet öppnar du ett postuppsättningsobjekt från fjärrdatakällan och anropar sedan postuppsättningens SetCacheSize medlemsfunktioner och SetCacheStart . Om lSize och lBookmark skapar ett intervall som delvis eller helt ligger utanför det intervall som anges av SetCacheSize och SetCacheStartignoreras delen av postmängden utanför det här intervallet och läses inte in i cacheminnet. Om FillCache begär fler poster än som finns kvar i fjärrdatakällan hämtas endast de återstående posterna och inget undantag utlöses.

Poster som hämtas från cacheminnet återspeglar inte ändringar som gjorts samtidigt i källdata från andra användare.

FillCache hämtar endast poster som inte redan har cachelagrats. Om du vill framtvinga en uppdatering av alla cachelagrade data anropar SetCacheSize du medlemsfunktionen med en lSize-parameter lika med 0, anropar SetCacheSize igen med parametern lSize lika med storleken på cachen som du ursprungligen begärde och anropar FillCachesedan .

Relaterad information finns i avsnittet "FillCache-metod" i DAO-hjälpen.

CDaoRecordset::Find

Anropa den här medlemsfunktionen för att hitta en viss sträng i en postuppsättning av dynaset- eller ögonblicksbildstyp med hjälp av en jämförelseoperator.

virtual BOOL Find(
    long lFindType,
    LPCTSTR lpszFilter);

Parameterar

lFindType
Ett värde som anger vilken typ av sökåtgärd som du vill använda. Möjliga värden är:

  • AFX_DAO_NEXT Hitta nästa plats för en matchande sträng.

  • AFX_DAO_PREV Hitta den tidigare platsen för en matchande sträng.

  • AFX_DAO_FIRST Hitta den första platsen för en matchande sträng.

  • AFX_DAO_LAST Hitta den sista platsen för en matchande sträng.

lpszFilter
Ett stränguttryck (som WHERE-satsen i en SQL-instruktion utan ordet WHERE) som används för att hitta posten. Till exempel:

rs.Find(AFX_DAO_FIRST, _T("EmployeeID = 7"));
rs.Find(AFX_DAO_NEXT, _T("LastName = 'Jones'"));

Returvärde

Nonzero om matchande poster hittas, annars 0.

Anmärkningar

Du hittar den första, nästa, föregående eller sista instansen av strängen. Find är en virtuell funktion, så du kan åsidosätta den och lägga till din egen implementering. Medlemsfunktionerna , , och anropar FindFirst medlemsfunktionen, så att du kan använda FindLast för att styra beteendet för alla Sök-åtgärder.FindNextFindPrevFindFind

Om du vill hitta en post i en postuppsättning av tabelltyp anropar du funktionen Sök medlem.

Tips/Råd

Ju mindre uppsättning poster du har, desto effektivare Find är det. I allmänhet, och särskilt med ODBC-data, är det bättre att skapa en ny fråga som hämtar bara de poster du vill ha.

Relaterad information finns i avsnittet "FindFirst, FindLast, FindNext, FindPrevious Methods" i DAO-hjälpen.

CDaoRecordset::FindFirst

Anropa den här medlemsfunktionen för att hitta den första posten som matchar ett angivet villkor.

BOOL FindFirst(LPCTSTR lpszFilter);

Parameterar

lpszFilter
Ett stränguttryck (som WHERE-satsen i en SQL-instruktion utan ordet WHERE) som används för att hitta posten.

Returvärde

Nonzero om matchande poster hittas, annars 0.

Anmärkningar

Medlemsfunktionen FindFirst påbörjar sökningen från början av postuppsättningen och söker till slutet av postuppsättningen.

Om du vill inkludera alla poster i sökningen (inte bara de som uppfyller ett visst villkor) använder du en av flyttåtgärderna för att flytta från post till post. Om du vill hitta en post i en postuppsättning av tabelltyp anropar du Seek medlemsfunktionen.

Om en post som matchar kriterierna inte finns är den aktuella postpekaren obestämd och FindFirst returnerar noll. Om postuppsättningen innehåller mer än en post som uppfyller kriterierna FindFirst letar du upp den första förekomsten, FindNext letar upp nästa förekomst och så vidare.

Försiktighet

Om du redigerar den aktuella posten måste du spara ändringarna genom att anropa Update medlemsfunktionen innan du flyttar till en annan post. Om du flyttar till en annan post utan att uppdatera går ändringarna förlorade utan förvarning.

Medlemsfunktionerna Find söker från platsen och i den riktning som anges i följande tabell:

Hitta åtgärder Börja Sökriktning
FindFirst Början av postuppsättningen Slut på postuppsättning
FindLast Slut på postuppsättning Början av postuppsättningen
FindNext Aktuell post Slut på postuppsättning
FindPrevious Aktuell post Början av postuppsättningen

Anmärkning

När du anropar FindLastfyller Microsoft Jet-databasmotorn i postuppsättningen helt innan sökningen påbörjas, om detta inte redan har gjorts. Den första sökningen kan ta längre tid än efterföljande sökningar.

Att använda någon av sökåtgärderna är dock inte samma sak som att anropa MoveFirst eller MoveNext, vilket helt enkelt gör den första eller nästa posten aktuell utan att ange ett villkor. Du kan följa en Sök-åtgärd med en Flytta-åtgärd.

Tänk på följande när du använder sökåtgärderna:

  • Om Find returnerar nonzero definieras inte den aktuella posten. I det här fallet måste du placera den aktuella postpekaren tillbaka till en giltig post.

  • Du kan inte använda en Sök-åtgärd med en framåtriktad rullningspostuppsättning av ögonblicksbildstyp.

  • Du bör använda det amerikanska datumformatet (månad-dag-år) när du söker efter fält som innehåller datum, även om du inte använder den amerikanska versionen av Microsoft Jet-databasmotorn. annars kan det hända att matchande poster inte hittas.

  • När du arbetar med ODBC-databaser och stora dynasets kan du upptäcka att det går långsamt att använda Find-åtgärderna, särskilt när du arbetar med stora postuppsättningar. Du kan förbättra prestanda genom att använda SQL-frågor med anpassade ORDERBY- eller WHERE-satser, parameterfrågor eller CDaoQuerydef objekt som hämtar specifika indexerade poster.

Relaterad information finns i avsnittet "FindFirst, FindLast, FindNext, FindPrevious Methods" i DAO-hjälpen.

CDaoRecordset::FindLast

Anropa den här medlemsfunktionen för att hitta den sista posten som matchar ett angivet villkor.

BOOL FindLast(LPCTSTR lpszFilter);

Parameterar

lpszFilter
Ett stränguttryck (som WHERE-satsen i en SQL-instruktion utan ordet WHERE) som används för att hitta posten.

Returvärde

Nonzero om matchande poster hittas, annars 0.

Anmärkningar

Medlemsfunktionen FindLast påbörjar sökningen i slutet av postuppsättningen och söker bakåt mot början av postuppsättningen.

Om du vill inkludera alla poster i sökningen (inte bara de som uppfyller ett visst villkor) använder du en av flyttåtgärderna för att flytta från post till post. Om du vill hitta en post i en postuppsättning av tabelltyp anropar du Seek medlemsfunktionen.

Om en post som matchar kriterierna inte finns är den aktuella postpekaren obestämd och FindLast returnerar noll. Om postuppsättningen innehåller mer än en post som uppfyller kriterierna FindFirst letar du upp den första förekomsten, FindNext letar upp nästa förekomst efter den första förekomsten och så vidare.

Försiktighet

Om du redigerar den aktuella posten måste du spara ändringarna genom att anropa Update medlemsfunktionen innan du flyttar till en annan post. Om du flyttar till en annan post utan att uppdatera går ändringarna förlorade utan förvarning.

Att använda någon av sökåtgärderna är dock inte samma sak som att anropa MoveFirst eller MoveNext, vilket helt enkelt gör den första eller nästa posten aktuell utan att ange ett villkor. Du kan följa en Sök-åtgärd med en Flytta-åtgärd.

Tänk på följande när du använder sökåtgärderna:

  • Om Find returnerar nonzero definieras inte den aktuella posten. I det här fallet måste du placera den aktuella postpekaren tillbaka till en giltig post.

  • Du kan inte använda en Sök-åtgärd med en framåtriktad rullningspostuppsättning av ögonblicksbildstyp.

  • Du bör använda det amerikanska datumformatet (månad-dag-år) när du söker efter fält som innehåller datum, även om du inte använder den amerikanska versionen av Microsoft Jet-databasmotorn. annars kan det hända att matchande poster inte hittas.

  • När du arbetar med ODBC-databaser och stora dynasets kan du upptäcka att det går långsamt att använda Find-åtgärderna, särskilt när du arbetar med stora postuppsättningar. Du kan förbättra prestanda genom att använda SQL-frågor med anpassade ORDERBY- eller WHERE-satser, parameterfrågor eller CDaoQuerydef objekt som hämtar specifika indexerade poster.

Relaterad information finns i avsnittet "FindFirst, FindLast, FindNext, FindPrevious Methods" i DAO-hjälpen.

CDaoRecordset::FindNext

Anropa den här medlemsfunktionen för att hitta nästa post som matchar ett angivet villkor.

BOOL FindNext(LPCTSTR lpszFilter);

Parameterar

lpszFilter
Ett stränguttryck (som WHERE-satsen i en SQL-instruktion utan ordet WHERE) som används för att hitta posten.

Returvärde

Nonzero om matchande poster hittas, annars 0.

Anmärkningar

Medlemsfunktionen FindNext påbörjar sökningen i den aktuella posten och söker i slutet av postuppsättningen.

Om du vill inkludera alla poster i sökningen (inte bara de som uppfyller ett visst villkor) använder du en av flyttåtgärderna för att flytta från post till post. Om du vill hitta en post i en postuppsättning av tabelltyp anropar du Seek medlemsfunktionen.

Om en post som matchar kriterierna inte finns är den aktuella postpekaren obestämd och FindNext returnerar noll. Om postuppsättningen innehåller mer än en post som uppfyller kriterierna FindFirst letar du upp den första förekomsten, FindNext letar upp nästa förekomst och så vidare.

Försiktighet

Om du redigerar den aktuella posten måste du spara ändringarna genom att anropa Update medlemsfunktionen innan du flyttar till en annan post. Om du flyttar till en annan post utan att uppdatera går ändringarna förlorade utan förvarning.

Att använda någon av sökåtgärderna är dock inte samma sak som att anropa MoveFirst eller MoveNext, vilket helt enkelt gör den första eller nästa posten aktuell utan att ange ett villkor. Du kan följa en Sök-åtgärd med en Flytta-åtgärd.

Tänk på följande när du använder sökåtgärderna:

  • Om Find returnerar nonzero definieras inte den aktuella posten. I det här fallet måste du placera den aktuella postpekaren tillbaka till en giltig post.

  • Du kan inte använda en Sök-åtgärd med en framåtriktad rullningspostuppsättning av ögonblicksbildstyp.

  • Du bör använda det amerikanska datumformatet (månad-dag-år) när du söker efter fält som innehåller datum, även om du inte använder den amerikanska versionen av Microsoft Jet-databasmotorn. annars kan det hända att matchande poster inte hittas.

  • När du arbetar med ODBC-databaser och stora dynasets kan du upptäcka att det går långsamt att använda Find-åtgärderna, särskilt när du arbetar med stora postuppsättningar. Du kan förbättra prestanda genom att använda SQL-frågor med anpassade ORDERBY- eller WHERE-satser, parameterfrågor eller CDaoQuerydef objekt som hämtar specifika indexerade poster.

Relaterad information finns i avsnittet "FindFirst, FindLast, FindNext, FindPrevious Methods" i DAO-hjälpen.

CDaoRecordset::FindPrev

Anropa den här medlemsfunktionen för att hitta den tidigare posten som matchar ett angivet villkor.

BOOL FindPrev(LPCTSTR lpszFilter);

Parameterar

lpszFilter
Ett stränguttryck (som WHERE-satsen i en SQL-instruktion utan ordet WHERE) som används för att hitta posten.

Returvärde

Nonzero om matchande poster hittas, annars 0.

Anmärkningar

Medlemsfunktionen FindPrev börjar söka i den aktuella posten och söker bakåt mot början av postuppsättningen.

Om du vill inkludera alla poster i sökningen (inte bara de som uppfyller ett visst villkor) använder du en av flyttåtgärderna för att flytta från post till post. Om du vill hitta en post i en postuppsättning av tabelltyp anropar du Seek medlemsfunktionen.

Om en post som matchar kriterierna inte finns är den aktuella postpekaren obestämd och FindPrev returnerar noll. Om postuppsättningen innehåller mer än en post som uppfyller kriterierna FindFirst letar du upp den första förekomsten, FindNext letar upp nästa förekomst och så vidare.

Försiktighet

Om du redigerar den aktuella posten måste du spara ändringarna genom att anropa Update medlemsfunktionen innan du flyttar till en annan post. Om du flyttar till en annan post utan att uppdatera går ändringarna förlorade utan förvarning.

Att använda någon av sökåtgärderna är dock inte samma sak som att anropa MoveFirst eller MoveNext, vilket helt enkelt gör den första eller nästa posten aktuell utan att ange ett villkor. Du kan följa en Sök-åtgärd med en Flytta-åtgärd.

Tänk på följande när du använder sökåtgärderna:

  • Om Find returnerar nonzero definieras inte den aktuella posten. I det här fallet måste du placera den aktuella postpekaren tillbaka till en giltig post.

  • Du kan inte använda en Sök-åtgärd med en framåtriktad rullningspostuppsättning av ögonblicksbildstyp.

  • Du bör använda det amerikanska datumformatet (månad-dag-år) när du söker efter fält som innehåller datum, även om du inte använder den amerikanska versionen av Microsoft Jet-databasmotorn. annars kan det hända att matchande poster inte hittas.

  • När du arbetar med ODBC-databaser och stora dynasets kan du upptäcka att det går långsamt att använda Find-åtgärderna, särskilt när du arbetar med stora postuppsättningar. Du kan förbättra prestanda genom att använda SQL-frågor med anpassade ORDERBY- eller WHERE-satser, parameterfrågor eller CDaoQuerydef objekt som hämtar specifika indexerade poster.

Relaterad information finns i avsnittet "FindFirst, FindLast, FindNext, FindPrevious Methods" i DAO-hjälpen.

CDaoRecordset::GetAbsolutePosition

Returnerar postnumret för ett postuppsättningsobjekts aktuella post.

long GetAbsolutePosition();

Returvärde

Ett heltal från 0 till antalet poster i postuppsättningen. Motsvarar den aktuella postens ordningstal i postuppsättningen.

Anmärkningar

Egenskapen AbsolutePosition för det underliggande DAO-objektet är nollbaserat. en inställning på 0 refererar till den första posten i postuppsättningen. Du kan fastställa antalet ifyllda poster i postuppsättningen genom att anropa GetRecordCount. Det kan ta lite tid att ringa GetRecordCount eftersom det måste komma åt alla poster för att fastställa antalet.

Om det inte finns någon aktuell post, som när det inte finns några poster i postuppsättningen, returneras - 1. Om den aktuella posten tas bort definieras inte egenskapen AbsolutePosition och MFC utlöser ett undantag om det refereras. För postuppsättningar av dynasettyp läggs nya poster till i slutet av sekvensen.

Anmärkning

Den här egenskapen är inte avsedd att användas som ett surrogatpostnummer. Bokmärken är fortfarande det rekommenderade sättet att behålla och återgå till en viss position och är det enda sättet att placera den aktuella posten över alla typer av postuppsättningsobjekt. I synnerhet ändras positionen för en viss post när poster som föregår den tas bort. Det finns inte heller någon garanti för att en viss post har samma absoluta position om postuppsättningen återskapas igen eftersom ordningen på enskilda poster i en postuppsättning inte garanteras om den inte skapas med en SQL-instruktion med hjälp av en ORDERBY-sats .

Anmärkning

Den här medlemsfunktionen är endast giltig för postuppsättningar av dynasettyp och ögonblicksbildstyp.

Relaterad information finns i avsnittet "AbsolutePosition Property" i DAO-hjälpen.

CDaoRecordset::GetBookmark

Anropa den här medlemsfunktionen för att hämta bokmärkesvärdet i en viss post.

COleVariant GetBookmark();

Returvärde

Returnerar ett värde som representerar bokmärket på den aktuella posten.

Anmärkningar

När ett postuppsättningsobjekt skapas eller öppnas har var och en av dess poster redan ett unikt bokmärke om det stöder dem. Anropa CanBookmark för att avgöra om en postuppsättning stöder bokmärken.

Du kan spara bokmärket för den aktuella posten genom att tilldela värdet för bokmärket till ett COleVariant objekt. Om du snabbt vill återgå till posten när du har flyttat till en annan post anropar du SetBookmark med en parameter som motsvarar värdet för objektet COleVariant .

Anmärkning

Anropa requery ändrar DAO-bokmärken.

Relaterad information finns i avsnittet "Bokmärkesegenskap" i DAO-hjälpen.

CDaoRecordset::GetCacheSize

Anropa den här medlemsfunktionen för att hämta antalet cachelagrade poster.

long GetCacheSize();

Returvärde

Ett värde som anger antalet poster i en postuppsättning av dynasettyp som innehåller data som ska cachelagras lokalt från en ODBC-datakälla.

Anmärkningar

Datacachelagring förbättrar prestandan för ett program som hämtar data från en fjärrserver via postuppsättningsobjekt av dynasettyp. En cache är ett utrymme i lokalt minne som innehåller de data som senast hämtades från servern om data begärs igen medan programmet körs. När data begärs kontrollerar Microsoft Jet-databasmotorn cachen efter begärda data först i stället för att hämta dem från servern, vilket tar längre tid. Data som inte kommer från en ODBC-datakälla sparas inte i cacheminnet.

Alla ODBC-datakällor, till exempel en bifogad tabell, kan ha en lokal cache.

Relaterad information finns i avsnittet "CacheSize, CacheStart Properties" i DAO-hjälpen.

CDaoRecordset::GetCacheStart

Anropa den här medlemsfunktionen för att hämta bokmärkesvärdet för den första posten i postuppsättningen som ska cachelagras.

COleVariant GetCacheStart();

Returvärde

En COleVariant som anger bokmärket för den första posten i postuppsättningen som ska cachelagras.

Anmärkningar

Microsoft Jet-databasmotorn begär poster i cacheintervallet från cacheminnet och begär poster utanför cacheintervallet från servern.

Anmärkning

Poster som hämtas från cacheminnet återspeglar inte ändringar som gjorts samtidigt i källdata från andra användare.

Relaterad information finns i avsnittet "CacheSize, CacheStart Properties" i DAO-hjälpen.

CDaoRecordset::GetCurrentIndex

Anropa den här medlemsfunktionen för att fastställa vilket index som för närvarande används i ett indexerat tabelltypobjekt CDaoRecordset .

CString GetCurrentIndex();

Returvärde

En CString som innehåller namnet på det index som för närvarande används med en postuppsättning av tabelltyp. Returnerar en tom sträng om inget index har angetts.

Anmärkningar

Det här indexet är grunden för att sortera poster i en postuppsättning av tabelltyp och används av funktionen Sök medlem för att hitta poster.

Ett CDaoRecordset objekt kan ha fler än ett index men kan bara använda ett index i taget (även om ett CDaoTableDef-objekt kan ha flera index definierade på det).

Relaterad information finns i avsnittet "Indexobjekt" och definitionen "aktuellt index" i DAO-hjälpen.

CDaoRecordset::GetDateCreated

Anropa den här medlemsfunktionen för att hämta datum och tid då en bastabell skapades.

COleDateTime GetDateCreated();

Returvärde

Ett COleDateTime-objekt som innehåller datum och tid då bastabellen skapades.

Anmärkningar

Datum- och tidsinställningar härleds från den dator där bastabellen skapades.

Relaterad information finns i avsnittet "DateCreated, LastUpdated Properties" i DAO-hjälpen.

CDaoRecordset::GetDateLastUpdated

Anropa den här medlemsfunktionen för att hämta datum och tid då schemat senast uppdaterades.

COleDateTime GetDateLastUpdated();

Returvärde

Ett COleDateTime-objekt som innehåller datum och tid då bastabellstrukturen (schemat) senast uppdaterades.

Anmärkningar

Datum- och tidsinställningar härleds från den dator där bastabellstrukturen (schemat) senast uppdaterades.

Relaterad information finns i avsnittet "DateCreated, LastUpdated Properties" i DAO-hjälpen.

CDaoRecordset::GetDefaultDBName

Anropa den här medlemsfunktionen för att fastställa namnet på databasen för den här postuppsättningen.

virtual CString GetDefaultDBName();

Returvärde

En CString som innehåller sökvägen och namnet på databasen som den här postuppsättningen härleds från.

Anmärkningar

Om en postuppsättning skapas utan pekare till en CDaoDatabase används den här sökvägen av postuppsättningen för att öppna standarddatabasen. Som standard returnerar den här funktionen en tom sträng. När ClassWizard härleder en ny postuppsättning från CDaoRecordsetskapar den den här funktionen åt dig.

I följande exempel visas användningen av det dubbla omvänt snedstrecket (\\) i strängen, vilket krävs för att strängen ska tolkas korrekt.

CString CCustSet::GetDefaultDBName()
{
   return _T("c:\\mydir\\datasrc.mdb");
}

CDaoRecordset::GetDefaultSQL

Ramverket anropar den här medlemsfunktionen för att hämta standard-SQL-instruktionen som postuppsättningen baseras på.

virtual CString GetDefaultSQL();

Returvärde

En CString som innehåller SQL-standardsatsen.

Anmärkningar

Det kan vara ett tabellnamn eller en SQL SELECT-instruktion .

Du definierar indirekt SQL-standardsatsen genom att deklarera din postuppsättningsklass med ClassWizard, och ClassWizard utför den här uppgiften åt dig.

Om du skickar en null SQL-sträng till Öppna anropas den här funktionen för att fastställa tabellnamnet eller SQL för postuppsättningen.

CDaoRecordset::GetEditMode

Anropa den här medlemsfunktionen för att fastställa redigeringstillståndet, vilket är ett av följande värden:

short GetEditMode();

Returvärde

Returnerar ett värde som anger redigeringstillståndet för den aktuella posten.

Anmärkningar

Värde Beskrivning
dbEditNone Ingen redigeringsåtgärd pågår.
dbEditInProgress Edit har anropats.
dbEditAdd AddNew har anropats.

Relaterad information finns i avsnittet "EditMode-egenskap" i DAO-hjälpen.

CDaoRecordset::GetFieldCount

Anropa den här medlemsfunktionen för att hämta antalet fält (kolumner) som definierats i postuppsättningen.

short GetFieldCount();

Returvärde

Antalet fält i postuppsättningen.

Anmärkningar

Relaterad information finns i avsnittet "Count Property" (Räkna egenskap) i DAO-hjälpen.

CDaoRecordset::GetFieldInfo

Anropa den här medlemsfunktionen för att hämta information om fälten i en postuppsättning.

void GetFieldInfo(
    int nIndex,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetFieldInfo(
    LPCTSTR lpszName,
    CDaoFieldInfo& fieldinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameterar

nIndex
Det nollbaserade indexet för det fördefinierade fältet i postuppsättningens fältsamling för sökning efter index.

fieldinfo
En referens till en CDaoFieldInfo-struktur .

dwInfoOptions
Alternativ som anger vilken information om postuppsättningen som ska hämtas. De tillgängliga alternativen visas här tillsammans med vad de får funktionen att returnera. För bästa prestanda hämtar du bara den informationsnivå som du behöver:

  • AFX_DAO_PRIMARY_INFO (Standard) Namn, typ, storlek, attribut

  • AFX_DAO_SECONDARY_INFO Primär information, plus: Ordningsposition, obligatorisk, Tillåt noll längd, sorteringsordning, sekundärt namn, källfält, källtabell

  • AFX_DAO_ALL_INFO Primär och sekundär information, plus: Standardvärde, Verifieringsregel, Valideringstext

lpszName
Namnet på fältet.

Anmärkningar

Med en version av funktionen kan du söka efter ett fält efter index. Med den andra versionen kan du leta upp ett fält efter namn.

En beskrivning av den information som returneras finns i CDaoFieldInfo-strukturen . Den här strukturen innehåller medlemmar som motsvarar de informationsobjekt som anges ovan i beskrivningen av dwInfoOptions. När du begär information på en nivå får du även information om tidigare nivåer.

Relaterad information finns i avsnittet "Attributegenskap" i DAO-hjälpen.

CDaoRecordset::GetFieldValue

Anropa den här medlemsfunktionen för att hämta data i en postuppsättning.

virtual void GetFieldValue(
    LPCTSTR lpszName,
    COleVariant& varValue);

virtual void GetFieldValue(
    int nIndex,
    COleVariant& varValue);

virtual COleVariant GetFieldValue(LPCTSTR lpszName);
virtual COleVariant GetFieldValue(int nIndex);

Parameterar

lpszName
En pekare till en sträng som innehåller namnet på ett fält.

varValue
En referens till ett COleVariant objekt som lagrar värdet för ett fält.

nIndex
Ett nollbaserat index för fältet i postuppsättningens fältsamling för sökning efter index.

Returvärde

De två versionerna av GetFieldValue det returnerar ett värde som returnerar ett COleVariant-objekt som innehåller värdet för ett fält.

Anmärkningar

Du kan söka efter ett fält efter namn eller efter ordningstal.

Anmärkning

Det är mer effektivt att anropa en av versionerna av den här medlemsfunktionen som tar en COleVariant objektreferens som en parameter, i stället för att anropa en version som returnerar ett COleVariant objekt. De senare versionerna av den här funktionen behålls för bakåtkompatibilitet.

Använd GetFieldValue och SetFieldValue för att dynamiskt binda fält vid körning i stället för statisk bindning av kolumner med hjälp av DoFieldExchange-mekanismen .

GetFieldValue och mekanismen DoFieldExchange kan kombineras för att förbättra prestandan. Använd till exempel GetFieldValue för att hämta ett värde som du bara behöver på begäran och tilldela det anropet till knappen "Mer information" i gränssnittet.

Relaterad information finns i avsnitten "Fältobjekt" och "Värdeegenskap" i DAO-hjälpen.

CDaoRecordset::GetIndexCount

Anropa den här medlemsfunktionen för att fastställa antalet index som är tillgängliga i postuppsättningen av tabelltyp.

short GetIndexCount();

Returvärde

Antalet index i postuppsättningen av tabelltyp.

Anmärkningar

GetIndexCount är användbart för att loopa igenom alla index i postuppsättningen. För det ändamålet använder du GetIndexCount med GetIndexInfo. Om du anropar den här medlemsfunktionen på postuppsättningar av dynasettyp eller ögonblicksbildstyp utlöser MFC ett undantag.

Relaterad information finns i avsnittet "Attributegenskap" i DAO-hjälpen.

CDaoRecordset::GetIndexInfo

Anropa den här medlemsfunktionen för att hämta olika typer av information om ett index som definierats i bastabellen som ligger bakom en postuppsättning.

void GetIndexInfo(
    int nIndex,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

void GetIndexInfo(
    LPCTSTR lpszName,
    CDaoIndexInfo& indexinfo,
    DWORD dwInfoOptions = AFX_DAO_PRIMARY_INFO);

Parameterar

nIndex
Det nollbaserade indexet i tabellens indexsamling för sökning efter numerisk position.

indexinfo
En referens till en CDaoIndexInfo-struktur .

dwInfoOptions
Alternativ som anger vilken information om indexet som ska hämtas. De tillgängliga alternativen visas här tillsammans med vad de får funktionen att returnera. För bästa prestanda hämtar du bara den informationsnivå som du behöver:

  • AFX_DAO_PRIMARY_INFO (Standard) Namn, Fältinformation, Fält

  • AFX_DAO_SECONDARY_INFO Primär information, plus: Primär, Unik, Klustrad, IgnoreNulls, Obligatorisk, Sekundär

  • AFX_DAO_ALL_INFO Primär och sekundär information, plus: Distinkt antal

lpszName
En pekare till namnet på indexobjektet för uppslag efter namn.

Anmärkningar

Med en version av funktionen kan du slå upp ett index efter dess position i samlingen. Med den andra versionen kan du slå upp ett index efter namn.

En beskrivning av den information som returneras finns i CDaoIndexInfo-strukturen . Den här strukturen innehåller medlemmar som motsvarar de informationsobjekt som anges ovan i beskrivningen av dwInfoOptions. När du begär information på en nivå får du även information om tidigare nivåer.

Relaterad information finns i avsnittet "Attributegenskap" i DAO-hjälpen.

CDaoRecordset::GetLastModifiedBookmark

Anropa den här medlemsfunktionen för att hämta bokmärket för den senast tillagda eller uppdaterade posten.

COleVariant GetLastModifiedBookmark();

Returvärde

Ett COleVariant som innehåller ett bokmärke som anger den senast tillagda eller ändrade posten.

Anmärkningar

När ett postuppsättningsobjekt skapas eller öppnas har var och en av dess poster redan ett unikt bokmärke om det stöder dem. Anropa GetBookmark för att avgöra om postuppsättningen stöder bokmärken. Om postuppsättningen inte stöder bokmärken genereras en CDaoException .

När du lägger till en post visas den i slutet av postuppsättningen och är inte den aktuella posten. Om du vill göra den nya posten aktuell anropar GetLastModifiedBookmark du och anropar SetBookmark sedan för att återgå till den nyligen tillagda posten.

Relaterad information finns i avsnittet "LastModified Property" i DAO-hjälpen.

CDaoRecordset::GetLockingMode

Anropa den här medlemsfunktionen för att fastställa vilken typ av låsning som gäller för postuppsättningen.

BOOL GetLockingMode();

Returvärde

Nonzero om typen av låsning är pessimistisk, annars 0 för optimistisk postlåsning.

Anmärkningar

När pessimistisk låsning är i kraft låses datasidan som innehåller den post som du redigerar så fort du anropar funktionen Redigera medlem. Sidan låss upp när du anropar funktionen Uppdatera eller Stäng medlem eller någon av åtgärderna Flytta eller Hitta.

När optimistisk låsning är i kraft låses datasidan som innehåller posten endast medan posten uppdateras med Update medlemsfunktionen.

När du arbetar med ODBC-datakällor är låsläget alltid optimistiskt.

Relaterad information finns i avsnitten "LockEdits Property" och "Locking Behavior in Multiuser Applications" i DAO-hjälpen.

CDaoRecordset::GetName

Anropa den här medlemsfunktionen för att hämta namnet på postuppsättningen.

CString GetName();

Returvärde

En CString som innehåller namnet på postuppsättningen.

Anmärkningar

Namnet på postuppsättningen måste börja med en bokstav och får innehålla högst 40 tecken. Den kan innehålla siffror och understreck, men kan inte innehålla skiljetecken eller blanksteg.

Relaterad information finns i avsnittet "Namnegenskap" i DAO-hjälpen.

CDaoRecordset::GetParamValue

Anropa den här medlemsfunktionen för att hämta det aktuella värdet för den angivna parametern som lagras i det underliggande DAOParameter-objektet.

virtual COleVariant GetParamValue(int nIndex);
virtual COleVariant GetParamValue(LPCTSTR lpszName);

Parameterar

nIndex
Parameterns numeriska position i det underliggande DAOParameter-objektet.

lpszName
Namnet på parametern vars värde du vill ha.

Returvärde

Ett objekt av klassen COleVariant som innehåller parameterns värde.

Anmärkningar

Du kan komma åt parametern antingen efter namn eller efter dess numeriska position i samlingen.

Relaterad information finns i avsnittet "Parameterobjekt" i DAO-hjälpen.

CDaoRecordset::GetPercentPosition

När du arbetar med en postuppsättning av dynasettyp eller ögonblicksbildstyp, om du anropar GetPercentPosition innan du fyller i postuppsättningen fullt ut, är mängden rörelse i förhållande till det antal poster som används, vilket anges genom att anropa GetRecordCount.

float GetPercentPosition();

Returvärde

Ett tal mellan 0 och 100 som anger den ungefärliga platsen för den aktuella posten i postuppsättningsobjektet baserat på en procentandel av posterna i postuppsättningen.

Anmärkningar

Du kan flytta till den sista posten genom att anropa MoveLast för att slutföra populationen av alla postuppsättningar, men det kan ta mycket tid.

Du kan anropa GetPercentPosition alla tre typerna av postuppsättningsobjekt, inklusive tabeller utan index. Du kan dock inte anropa GetPercentPosition framåtriktade rullningsögonblicksbilder eller på en postuppsättning som öppnas från en direktfråga mot en extern databas. Om det inte finns någon aktuell post, eller om den aktuella posten har tagits bort, genereras en CDaoException .

Relaterad information finns i avsnittet "PercentPosition-egenskap" i DAO-hjälpen.

CDaoRecordset::GetRecordCount

Anropa den här medlemsfunktionen för att ta reda på hur många poster i en postuppsättning som har använts.

long GetRecordCount();

Returvärde

Returnerar antalet poster som används i ett postuppsättningsobjekt.

Anmärkningar

GetRecordCount anger inte hur många poster som finns i en postuppsättning av dynasettyp eller ögonblicksbildstyp förrän alla poster har använts. Det kan ta lång tid att slutföra det här medlemsfunktionsanropet.

När den senaste posten har använts anger returvärdet det totala antalet odefinierade poster i postuppsättningen. Om du vill tvinga den sista posten att nås anropar du MoveLast funktionen eller FindLast medlemsfunktionen för postuppsättningen. Du kan också använda ett SQL-antal för att fastställa det ungefärliga antalet poster som din fråga ska returnera.

När ditt program tar bort poster i en postuppsättning av GetRecordCount dynasettyp minskar returvärdet. Poster som tagits bort av andra användare återspeglas dock inte förrän GetRecordCount den aktuella posten har placerats till en borttagen post. Om du kör en transaktion som påverkar antalet poster och sedan återställer transaktionen GetRecordCount återspeglar inte det faktiska antalet återstående poster.

Värdet för från en postuppsättning av GetRecordCount ögonblicksbildstyp påverkas inte av ändringar i de underliggande tabellerna.

Värdet för från en postuppsättning av GetRecordCount tabelltyp återspeglar det ungefärliga antalet poster i tabellen och påverkas omedelbart när tabellposter läggs till och tas bort.

En postuppsättning utan poster returnerar värdet 0. När du arbetar med anslutna tabeller eller ODBC-databaser returneras GetRecordCount alltid – 1. Requery Om du anropar medlemsfunktionen på en postuppsättning återställs värdet GetRecordCount för precis som om frågan kördes igen.

Relaterad information finns i avsnittet "RecordCount Property" i DAO-hjälpen.

CDaoRecordset::GetSQL

Anropa den här medlemsfunktionen för att hämta SQL-instruktionen som användes för att välja postuppsättningens poster när den öppnades.

CString GetSQL() const;

Returvärde

En CString som innehåller SQL-instruktionen.

Anmärkningar

Detta är vanligtvis en SQL SELECT-instruktion .

Strängen som returneras av GetSQL skiljer sig vanligtvis från alla strängar som du kan ha skickat till postuppsättningen i parametern lpszSQL till funktionen Öppna medlem. Det beror på att postuppsättningen konstruerar en fullständig SQL-instruktion baserat på vad du skickade till Open, vad du angav med ClassWizard och vad du kan ha angett i m_strFilter och m_strSort datamedlemmar.

Anmärkning

Anropa endast den här medlemsfunktionen efter att ha anropat Open.

Relaterad information finns i avsnittet "SQL-egenskap" i DAO-hjälpen.

CDaoRecordset::GetType

Anropa den här medlemsfunktionen när du har öppnat postuppsättningen för att fastställa typen av postuppsättningsobjekt.

short GetType();

Returvärde

Ett av följande värden som anger typen av en postuppsättning:

  • dbOpenTable Postuppsättning av tabelltyp

  • dbOpenDynaset Postuppsättning av dynasettyp

  • dbOpenSnapshot Postuppsättning av ögonblicksbildtyp

Anmärkningar

Relaterad information finns i avsnittet "Typegenskap" i DAO-hjälpen.

CDaoRecordset::GetValidationRule

Anropa den här medlemsfunktionen för att fastställa vilken regel som används för att verifiera data.

CString GetValidationRule();

Returvärde

Ett CString objekt som innehåller ett värde som verifierar data i en post när de ändras eller läggs till i en tabell.

Anmärkningar

Den här regeln är textbaserad och tillämpas varje gång den underliggande tabellen ändras. Om data inte är lagliga utlöser MFC ett undantag. Det returnerade felmeddelandet är texten i egenskapen ValidationText för det underliggande fältobjektet, om det anges, eller texten i uttrycket som anges av egenskapen ValidationRule för det underliggande fältobjektet. Du kan anropa GetValidationText för att hämta texten i felmeddelandet.

Ett fält i en post som kräver dagen i månaden kan till exempel ha en verifieringsregel, till exempel "DAG MELLAN 1 OCH 31".

Relaterad information finns i avsnittet "ValidationRule Property" i DAO-hjälpen.

CDaoRecordset::GetValidationText

Anropa den här medlemsfunktionen för att hämta texten i egenskapen ValidationText för det underliggande fältobjektet.

CString GetValidationText();

Returvärde

Ett CString objekt som innehåller texten i meddelandet som visas om värdet för ett fält inte uppfyller verifieringsregeln för det underliggande fältobjektet.

Anmärkningar

Relaterad information finns i avsnittet "ValidationText Property" i DAO-hjälpen.

CDaoRecordset::IsBOF

Anropa den här medlemsfunktionen innan du bläddrar från post till post för att ta reda på om du har gått före den första posten i postuppsättningen.

BOOL IsBOF() const;

Returvärde

Nonzero om postuppsättningen inte innehåller några poster eller om du har rullat bakåt före den första posten. annars 0.

Anmärkningar

Du kan också anropa IsBOF tillsammans med IsEOF för att avgöra om postuppsättningen innehåller några poster eller är tom. Omedelbart efter att du anropat Open, om postuppsättningen inte innehåller några poster, IsBOF returnerar nonzero. När du öppnar en postuppsättning som har minst en post är den första posten den aktuella posten och IsBOF returnerar 0.

Om den första posten är den aktuella posten och du anropar MovePrev, IsBOF returneras därefter nonzero. Om IsBOF returnerar nonzero och du anropar MovePrevgenereras ett undantag. Om IsBOF returnerar nonzero är den aktuella posten odefinierad och alla åtgärder som kräver en aktuell post resulterar i ett undantag.

Effekt av specifika metoder på IsBOF och IsEOF inställningar:

  • Om du anropar Open* internt blir den första posten i postuppsättningen den aktuella posten genom att anropa MoveFirst. Därför orsakar Open anropande IsBOF av en tom uppsättning poster och IsEOF att returnera nonzero. (Se följande tabell för beteendet för ett misslyckat MoveFirst eller MoveLast anrop.)

  • Alla flyttåtgärder som har hittat en post orsakar både IsBOF och IsEOF för att returnera 0.

  • Ett AddNew anrop följt av ett Update anrop som infogar en ny post returnerar IsBOF 0, men endast om IsEOF det redan är icke-noll. Tillståndet IsEOF för förblir alltid oförändrat. Som definierats av Microsoft Jet-databasmotorn är den aktuella postpekaren för en tom postuppsättning i slutet av en fil, så alla nya poster infogas efter den aktuella posten.

  • Alla Delete anrop, även om det tar bort den enda återstående posten från en postuppsättning, ändrar inte värdet IsBOF för eller IsEOF.

Den här tabellen visar vilka flyttåtgärder som tillåts med olika kombinationer av IsBOF/ IsEOF.

Stat/län MoveFirst, MoveLast MovePrev,

Flytta < 0
Flytta 0 MoveNext,

Flytta > 0
IsBOF=nonzero,

IsEOF=0
Tillåtet Undantag Undantag Tillåtet
IsBOF=0,

IsEOF=nonzero
Tillåtet Tillåtet Undantag Undantag
Båda nonzero Undantag Undantag Undantag Undantag
Båda 0 Tillåtet Tillåtet Tillåtet Tillåtet

Att tillåta en flyttåtgärd innebär inte att åtgärden kommer att hitta en post. Det anger bara att ett försök att utföra den angivna flyttåtgärden tillåts och genererar inget undantag. Värdet för medlemsfunktionerna IsBOF och IsEOF kan ändras till följd av försöket att flytta.

Effekten av Flyttåtgärder som inte hittar en post på värdet IsBOF för och IsEOF inställningarna visas i följande tabell.

Operativa åtgärder IsBOF IsEOF
MoveFirst, MoveLast Nonzero Nonzero
Move 0 Ingen ändring Ingen ändring
MovePrev, Move< 0 Nonzero Ingen ändring
MoveNext, Move> 0 Ingen ändring Nonzero

Relaterad information finns i avsnittet "BOF, EOF Properties" i DAO-hjälpen.

CDaoRecordset::IsDeleted

Anropa den här medlemsfunktionen för att avgöra om den aktuella posten har tagits bort.

BOOL IsDeleted() const;

Returvärde

Nonzero om postuppsättningen är placerad på en borttagen post; annars 0.

Anmärkningar

Om du bläddrar till en post och IsDeleted returnerar TRUE (nonzero) måste du bläddra till en annan post innan du kan utföra andra postuppsättningsåtgärder.

Anmärkning

Du behöver inte kontrollera den borttagna statusen för poster i en ögonblicksbild eller postuppsättning av tabelltyp. Eftersom poster inte kan tas bort från en ögonblicksbild behöver du inte anropa IsDeleted. För postuppsättningar av tabelltyp tas borttagna poster faktiskt bort från postuppsättningen. När en post har tagits bort, antingen av dig, en annan användare eller i en annan postuppsättning, kan du inte rulla tillbaka till posten. Därför behöver du inte anropa IsDeleted.

När du tar bort en post från en dynaset tas den bort från postuppsättningen och du kan inte rulla tillbaka till posten. Men om en post i en dynaset tas bort antingen av en annan användare eller i en annan postuppsättning baserat på samma tabell, IsDeleted returnerar TRUE när du senare bläddrar till posten.

Relaterad information finns i avsnitten "Delete Method", "LastModified Property" och "EditMode Property" i DAO-hjälpen.

CDaoRecordset::IsEOF

Anropa den här medlemsfunktionen när du bläddrar från post till post för att lära dig om du har gått längre än den sista posten i postuppsättningen.

BOOL IsEOF() const;

Returvärde

Nonzero om postuppsättningen inte innehåller några poster eller om du har rullat bortom den senaste posten. annars 0.

Anmärkningar

Du kan också anropa IsEOF för att avgöra om postuppsättningen innehåller några poster eller är tom. Omedelbart efter att du anropat Open, om postuppsättningen inte innehåller några poster, IsEOF returnerar nonzero. När du öppnar en postuppsättning som har minst en post är den första posten den aktuella posten och IsEOF returnerar 0.

Om den sista posten är den aktuella posten när du anropar MoveNextIsEOF returneras därefter nonzero. Om IsEOF returnerar nonzero och du anropar MoveNextgenereras ett undantag. Om IsEOF returnerar nonzero är den aktuella posten odefinierad och alla åtgärder som kräver en aktuell post resulterar i ett undantag.

Effekt av specifika metoder på IsBOF och IsEOF inställningar:

  • Om du anropar Open internt blir den första posten i postuppsättningen den aktuella posten genom att anropa MoveFirst. Därför orsakar Open anropande IsBOF av en tom uppsättning poster och IsEOF att returnera nonzero. (Se följande tabell för beteendet för ett misslyckat MoveFirst anrop.)

  • Alla flyttåtgärder som har hittat en post orsakar både IsBOF och IsEOF för att returnera 0.

  • Ett AddNew anrop följt av ett Update anrop som infogar en ny post returnerar IsBOF 0, men endast om IsEOF det redan är icke-noll. Tillståndet IsEOF för förblir alltid oförändrat. Som definierats av Microsoft Jet-databasmotorn är den aktuella postpekaren för en tom postuppsättning i slutet av en fil, så alla nya poster infogas efter den aktuella posten.

  • Alla Delete anrop, även om det tar bort den enda återstående posten från en postuppsättning, ändrar inte värdet IsBOF för eller IsEOF.

Den här tabellen visar vilka flyttåtgärder som tillåts med olika kombinationer av IsBOF/ IsEOF.

Stat/län MoveFirst, MoveLast MovePrev,

Flytta < 0
Flytta 0 MoveNext,

Flytta > 0
IsBOF=nonzero,

IsEOF=0
Tillåtet Undantag Undantag Tillåtet
IsBOF=0,

IsEOF=nonzero
Tillåtet Tillåtet Undantag Undantag
Båda nonzero Undantag Undantag Undantag Undantag
Båda 0 Tillåtet Tillåtet Tillåtet Tillåtet

Att tillåta en flyttåtgärd innebär inte att åtgärden kommer att hitta en post. Det anger bara att ett försök att utföra den angivna flyttåtgärden tillåts och genererar inget undantag. Värdet för medlemsfunktionerna IsBOF och IsEOF kan ändras till följd av försöket att flytta.

Effekten av Flyttåtgärder som inte hittar en post på värdet IsBOF för och IsEOF inställningarna visas i följande tabell.

Operativa åtgärder IsBOF IsEOF
MoveFirst, MoveLast Nonzero Nonzero
Move 0 Ingen ändring Ingen ändring
MovePrev, Move< 0 Nonzero Ingen ändring
MoveNext, Move> 0 Ingen ändring Nonzero

Relaterad information finns i avsnittet "BOF, EOF Properties" i DAO-hjälpen.

CDaoRecordset::IsFieldDirty

Anropa den här medlemsfunktionen för att avgöra om den angivna fältdatamedlemmen i en dynaset har flaggats som "smutsig" (ändrat).

BOOL IsFieldDirty(void* pv);

Parameterar

Pv
En pekare till den fältdatamedlem vars status du vill kontrollera, eller NULL för att avgöra om något av fälten är smutsigt.

Returvärde

Nonzero om den angivna fältdatamedlemmen flaggas som smutsig. annars 0.

Anmärkningar

Data i alla medlemmar i smutsiga fältdata överförs till posten i datakällan när den aktuella posten uppdateras av ett anrop till Update medlemsfunktionen CDaoRecordset i (efter ett anrop till Edit eller AddNew). Med den här kunskapen kan du vidta ytterligare åtgärder, till exempel att koppla från fältdatamedlemmen för att markera kolumnen så att den inte skrivs till datakällan.

IsFieldDirty implementeras via DoFieldExchange.

CDaoRecordset::IsFieldNull

Anropa den här medlemsfunktionen för att avgöra om den angivna fältdatamedlemmen i en postuppsättning har flaggats som Null.

BOOL IsFieldNull(void* pv);

Parameterar

Pv
En pekare till fältdatamedlemmen vars status du vill kontrollera, eller NULL för att avgöra om något av fälten är Null.

Returvärde

Nonzero om den angivna fältdatamedlemmen flaggas som Null; annars 0.

Anmärkningar

(I databasterminologi betyder Null att "inte ha något värde" och inte är detsamma som NULL i C++.) Om en fältdatamedlem flaggas som Null tolkas den som en kolumn i den aktuella posten som det inte finns något värde för.

Anmärkning

I vissa situationer kan användning IsFieldNull vara ineffektivt, vilket visas i följande kodexempel:

COleVariant varValue;
void *pField = &(rs.m_Age);
int nField = 2;

// this code is inefficient because data
// must be retrieved for both IsFieldNull
// and GetFieldValue
if (!rs.IsFieldNull(pField))
   rs.GetFieldValue(nField, varValue);

// this code is more efficient
rs.GetFieldValue(nField, varValue);
if (varValue.vt == VT_NULL)
   varValue.Attach(varNewVal); // do something

Anmärkning

Om du använder dynamisk postbindning, utan att härleda från CDaoRecordset, bör du använda VT_NULL som du ser i exemplet.

CDaoRecordset::IsFieldNullable

Anropa den här medlemsfunktionen för att avgöra om den angivna fältdatamedlemmen är "nullable" (kan anges till ett Null-värde; C++ NULL är inte detsamma som Null, vilket i databasterminologin betyder "har inget värde").

BOOL IsFieldNullable(void* pv);

Parameterar

Pv
En pekare till fältdatamedlemmen vars status du vill kontrollera, eller NULL för att avgöra om något av fälten är Null.

Returvärde

Nonzero om den angivna fältdatamedlemmen kan göras till Null; annars 0.

Anmärkningar

Ett fält som inte kan vara Null måste ha ett värde. Om du försöker ange ett sådant fält till Null när du lägger till eller uppdaterar en post avvisar datakällan tillägget eller uppdateringen och Update utlöser ett undantag. Undantaget inträffar när du anropar Update, inte när du anropar SetFieldNull.

CDaoRecordset::IsOpen

Anropa den här medlemsfunktionen för att avgöra om postuppsättningen är öppen.

BOOL IsOpen() const;

Returvärde

Nonzero om postuppsättningsobjektets eller Open medlemsfunktionen tidigare har anropats Requery och postuppsättningen inte har stängts, annars 0.

Anmärkningar

CDaoRecordset::m_bCheckCacheForDirtyFields

Innehåller en flagga som anger om cachelagrade fält automatiskt markeras som smutsiga (ändrade) och Null.

Anmärkningar

Flaggan är som standard TRUE. Inställningen i den här datamedlemmen styr hela mekanismen för dubbelbuffertning. Om du ställer in flaggan på TRUE kan du inaktivera cachelagringen fält för fält med hjälp av DFX-mekanismen. Om du ställer in flaggan på FALSE måste du anropa SetFieldDirty och SetFieldNull dig själv.

Ange den här datamedlemmen innan du anropar Open. Den här mekanismen är främst avsedd för användarvänlighet. Prestanda kan vara långsammare på grund av dubbel buffring av fält när ändringar görs.

CDaoRecordset::m_nFields

Innehåller antalet fältdatamedlemmar i postuppsättningsklassen och antalet kolumner som valts av postuppsättningen från datakällan.

Anmärkningar

Konstruktorn för postuppsättningsklassen måste initieras m_nFields med rätt antal statiskt bundna fält. ClassWizard skriver den här initieringen åt dig när du använder den för att deklarera din postuppsättningsklass. Du kan också skriva den manuellt.

Ramverket använder det här numret för att hantera interaktionen mellan fältdatamedlemmarna och motsvarande kolumner i den aktuella posten i datakällan.

Anmärkning

Det här talet måste motsvara antalet utdatakolumner som registrerats efter DoFieldExchange ett anrop till SetFieldType med parametern CDaoFieldExchange::outputColumn.

Du kan binda kolumner dynamiskt via CDaoRecordset::GetFieldValue och CDaoRecordset::SetFieldValue. Om du gör det behöver du inte öka antalet för m_nFields att återspegla antalet DFX-funktionsanrop i din DoFieldExchange medlemsfunktion.

CDaoRecordset::m_nParams

Innehåller antalet parameterdatamedlemmar i postmängdsklassen – antalet parametrar som skickas med postuppsättningens fråga.

Anmärkningar

Om din postuppsättningsklass har några parameterdatamedlemmar måste konstruktorn för klassen initiera m_nParams med rätt nummer. Värdet för m_nParams är standardvärdet 0. Om du lägger till parameterdatamedlemmar – vilket du måste göra manuellt – måste du också manuellt lägga till en initiering i klasskonstruktorn för att återspegla antalet parametrar (som måste vara minst lika stort som antalet platshållare i m_strFilter eller m_strSort sträng).

Ramverket använder det här talet när det parameteriserar postuppsättningens fråga.

Anmärkning

Det här talet måste motsvara antalet "params" som registrerats efter DoFieldExchange ett anrop till SetFieldType med parametern CFieldExchange::param.

Relaterad information finns i avsnittet "Parameterobjekt" i DAO-hjälpen.

CDaoRecordset::m_pDAORecordset

Innehåller en pekare till OLE-gränssnittet för DAO-postuppsättningsobjektet som ligger bakom CDaoRecordset objektet.

Anmärkningar

Använd den här pekaren om du behöver komma åt DAO-gränssnittet direkt.

Relaterad information finns i avsnittet "Arkivhandlingsobjekt" i DAO-hjälpen.

CDaoRecordset::m_pDatabase

Innehåller en pekare till det CDaoDatabase objekt genom vilket postuppsättningen är ansluten till en datakälla.

Anmärkningar

Den här variabeln anges på två sätt. Vanligtvis skickar du en pekare till ett redan öppet CDaoDatabase objekt när du skapar postuppsättningsobjektet. Om du skickar NULL i stället CDaoRecordset skapar du ett CDaoDatabase objekt åt dig och öppnar det. I båda fallen CDaoRecordset lagrar pekaren i den här variabeln.

Normalt behöver du inte använda pekaren som lagras i m_pDatabase. Om du skriver egna tillägg till CDaoRecordsetkan du dock behöva använda pekaren. Du kan till exempel behöva pekaren om du kastar dina egna CDaoException(s).

Relaterad information finns i avsnittet "Databasobjekt" i DAO-hjälpen.

CDaoRecordset::m_strFilter

Innehåller en sträng som används för att konstruera WHERE-satsen i en SQL-instruktion.

Anmärkningar

Det innehåller inte det reserverade ordet WHERE för att filtrera postuppsättningen. Användningen av den här datamedlemmen gäller inte för postuppsättningar av tabelltyp. Användningen av har ingen effekt när du öppnar en postuppsättning med hjälp av m_strFilter en CDaoQueryDef pekare.

Använd det amerikanska datumformatet (månad-dag-år) när du filtrerar fält som innehåller datum, även om du inte använder den amerikanska versionen av Microsoft Jet-databasmotorn. Annars kanske data inte filtreras som förväntat.

Relaterad information finns i avsnittet "Filteregenskap" i DAO-hjälpen.

CDaoRecordset::m_strSort

Innehåller en sträng som innehåller ORDERBY-satsen i en SQL-instruktion utan de reserverade orden ORDERBY.

Anmärkningar

Du kan sortera efter postuppsättningsobjekt av dynaset- och ögonblicksbildstyp.

Du kan inte sortera postuppsättningsobjekt av tabelltyp. Om du vill fastställa sorteringsordningen för en postuppsättning av tabelltyp anropar du SetCurrentIndex.

Användningen av m_strSort har ingen effekt när du öppnar en postuppsättning med hjälp av en CDaoQueryDef pekare.

Relaterad information finns i avsnittet "Sortera egenskap" i DAO-hjälpen.

CDaoRecordset::Move

Anropa den här medlemsfunktionen för att placera postuppsättningen lRows-poster från den aktuella posten.

virtual void Move(long lRows);

Parameterar

lRows
Antalet poster som ska flyttas framåt eller bakåt. Positiva värden går framåt, mot slutet av postuppsättningen. Negativa värden flyttas bakåt, mot början.

Anmärkningar

Du kan gå framåt eller bakåt. Move( 1 ) motsvarar MoveNextoch Move( -1 ) motsvarar MovePrev.

Försiktighet

Att anropa någon av Move funktionerna utlöser ett undantag om postuppsättningen inte har några poster. I allmänhet anropar du både IsBOF och IsEOF före en Flytta-åtgärd för att avgöra om postuppsättningen har några poster. När du har ringt Open eller Requeryanropar du antingen IsBOF eller IsEOF.

Anmärkning

Om du har rullat förbi början eller slutet av postuppsättningen (IsBOF eller IsEOF returnerar nonzero) genererar ett anrop till Move en CDaoException.

Anmärkning

Om du anropar någon av Move funktionerna när den aktuella posten uppdateras eller läggs till går uppdateringarna förlorade utan förvarning.

När du anropar Move en framåtriktad rullningsögonblicksbild måste parametern lRows vara ett positivt heltal och bokmärken tillåts inte, så du kan bara gå vidare.

Om du vill göra den första, sista, nästa eller tidigare posten i en postuppsättning till den aktuella posten anropar du MoveFirstfunktionen , MoveLast, MoveNexteller MovePrev medlem.

Relaterad information finns i avsnitten "Flytta metod" och "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" i DAO-hjälpen.

CDaoRecordset::MoveFirst

Anropa den här medlemsfunktionen för att göra den första posten i postuppsättningen (om någon) till den aktuella posten.

void MoveFirst();

Anmärkningar

Du behöver inte anropa MoveFirst direkt när du har öppnat postuppsättningen. Vid den tidpunkten är den första posten (om någon) automatiskt den aktuella posten.

Försiktighet

Att anropa någon av Move funktionerna utlöser ett undantag om postuppsättningen inte har några poster. I allmänhet anropar du både IsBOF och IsEOF före en Flytta-åtgärd för att avgöra om postuppsättningen har några poster. När du har ringt Open eller Requeryanropar du antingen IsBOF eller IsEOF.

Anmärkning

Om du anropar någon av Move funktionerna när den aktuella posten uppdateras eller läggs till går uppdateringarna förlorade utan förvarning.

Move Använd funktionerna för att flytta från post till post utan att tillämpa ett villkor. Använd sökåtgärderna för att hitta poster i ett postuppsättningsobjekt av dynasettyp eller ögonblicksbildstyp som uppfyller ett visst villkor. Om du vill hitta en post i ett postuppsättningsobjekt av tabelltyp anropar du Seek.

Om postuppsättningen refererar till en postuppsättning av tabelltyp följer rörelsen tabellens aktuella index. Du kan ange det aktuella indexet med hjälp av egenskapen Index för det underliggande DAO-objektet. Om du inte anger det aktuella indexet är ordningen för returnerade poster odefinierad.

Om du anropar MoveLast ett postuppsättningsobjekt baserat på en SQL-fråga eller querydef tvingas frågan att slutföras och postmängdsobjektet är helt ifyllt.

Du kan inte anropa MoveFirst medlemsfunktionen eller MovePrev med en framåtriktad rullningsögonblicksbild.

Om du vill flytta positionen för den aktuella posten i ett postuppsättningsobjekt ett visst antal poster framåt eller bakåt anropar du Move.

Relaterad information finns i avsnitten "Flytta metod" och "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" i DAO-hjälpen.

CDaoRecordset::MoveLast

Anropa den här medlemsfunktionen för att göra den sista posten (om någon) i postuppsättningen till den aktuella posten.

void MoveLast();

Anmärkningar

Försiktighet

Att anropa någon av Move funktionerna utlöser ett undantag om postuppsättningen inte har några poster. I allmänhet anropar du både IsBOF och IsEOF före en Flytta-åtgärd för att avgöra om postuppsättningen har några poster. När du har ringt Open eller Requeryanropar du antingen IsBOF eller IsEOF.

Anmärkning

Om du anropar någon av Move funktionerna när den aktuella posten uppdateras eller läggs till går uppdateringarna förlorade utan förvarning.

Move Använd funktionerna för att flytta från post till post utan att tillämpa ett villkor. Använd sökåtgärderna för att hitta poster i ett postuppsättningsobjekt av dynasettyp eller ögonblicksbildstyp som uppfyller ett visst villkor. Om du vill hitta en post i ett postuppsättningsobjekt av tabelltyp anropar du Seek.

Om postuppsättningen refererar till en postuppsättning av tabelltyp följer rörelsen tabellens aktuella index. Du kan ange det aktuella indexet med hjälp av egenskapen Index för det underliggande DAO-objektet. Om du inte anger det aktuella indexet är ordningen för returnerade poster odefinierad.

Om du anropar MoveLast ett postuppsättningsobjekt baserat på en SQL-fråga eller querydef tvingas frågan att slutföras och postmängdsobjektet är helt ifyllt.

Om du vill flytta positionen för den aktuella posten i ett postuppsättningsobjekt ett visst antal poster framåt eller bakåt anropar du Move.

Relaterad information finns i avsnitten "Flytta metod" och "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" i DAO-hjälpen.

CDaoRecordset::MoveNext

Anropa den här medlemsfunktionen för att göra nästa post i postuppsättningen till den aktuella posten.

void MoveNext();

Anmärkningar

Vi rekommenderar att du anropar IsBOF innan du försöker flytta till den tidigare posten. Ett anrop till MovePrev genererar en CDaoException om IsBOF returnerar nonzero, vilket anger antingen att du redan har rullat före den första posten eller att inga poster har valts av postuppsättningen.

Försiktighet

Att anropa någon av Move funktionerna utlöser ett undantag om postuppsättningen inte har några poster. I allmänhet anropar du både IsBOF och IsEOF före en Flytta-åtgärd för att avgöra om postuppsättningen har några poster. När du har ringt Open eller Requeryanropar du antingen IsBOF eller IsEOF.

Anmärkning

Om du anropar någon av Move funktionerna när den aktuella posten uppdateras eller läggs till går uppdateringarna förlorade utan förvarning.

Move Använd funktionerna för att flytta från post till post utan att tillämpa ett villkor. Använd sökåtgärderna för att hitta poster i ett postuppsättningsobjekt av dynasettyp eller ögonblicksbildstyp som uppfyller ett visst villkor. Om du vill hitta en post i ett postuppsättningsobjekt av tabelltyp anropar du Seek.

Om postuppsättningen refererar till en postuppsättning av tabelltyp följer rörelsen tabellens aktuella index. Du kan ange det aktuella indexet med hjälp av egenskapen Index för det underliggande DAO-objektet. Om du inte anger det aktuella indexet är ordningen för returnerade poster odefinierad.

Om du vill flytta positionen för den aktuella posten i ett postuppsättningsobjekt ett visst antal poster framåt eller bakåt anropar du Move.

Relaterad information finns i avsnitten "Flytta metod" och "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" i DAO-hjälpen.

CDaoRecordset::MovePrev

Anropa den här medlemsfunktionen för att göra den tidigare posten i postuppsättningen till den aktuella posten.

void MovePrev();

Anmärkningar

Vi rekommenderar att du anropar IsBOF innan du försöker flytta till den tidigare posten. Ett anrop till MovePrev genererar en CDaoException om IsBOF returnerar nonzero, vilket anger antingen att du redan har rullat före den första posten eller att inga poster har valts av postuppsättningen.

Försiktighet

Att anropa någon av Move funktionerna utlöser ett undantag om postuppsättningen inte har några poster. I allmänhet anropar du både IsBOF och IsEOF före en Flytta-åtgärd för att avgöra om postuppsättningen har några poster. När du har ringt Open eller Requeryanropar du antingen IsBOF eller IsEOF.

Anmärkning

Om du anropar någon av Move funktionerna när den aktuella posten uppdateras eller läggs till går uppdateringarna förlorade utan förvarning.

Move Använd funktionerna för att flytta från post till post utan att tillämpa ett villkor. Använd sökåtgärderna för att hitta poster i ett postuppsättningsobjekt av dynasettyp eller ögonblicksbildstyp som uppfyller ett visst villkor. Om du vill hitta en post i ett postuppsättningsobjekt av tabelltyp anropar du Seek.

Om postuppsättningen refererar till en postuppsättning av tabelltyp följer rörelsen tabellens aktuella index. Du kan ange det aktuella indexet med hjälp av egenskapen Index för det underliggande DAO-objektet. Om du inte anger det aktuella indexet är ordningen för returnerade poster odefinierad.

Du kan inte anropa MoveFirst medlemsfunktionen eller MovePrev med en framåtriktad rullningsögonblicksbild.

Om du vill flytta positionen för den aktuella posten i ett postuppsättningsobjekt ett visst antal poster framåt eller bakåt anropar du Move.

Relaterad information finns i avsnitten "Flytta metod" och "MoveFirst, MoveLast, MoveNext, MovePrevious Methods" i DAO-hjälpen.

CDaoRecordset::Open

Du måste anropa den här medlemsfunktionen för att hämta posterna för postuppsättningen.

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

Parameterar

nOpenType
Något av följande värden:

  • dbOpenDynaset En postuppsättning av dynasettyp med dubbelriktad rullning. Det här är standardinställningen.

  • dbOpenTable En postuppsättning av tabelltyp med dubbelriktad rullning.

  • dbOpenSnapshot En postuppsättning av ögonblicksbildtyp med dubbelriktad rullning.

lpszSQL
En strängpekare som innehåller något av följande:

  • En NULL-pekare.

  • Namnet på en eller flera tabledefs och/eller querydefs (kommaavgränsade).

  • En SQL SELECT-instruktion (om du vill med en SQL WHERE - eller ORDERBY-sats ).

  • En direktfråga.

nAlternativ
Ett eller flera av alternativen nedan. Standardvärdet är 0. Möjliga värden är följande:

  • dbAppendOnly Du kan bara lägga till nya poster (endast poster av dynasettyp). Det här alternativet innebär bokstavligen att poster bara kan läggas till. MFC ODBC-databasklasserna har ett tilläggsalternativ som gör att poster kan hämtas och läggas till.

  • dbForwardOnly Postuppsättningen är en framåtriktad rullningsögonblicksbild.

  • dbSeeChanges Generera ett undantag om en annan användare ändrar data som du redigerar.

  • dbDenyWrite Andra användare kan inte ändra eller lägga till poster.

  • dbDenyRead Andra användare kan inte visa poster (endast postuppsättning av tabelltyp).

  • dbReadOnly Du kan bara visa poster. andra användare kan ändra dem.

  • dbInconsistent Inkonsekventa uppdateringar tillåts (endast poster av dynasettyp).

  • dbConsistent Endast konsekventa uppdateringar tillåts (endast poster av dynasettyp).

Anmärkning

Konstanterna dbConsistent och dbInconsistent är ömsesidigt uteslutande. Du kan använda det ena eller det andra, men inte båda i en viss instans av Open.

pTableDef
En pekare till ett CDaoTableDef-objekt . Den här versionen är endast giltig för postuppsättningar av tabelltyp. När du använder det här alternativet används inte pekaren CDaoDatabase som används för att konstruera CDaoRecordset den. I stället används databasen där den tabledef finns.

pQueryDef
En pekare till ett CDaoQueryDef-objekt . Den här versionen är endast giltig för postuppsättningar av dynasettyp och ögonblicksbildstyp. När du använder det här alternativet används inte pekaren CDaoDatabase som används för att konstruera CDaoRecordset den. I stället används databasen där querydef finns.

Anmärkningar

Innan du anropar Openmåste du konstruera postuppsättningsobjektet. Det finns flera sätt att göra detta:

  • När du skapar postuppsättningsobjektet skickar du en pekare till ett CDaoDatabase objekt som redan är öppet.

  • När du skapar postuppsättningsobjektet skickar du en pekare till ett CDaoDatabase objekt som inte är öppet. Postuppsättningen öppnar ett CDaoDatabase objekt, men stänger det inte när postuppsättningsobjektet stängs.

  • När du skapar postuppsättningsobjektet skickar du en NULL-pekare. Postuppsättningsobjektet anropar GetDefaultDBName för att hämta namnet på Microsoft Access . MDB-fil som ska öppnas. Postuppsättningen öppnar sedan ett CDaoDatabase objekt och håller det öppet så länge postuppsättningen är öppen. När du anropar Close postuppsättningen stängs även objektet CDaoDatabase .

    Anmärkning

    När postuppsättningen CDaoDatabase öppnar objektet öppnas datakällan med icke-exklusiv åtkomst.

När postuppsättningen är öppen för den version av Open som använder parametern lpszSQL kan du hämta poster på ett av flera sätt när postuppsättningen är öppen. Det första alternativet är att ha DFX-funktioner i .DoFieldExchange Det andra alternativet är att använda dynamisk bindning genom att anropa GetFieldValue medlemsfunktionen. Dessa alternativ kan implementeras separat eller i kombination. Om de kombineras måste du skicka sql-instruktionen själv på anropet till Open.

När du använder den andra versionen av Open där du skickar in ett CDaoTableDef objekt är de resulterande kolumnerna tillgängliga för dig att binda via DoFieldExchange och DFX-mekanismen och/eller binda dynamiskt via GetFieldValue.

Anmärkning

Du kan bara anropa Open med hjälp av ett CDaoTableDef objekt för postuppsättningar av tabelltyp.

När du använder den tredje versionen av Open där du skickar in ett CDaoQueryDef objekt körs den frågan och de resulterande kolumnerna är tillgängliga för dig att binda via DoFieldExchange och DFX-mekanismen och/eller binda dynamiskt via GetFieldValue.

Anmärkning

Du kan bara anropa Open med hjälp av ett CDaoQueryDef objekt för postuppsättningar av dynasettyp och ögonblicksbildstyp.

För den första versionen av Open som använder parametern lpszSQL väljs poster baserat på kriterier som visas i följande tabell.

Parameterns lpszSQL värde Markerade poster bestäms av Exempel
NOLL Strängen som returneras av GetDefaultSQL.
En kommaavgränsad lista över ett eller flera framlagda förslag och/eller querydef-namn. Alla kolumner som representeras i DoFieldExchange. "Customer"
SELECT column-list FROM table-list De angivna kolumnerna från angivna tabledef(er) och/eller querydef(er). "SELECT CustId, CustName

FROM Customer"

Den vanliga proceduren är att skicka NULL till Open, i så fall Open anropar GetDefaultSQL, en åsidosättbar medlemsfunktion som ClassWizard genererar när du skapar en CDaoRecordset-derived-klass. Det här värdet ger de tabledef(er) och/eller querydef-namn som du angav i ClassWizard. Du kan i stället ange annan information i parametern lpszSQL .

Oavsett vad du skickar Open skapar en slutlig SQL-sträng för frågan (strängen kan ha SQL WHERE - och ORDERBY-satser som läggs till i lpszSQL-strängen som du har skickat) och kör sedan frågan. Du kan undersöka den konstruerade strängen genom att anropa GetSQL efter att ha anropat Open.

Fältdatamedlemmarna i din postuppsättningsklass är bundna till kolumnerna i de data som valts. Om några poster returneras blir den första posten den aktuella posten.

Om du vill ange alternativ för postuppsättningen, till exempel ett filter eller en sortering, anger m_strSort du eller m_strFilter efter att du har konstruerat postuppsättningsobjektet men innan du anropar Open. Om du vill uppdatera posterna i postuppsättningen när postuppsättningen redan är öppen anropar du Requery.

Om du anropar Open en postuppsättning av dynasettyp eller ögonblicksbildstyp, eller om datakällan refererar till en SQL-instruktion eller en framlagd fil som representerar en bifogad tabell, kan du inte använda dbOpenTable för typargumentet. Om du gör det utlöser MFC ett undantag. Om du vill avgöra om ett tabledef-objekt representerar en bifogad tabell skapar du ett CDaoTableDef-objekt och anropar dess GetConnect-medlemsfunktion .

dbSeeChanges Använd flaggan om du vill fånga ändringar som gjorts av en annan användare eller ett annat program på datorn när du redigerar eller tar bort samma post. Om två användare till exempel börjar redigera samma post lyckas den första användaren som anropar Update medlemsfunktionen. När Update anropas av den andra användaren utlöses en CDaoException . På samma sätt, om den andra användaren försöker anropa Delete för att ta bort posten och den redan har ändrats av den första användaren, inträffar en CDaoException .

Om användaren får detta CDaoException vid uppdatering bör koden normalt uppdatera innehållet i fälten och hämta de nyligen ändrade värdena. Om undantaget inträffar under borttagningsprocessen kan koden visa nya postdata för användaren och ett meddelande som anger att data nyligen har ändrats. I det här läget kan koden begära en bekräftelse på att användaren fortfarande vill ta bort posten.

Tips/Råd

Använd rullningsalternativet framåt (dbForwardOnly) för att förbättra prestanda när ditt program gör en enkel genomströmning genom en postuppsättning som öppnas från en ODBC-datakälla.

Relaterad information finns i avsnittet "OpenRecordset-metod" i DAO-hjälpen.

CDaoRecordset::Requery

Anropa den här medlemsfunktionen för att återskapa (uppdatera) en postuppsättning.

virtual void Requery();

Anmärkningar

Om några poster returneras blir den första posten den aktuella posten.

För att postuppsättningen ska återspegla de tillägg och borttagningar som du eller andra användare gör i datakällan måste du återskapa postuppsättningen genom att anropa Requery. Om postuppsättningen är en dynaset återspeglar den automatiskt uppdateringar som du eller andra användare gör i sina befintliga poster (men inte tillägg). Om postuppsättningen är en ögonblicksbild måste du anropa Requery för att återspegla ändringar av andra användare samt tillägg och borttagningar.

För antingen en dynaset eller en ögonblicksbild anropar Requery du när du vill återskapa postuppsättningen med hjälp av parametervärden. Ange det nya filtret eller sortera efter inställning m_strFilter och m_strSort innan du anropar Requery. Ange nya parametrar genom att tilldela nya värden till parameterdatamedlemmar innan du anropar Requery.

Om försöket att återskapa postuppsättningen misslyckas stängs postuppsättningen. Innan du anropar Requerykan du avgöra om postuppsättningen kan ställas in igen genom att anropa CanRestart medlemsfunktionen. CanRestart garanterar inte att det kommer att Requery lyckas.

Försiktighet

Ring Requery bara efter att du har ringt Open.

Anmärkning

Anropet Requery ändrar DAO-bokmärken.

Du kan inte anropa Requery en postuppsättning av dynasettyp eller ögonblicksbildstyp om anropet CanRestart returnerar 0, och du kan inte heller använda den på en postuppsättning av tabelltyp.

Om både IsBOF och IsEOF returnerar icke-zero efter att du anropat Requeryreturnerade frågan inga poster och postuppsättningen innehåller inga data.

Relaterad information finns i avsnittet "Requery-metod" i DAO-hjälpen.

CDaoRecordset::Seek

Anropa den här medlemsfunktionen för att hitta posten i ett indexerat postuppsättningsobjekt av tabelltyp som uppfyller de angivna kriterierna för det aktuella indexet och gör posten till den aktuella posten.

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKey1,
    COleVariant* pKey2 = NULL,
    COleVariant* pKey3 = NULL);

BOOL Seek(
    LPCTSTR lpszComparison,
    COleVariant* pKeyArray,
    WORD nKeys);

Parameterar

lpszComparison
Ett av följande stränguttryck: "<", "<=", "=", ">=" eller ">".

pKey1
En pekare till en COleVariant vars värde motsvarar det första fältet i indexet. Obligatoriskt.

pKey2
En pekare till en COleVariant vars värde motsvarar det andra fältet i indexet, om någon. Standardvärdet är NULL.

pKey3
En pekare till en COleVariant vars värde motsvarar det tredje fältet i indexet, om någon. Standardvärdet är NULL.

pKeyArray
En pekare till en matris med varianter. Matrisstorleken motsvarar antalet fält i indexet.

nKeys
Ett heltal som motsvarar matrisens storlek, vilket är antalet fält i indexet.

Anmärkning

på anger inte jokertecken i nycklarna. Jokertecken gör Seek att inga matchande poster returneras.

Returvärde

Nonzero om matchande poster hittas, annars 0.

Anmärkningar

Använd den andra (matris)-versionen av Seek för att hantera index med fyra fält eller mer.

Seek möjliggör högpresterande indexsökning på postuppsättningar av tabelltyp. Du måste ange det aktuella indexet genom att anropa SetCurrentIndex innan du anropar Seek. Om indexet identifierar ett icke-substantivt nyckelfält Seek letar du reda på den första posten som uppfyller kriterierna. Om du inte anger ett index genereras ett undantag.

Om du inte skapar en UNICODE-postuppsättning måste objekten COleVariant uttryckligen deklareras som ANSI. Detta kan göras med hjälp av konstruktorn COleVariant::COleVariant(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT (ANSI) eller med hjälp COleVariant av funktionen SetString(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT.

När du anropar Seekskickar du ett eller flera nyckelvärden och en jämförelseoperator ("<", "<=", "=", ">=" eller ">"). Seek söker igenom de angivna nyckelfälten och letar upp den första posten som uppfyller de kriterier som anges av lpszComparison och pKey1. När det har hittats Seek returnerar du nonzero och gör posten aktuell. Om Seek det inte går att hitta en matchning Seek returnerar noll och den aktuella posten är odefinierad. När du använder DAO direkt måste du uttryckligen kontrollera egenskapen NoMatch.

Om lpszComparison är "=", ">=" eller ">", Seek börjar i början av indexet. Om lpszComparison är "<" eller "<=", Seek börjar i slutet av indexet och söker bakåt om det inte finns duplicerade indexposter i slutet. I det här fallet Seek börjar vid en godtycklig post bland de duplicerade indexposterna i slutet av indexet.

Det behöver inte finnas någon aktuell post när du använder Seek.

Om du vill hitta en post i en postuppsättning av dynasettyp eller ögonblicksbildstyp som uppfyller ett visst villkor använder du sökåtgärderna. Om du vill inkludera alla poster, inte bara de som uppfyller ett visst villkor, använder du flyttåtgärderna för att flytta från post till post.

Du kan inte anropa Seek en bifogad tabell av någon typ eftersom bifogade tabeller måste öppnas som postuppsättningar av dynasettyp eller ögonblicksbildstyp. Men om du anropar CDaoDatabase::Open för att öppna en installerad ISAM-databas direkt kan du anropa Seek tabeller i databasen, även om prestandan kan vara långsam.

Relaterad information finns i avsnittet "Sökmetod" i DAO-hjälpen.

CDaoRecordset::SetAbsolutePosition

Anger det relativa postnumret för ett postuppsättningsobjekts aktuella post.

void SetAbsolutePosition(long lPosition);

Parameterar

lPosition
Motsvarar den aktuella postens ordningstal i postuppsättningen.

Anmärkningar

Med anrop SetAbsolutePosition kan du placera den aktuella postpekaren till en viss post baserat på dess ordningstal i en postuppsättning av dynasettyp eller ögonblicksbildstyp. Du kan också fastställa det aktuella postnumret genom att anropa GetAbsolutePosition.

Anmärkning

Den här medlemsfunktionen är endast giltig för postuppsättningar av dynasettyp och ögonblicksbildstyp.

Egenskapen AbsolutePosition för det underliggande DAO-objektet är nollbaserat. en inställning på 0 refererar till den första posten i postuppsättningen. Om du anger ett värde som är större än antalet ifyllda poster utlöse MFC ett undantag. Du kan fastställa antalet ifyllda poster i postuppsättningen genom att anropa GetRecordCount medlemsfunktionen.

Om den aktuella posten tas bort definieras inte egenskapen AbsolutePosition och MFC utlöser ett undantag om det refereras. Nya poster läggs till i slutet av sekvensen.

Anmärkning

Den här egenskapen är inte avsedd att användas som ett surrogatpostnummer. Bokmärken är fortfarande det rekommenderade sättet att behålla och återgå till en viss position och är det enda sättet att placera den aktuella posten över alla typer av postuppsättningsobjekt som stöder bokmärken. I synnerhet ändras positionen för en viss post när poster som föregår den tas bort. Det finns inte heller någon garanti för att en viss post har samma absoluta position om postuppsättningen återskapas igen eftersom ordningen på enskilda poster i en postuppsättning inte garanteras om den inte skapas med en SQL-instruktion med hjälp av en ORDERBY-sats .

Relaterad information finns i avsnittet "AbsolutePosition Property" i DAO-hjälpen.

CDaoRecordset::SetBookmark

Anropa den här medlemsfunktionen för att placera postuppsättningen på posten som innehåller det angivna bokmärket.

void SetBookmark(COleVariant varBookmark);

Parameterar

varBookmark
Ett COleVariant-objekt som innehåller bokmärkesvärdet för en specifik post.

Anmärkningar

När ett postuppsättningsobjekt skapas eller öppnas har var och en av dess poster redan ett unikt bokmärke. Du kan hämta bokmärket för den aktuella posten genom att anropa GetBookmark och spara värdet till ett COleVariant objekt. Du kan senare återgå till posten genom att anropa SetBookmark med det sparade bokmärkesvärdet.

Anmärkning

Anropa requery ändrar DAO-bokmärken.

Om du inte skapar en UNICODE-postuppsättning måste objektet uttryckligen COleVariant deklareras som ANSI. Detta kan göras med hjälp av konstruktorn COleVariant::COleVariant(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT (ANSI) eller med hjälp COleVariant av funktionen SetString(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT.

Relaterad information finns i avsnitten "Bookmark Property" och Bookmarkable Property (Bokmärkesegenskap) i DAO-hjälpen.

CDaoRecordset::SetCacheSize

Anropa den här medlemsfunktionen för att ange antalet poster som ska cachelagras.

void SetCacheSize(long lSize);

Parameterar

lSize
Anger antalet poster. Ett typiskt värde är 100. Inställningen 0 inaktiverar cachelagring. Inställningen måste vara mellan 5 och 1 200 poster. Cacheminnet kan använda en betydande mängd minne.

Anmärkningar

En cache är ett utrymme i lokalt minne som innehåller de data som senast hämtades från servern om data begärs igen medan programmet körs. Datacachelagring förbättrar prestandan för ett program som hämtar data från en fjärrserver via postuppsättningsobjekt av dynasettyp. När data begärs kontrollerar Microsoft Jet-databasmotorn cachen efter begärda data först i stället för att hämta dem från servern, vilket tar längre tid. Data som inte kommer från en ODBC-datakälla sparas inte i cacheminnet.

Alla ODBC-datakällor, till exempel en bifogad tabell, kan ha en lokal cache. Om du vill skapa cachen öppnar du ett postuppsättningsobjekt från fjärrdatakällan, anropar medlemsfunktionerna SetCacheSize och SetCacheStart anropar FillCache sedan medlemsfunktionen eller går igenom posterna med hjälp av någon av flyttåtgärderna. Parametern lSize för SetCacheSize medlemsfunktionen kan baseras på antalet poster som ditt program kan arbeta med samtidigt. Om du till exempel använder en postuppsättning som källa för de data som ska visas på skärmen kan du skicka SetCacheSizeparametern lSize som 20 för att visa 20 poster i taget.

Relaterad information finns i avsnittet "CacheSize, CacheStart Properties" i DAO-hjälpen.

CDaoRecordset::SetCacheStart

Anropa den här medlemsfunktionen för att ange bokmärket för den första posten i postuppsättningen som ska cachelagras.

void SetCacheStart(COleVariant varBookmark);

Parameterar

varBookmark
En COleVariant som anger bokmärket för den första posten i postuppsättningen som ska cachelagras.

Anmärkningar

Du kan använda bokmärkesvärdet för valfri post för varBookmark-parametern för SetCacheStart medlemsfunktionen. Gör den post som du vill starta cacheminnet med den aktuella posten, upprätta ett bokmärke för posten med SetBookmark och skicka bokmärkesvärdet som parameter för SetCacheStart medlemsfunktionen.

Microsoft Jet-databasmotorn begär poster i cacheintervallet från cacheminnet och begär poster utanför cacheintervallet från servern.

Poster som hämtas från cacheminnet återspeglar inte ändringar som gjorts samtidigt i källdata från andra användare.

Om du vill framtvinga en uppdatering av alla cachelagrade data skickar du parametern SetCacheSize på som 0, anropar SetCacheSize igen med storleken på cachen som du ursprungligen begärde och anropar FillCache sedan medlemsfunktionen.

Om du inte skapar en UNICODE-postuppsättning måste objektet uttryckligen COleVariant deklareras som ANSI. Detta kan göras med hjälp av konstruktorn COleVariant::COleVariant(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT (ANSI) eller med hjälp COleVariant av funktionen SetString(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT.

Relaterad information finns i avsnittet CacheSize, CacheStart Properties" (CacheSize, CacheStart Properties) i DAO-hjälpen.

CDaoRecordset::SetCurrentIndex

Anropa den här medlemsfunktionen för att ange ett index för en postuppsättning av tabelltyp.

void SetCurrentIndex(LPCTSTR lpszIndex);

Parameterar

lpszIndex
En pekare som innehåller namnet på indexet som ska anges.

Anmärkningar

Poster i bastabeller lagras inte i någon viss ordning. Om du anger ett index ändras ordningen på poster som returneras från databasen, men det påverkar inte i vilken ordning posterna lagras. Det angivna indexet måste redan ha definierats. Om du försöker använda ett indexobjekt som inte finns, eller om indexet inte har angetts när du anropar Sök, utlöser MFC ett undantag.

Du kan skapa ett nytt index för tabellen genom att anropa CDaoTableDef::CreateIndex och lägga till det nya indexet i indexsamlingen för den underliggande filen genom att anropa CDaoTableDef::Append och sedan öppna postuppsättningen igen.

Poster som returneras från en postuppsättning av tabelltyp kan endast sorteras efter de index som definierats för den underliggande inlämnade filen. Om du vill sortera poster i någon annan ordning kan du öppna en postuppsättning av dynasettyp eller ögonblicksbildstyp med hjälp av en SQL ORDERBY-sats som lagras i CDaoRecordset::m_strSort.

Relaterad information finns i avsnittet "Indexobjekt" och definitionen "aktuellt index" i DAO-hjälpen.

CDaoRecordset::SetFieldDirty

Anropa den här medlemsfunktionen för att flagga en fältdatamedlem i postuppsättningen som ändrad eller oförändrad.

void SetFieldDirty(
    void* pv,
    BOOL bDirty = TRUE);

Parameterar

Pv
Innehåller adressen till en fältdatamedlem i postuppsättningen eller NULL. Om null flaggas alla fältdatamedlemmar i postuppsättningen. (C++ NULL är inte samma sak som Null i databasterminologin, vilket innebär att "inte har något värde".

bDirty
SANT om fältdatamedlemmen ska flaggas som "smutsig" (ändrad). Annars FALSKT om fältdatamedlemmen ska flaggas som "ren" (oförändrad).

Anmärkningar

Om fält markeras som oförändrade ser du till att fältet inte uppdateras.

Ramverket markerar ändrade fältdatamedlemmar för att säkerställa att de skrivs till posten på datakällan av DAO-mekanismen för postfältutbyte (DFX). Om du ändrar värdet för ett fält blir fältet vanligtvis smutsigt automatiskt, så du behöver sällan anropa SetFieldDirty dig själv, men ibland kanske du vill se till att kolumnerna uttryckligen uppdateras eller infogas oavsett vilket värde som finns i fältdatamedlemmen. DFX-mekanismen använder också användningen av PSEUDONULL. Mer information finns i CDaoFieldExchange::m_nOperation.

Om dubbelbuffertningsmekanismen inte används, så anger inte fältets värde automatiskt som smutsigt. I det här fallet är det nödvändigt att uttryckligen ange fältet som smutsigt. Flaggan i m_bCheckCacheForDirtyFields styr den här automatiska fältkontrollen.

Anmärkning

Anropa endast den här medlemsfunktionen när du har anropat Redigera eller Lägg tillNy.

Om du använder NULL för det första argumentet i funktionen tillämpas funktionen på alla outputColumn fält, inte på paramfält i CDaoFieldExchange. Till exempel anropet

SetFieldDirty(NULL);

anger endast outputColumn fält till NULL. paramfält påverkas inte.

Om du vill arbeta med en param måste du ange den faktiska adressen för den enskilda param som du vill arbeta med, till exempel:

SetFieldDirty(&m_strParam);

Det innebär att du inte kan ange alla paramfält till NULL, som du kan med outputColumn fält.

SetFieldDirty implementeras via DoFieldExchange.

CDaoRecordset::SetFieldNull

Anropa den här medlemsfunktionen för att flagga en fältdatamedlem i postuppsättningen som Null (specifikt utan värde) eller som icke-Null.

void SetFieldNull(
    void* pv,
    BOOL bNull = TRUE);

Parameterar

Pv
Innehåller adressen till en fältdatamedlem i postuppsättningen eller NULL. Om null flaggas alla fältdatamedlemmar i postuppsättningen. (C++ NULL är inte samma sak som Null i databasterminologin, vilket innebär att "inte har något värde".

bNull
Nonzero om fältdatamedlemmen ska flaggas som utan värde (Null). Annars 0 om fältdatamedlemmen ska flaggas som icke-Null.

Anmärkningar

SetFieldNull används för fält som är bundna i mekanismen DoFieldExchange .

När du lägger till en ny post i en postuppsättning, är alla fältdatamedlemmar ursprungligen inställda på ett Null-värde och flaggas som "smutsiga" (ändrade). När du hämtar en post från en datakälla har dess kolumner antingen redan värden eller null. Om det inte är lämpligt att göra ett fält till Null genereras en CDaoException .

Om du använder mekanismen för dubbel buffring, till exempel om du specifikt vill ange att ett fält i den aktuella posten inte har något värde, anropar du SetFieldNull med bNull inställt på TRUE för att flagga det som Null. Om ett fält tidigare har markerats som Null och du nu vill ge det ett värde anger du dess nya värde. Du behöver inte ta bort Null-flaggan med SetFieldNull. Om du vill avgöra om fältet tillåts vara Null anropar du IsFieldNullable.

Om du inte använder mekanismen för dubbelbuffertning anger du inte automatiskt fältet som smutsigt och icke-Null om du ändrar värdet för fältet. Du måste specifikt ange fälten smutsiga och icke-Null. Flaggan i m_bCheckCacheForDirtyFields styr den här automatiska fältkontrollen.

DFX-mekanismen använder sig av PSEUDONULL. Mer information finns i CDaoFieldExchange::m_nOperation.

Anmärkning

Anropa endast den här medlemsfunktionen när du har anropat Redigera eller Lägg tillNy.

Om du använder NULL för det första argumentet i funktionen tillämpas funktionen endast på outputColumn fält, inte på paramfält i CDaoFieldExchange. Till exempel anropet

SetFieldNull(NULL);

anger endast outputColumn fält till NULL. paramfält påverkas inte.

CDaoRecordset::SetFieldValue

Anropa den här medlemsfunktionen för att ange värdet för ett fält, antingen genom ordningstal eller genom att ändra värdet för strängen.

virtual void SetFieldValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

virtual void SetFieldValue(
    int nIndex,
    const COleVariant& varValue);

void SetFieldValue(
    LPCTSTR lpszName,
    LPCTSTR lpszValue);

void SetFieldValue(
    int nIndex,
    LPCTSTR lpszValue);

Parameterar

lpszName
En pekare till en sträng som innehåller namnet på ett fält.

varValue
En referens till ett COleVariant-objekt som innehåller värdet för fältets innehåll.

nIndex
Ett heltal som representerar fältets ordningstal i postuppsättningens fältsamling (nollbaserad).

lpszValue
En pekare till en sträng som innehåller värdet för fältets innehåll.

Anmärkningar

Använd SetFieldValue och GetFieldValue för att dynamiskt binda fält vid körning i stället för statisk bindning av kolumner med hjälp av DoFieldExchange-mekanismen .

Om du inte skapar en UNICODE-postuppsättning måste du antingen använda en form av SetFieldValue som inte innehåller en COleVariant parameter, eller så måste objektet uttryckligen COleVariant deklareras som ANSI. Detta kan göras med hjälp av konstruktorn COleVariant::COleVariant(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT (ANSI) eller med hjälp COleVariant av funktionen SetString(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT.

Relaterad information finns i avsnitten "Fältobjekt" och "Värdeegenskap" i DAO-hjälpen.

CDaoRecordset::SetFieldValueNull

Anropa den här medlemsfunktionen för att ange fältet till ett Null-värde.

void SetFieldValueNull(int nIndex);
void SetFieldValueNull(LPCTSTR lpszName);

Parameterar

nIndex
Indexet för fältet i postuppsättningen för sökning efter nollbaserat index.

lpszName
Namnet på fältet i postuppsättningen för sökning efter namn.

Anmärkningar

C++ NULL är inte samma sak som Null, vilket i databasterminologin innebär att "inte ha något värde".

Relaterad information finns i avsnitten "Fältobjekt" och "Värdeegenskap" i DAO-hjälpen.

CDaoRecordset::SetLockingMode

Anropa den här medlemsfunktionen för att ange typ av låsning för postuppsättningen.

void SetLockingMode(BOOL bPessimistic);

Parameterar

bPessimistisk
En flagga som anger typen av låsning.

Anmärkningar

När pessimistisk låsning är i kraft låses 2K-sidan som innehåller den post som du redigerar så fort du anropar Edit medlemsfunktionen. Sidan låss upp när du anropar Update medlemsfunktionen eller Close någon av åtgärderna Flytta eller Hitta.

När optimistisk låsning gäller låses endast 2K-sidan som innehåller posten medan posten uppdateras med Update medlemsfunktionen.

Om en sida är låst kan ingen annan användare redigera poster på samma sida. Om du anropar SetLockingMode och skickar ett icke-nollvärde och en annan användare redan har sidan låst utlöses ett undantag när du anropar Edit. Andra användare kan läsa data från låsta sidor.

Om du anropar SetLockingMode med ett nollvärde och senare anrop Update medan sidan är låst av en annan användare uppstår ett undantag. Om du vill se ändringar i din post av en annan användare (och förlora dina ändringar) anropar du SetBookmark medlemsfunktionen med bokmärkesvärdet för den aktuella posten.

När du arbetar med ODBC-datakällor är låsläget alltid optimistiskt.

CDaoRecordset::SetParamValue

Anropa den här medlemsfunktionen för att ange värdet för en parameter i postuppsättningen vid körning.

virtual void SetParamValue(
    int nIndex,
    const COleVariant& varValue);

virtual void SetParamValue(
    LPCTSTR lpszName,
    const COleVariant& varValue);

Parameterar

nIndex
Parameterns numeriska position i querydef-samlingen Parametrar.

var
Värdet som ska anges. se Kommentarer.

lpszName
Namnet på parametern vars värde du vill ange.

Anmärkningar

Parametern måste redan ha upprättats som en del av postuppsättningens SQL-sträng. Du kan komma åt parametern antingen efter namn eller efter dess indexposition i samlingen.

Ange värdet som ska anges som ett COleVariant objekt. Information om hur du anger önskat värde och typ i objektet COleVariant finns i klassen COleVariant. Om du inte skapar en UNICODE-postuppsättning måste objektet uttryckligen COleVariant deklareras som ANSI. Detta kan göras med hjälp av konstruktorn COleVariant::COleVariant(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT (ANSI) eller med hjälp COleVariant av funktionen SetString(lpszSrc,vtSrc) med vtSrc inställt på VT_BSTRT.

CDaoRecordset::SetParamValueNull

Anropa den här medlemsfunktionen för att ange parametern till ett Null-värde.

void SetParamValueNull(int nIndex);
void SetParamValueNull(LPCTSTR lpszName);

Parameterar

nIndex
Indexet för fältet i postuppsättningen för sökning efter nollbaserat index.

lpszName
Namnet på fältet i postuppsättningen för sökning efter namn.

Anmärkningar

C++ NULL är inte samma sak som Null, vilket i databasterminologin innebär att "inte ha något värde".

CDaoRecordset::SetPercentPosition

Anropa den här medlemsfunktionen för att ange ett värde som ändrar den ungefärliga platsen för den aktuella posten i postuppsättningsobjektet baserat på en procentandel av posterna i postuppsättningen.

void SetPercentPosition(float fPosition);

Parameterar

fPosition
Ett tal mellan 0 och 100.

Anmärkningar

När du arbetar med en postuppsättning av dynasettyp eller ögonblicksbildstyp fyller du först i postuppsättningen genom att flytta till den sista posten innan du anropar SetPercentPosition. Om du anropar SetPercentPosition innan du fyller i postuppsättningen fullt ut är mängden rörelse relativ till det antal poster som används, vilket anges av värdet för GetRecordCount. Du kan flytta till den sista posten genom att anropa MoveLast.

När du anropar SetPercentPositionblir posten vid den ungefärliga position som motsvarar det värdet aktuell.

Anmärkning

Det rekommenderas inte att du anropar SetPercentPosition för att flytta den aktuella posten till en viss post i en postuppsättning. Anropa funktionen SetBookmark-medlem i stället.

Relaterad information finns i avsnittet "PercentPosition-egenskap" i DAO-hjälpen.

CDaoRecordset::Update

Anropa den här medlemsfunktionen efter ett anrop till AddNew funktionen eller Edit medlemsfunktionen.

virtual void Update();

Anmärkningar

Det här anropet AddNew krävs för att slutföra åtgärden eller Edit .

Både AddNew och Edit förbereder en redigeringsbuffert där de tillagda eller redigerade data placeras för att spara till datakällan. Update sparar data. Endast de fält som har markerats eller identifierats som ändrade uppdateras.

Om datakällan stöder transaktioner kan du göra anropet Update (och dess motsvarande AddNew eller Edit anrop) del av en transaktion.

Försiktighet

Om du anropar Update utan att först anropa antingen AddNew eller Edit, Update genererar en CDaoException. Om du anropar AddNew eller Editmåste du anropa Update innan du anropar MoveNext eller stänger antingen postuppsättningen eller datakällans anslutning. Annars går dina ändringar förlorade utan avisering.

När postuppsättningsobjektet är pessimistiskt låst i en miljö med flera användare förblir posten låst från tiden Edit tills uppdateringen är klar. Om postuppsättningen är optimistiskt låst låses posten och jämförs med den förredigerade posten precis innan den uppdateras i databasen. Om posten har ändrats sedan du anropade EditUpdate misslyckas åtgärden och MFC genererar ett undantag. Du kan ändra låsningsläget med SetLockingMode.

Anmärkning

Optimistisk låsning används alltid i externa databasformat, till exempel ODBC och installationsbar ISAM.

Relaterad information finns i avsnitten "AddNew Method", "CancelUpdate Method", "Delete Method", "LastModified Property", "Update Method" och "EditMode Property" i DAO-hjälpen.

Se även

CObject-klass
hierarkidiagram
CDaoTableDef-klass
CDaoWorkspace-klass
CDaoDatabase-klass
CDaoQueryDef-klass