Condividi tramite


Classe CDaoRecordView

Visualizzazione che mostra i record del database nei controlli.

Sintassi

class AFX_NOVTABLE CDaoRecordView : public CFormView

Membri

Costruttori protetti

Nome Descrizione
CDaoRecordView::CDaoRecordView Costruisce un oggetto CDaoRecordView.

Metodi pubblici

Nome Descrizione
CDaoRecordView::IsOnFirstRecord Restituisce un valore diverso da zero se il record corrente è il primo record nell'oggetto recordset associato.
CDaoRecordView::IsOnLastRecord Restituisce un valore diverso da zero se il record corrente è l'ultimo record nell'oggetto recordset associato.
CDaoRecordView::OnGetRecordset Restituisce un puntatore a un oggetto di una classe derivata da CDaoRecordset. ClassWizard esegue l'override di questa funzione automaticamente e crea il recordset, se necessario.
CDaoRecordView::OnMove Se il record corrente è stato modificato, lo aggiorna nell'origine dati, quindi passa al record specificato (successivo, precedente, primo o ultimo).

Osservazioni:

La visualizzazione è una visualizzazione modulo direttamente connessa a un CDaoRecordset oggetto . La visualizzazione viene creata da una risorsa modello di finestra di dialogo e visualizza i campi dell'oggetto CDaoRecordset nei controlli del modello di finestra di dialogo. L'oggetto CDaoRecordView utilizza lo scambio di dati di dialogo (DDX) e lo scambio di campi di record DAO (DFX) per automatizzare lo spostamento dei dati tra i controlli nel modulo e i campi del recordset. CDaoRecordView fornisce inoltre un'implementazione predefinita per il passaggio al primo, successivo, precedente o ultimo record e un'interfaccia per l'aggiornamento del record attualmente in visualizzazione.

Nota

Le classi di database DAO sono distinte dalle classi di database MFC basate su Open Database Connessione ivity (ODBC). Tutti i nomi delle classi di database DAO hanno il prefisso "CDao". È comunque possibile accedere alle origini dati ODBC con le classi DAO; Le classi DAO offrono in genere funzionalità superiori perché usano il motore di database Microsoft Jet.

Il modo più comune per creare la visualizzazione record consiste nell'Applicazione guidata. La Creazione guidata applicazione crea sia la classe di visualizzazione record che la classe recordset associata come parte dell'applicazione di base scheletro.

Se è sufficiente un singolo modulo, l'approccio della Procedura guidata dell'applicazione è più semplice. ClassWizard consente di decidere di usare una visualizzazione record in un secondo momento nel processo di sviluppo. Se non si crea la classe di visualizzazione record con la Creazione guidata applicazione, è possibile crearla in un secondo momento con ClassWizard. L'uso di ClassWizard per creare una visualizzazione record e un recordset separatamente e quindi connetterli è l'approccio più flessibile perché offre un maggiore controllo nella denominazione della classe recordset e del relativo . H/. File CPP. Questo approccio consente anche di avere più visualizzazioni record nella stessa classe recordset.

Per semplificare lo spostamento degli utenti finali dal record al record nella visualizzazione record, la Creazione guidata applicazione crea risorse del menu (e facoltativamente della barra degli strumenti) per passare al primo, successivo, precedente o ultimo record. Se si crea una classe di visualizzazione record con ClassWizard, è necessario creare queste risorse manualmente con gli editor di menu e bitmap.

Per informazioni sull'implementazione predefinita per lo spostamento da record a record, vedere IsOnFirstRecord e IsOnLastRecord l'articolo Uso di una visualizzazione record, applicabile sia a che CDaoRecordViewa CRecordView .

CDaoRecordView tiene traccia della posizione dell'utente nel recordset in modo che la visualizzazione record possa aggiornare l'interfaccia utente. Quando l'utente passa a una delle estremità del recordset, la visualizzazione record disabilita gli oggetti dell'interfaccia utente, ad esempio le voci di menu o i pulsanti della barra degli strumenti, per spostarsi ulteriormente nella stessa direzione.

Per altre informazioni sulla dichiarazione e sull'uso delle classi di record e recordset, vedere "Progettazione e creazione di una visualizzazione record" nell'articolo Visualizzazioni record. Per altre informazioni sul funzionamento delle visualizzazioni dei record e su come usarle, vedere l'articolo Uso di una visualizzazione record. Tutti gli articoli indicati in precedenza si applicano sia a che CDaoRecordViewa CRecordView .

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CDaoRecordView

Requisiti

Intestazione: afxdao.h

CDaoRecordView::CDaoRecordView

Quando si crea un oggetto di un tipo derivato da CDaoRecordView, chiamare una delle due forme del costruttore per inizializzare l'oggetto visualizzazione e identificare la risorsa della finestra di dialogo su cui si basa la vista.

explicit CDaoRecordView(LPCTSTR lpszTemplateName);
explicit CDaoRecordView(UINT nIDTemplate);

Parametri

lpszTemplateName
Contiene una stringa con terminazione Null che corrisponde al nome di una risorsa modello di finestra di dialogo.

nIDTemplate
Contiene il numero ID di una risorsa modello di finestra di dialogo.

Osservazioni:

È possibile identificare la risorsa in base al nome (passare una stringa come argomento al costruttore) o tramite il relativo ID (passare un intero senza segno come argomento). È consigliabile usare un ID risorsa.

Nota

La classe derivata deve fornire il proprio costruttore. Nel costruttore della classe derivata chiamare il costruttore CDaoRecordView::CDaoRecordView con il nome o l'ID della risorsa come argomento.

CDaoRecordView::OnInitialUpdate chiama CWnd::UpdateData, che chiama CWnd::DoDataExchange. Questa chiamata iniziale per DoDataExchange connette CDaoRecordView i controlli (indirettamente) ai CDaoRecordset membri dati dei campi creati da ClassWizard. Questi membri dati non possono essere usati fino a quando non si chiama la funzione membro della classe CFormView::OnInitialUpdate di base.

Nota

Se si usa ClassWizard, la procedura guidata definisce un enum valore CDaoRecordView::IDD nella dichiarazione di classe e lo usa nell'elenco di inizializzazione dei membri per il costruttore.

CMyDaoRecordView::CMyDaoRecordView()
    : CDaoRecordView(CMyDaoRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here
}

CDaoRecordView::IsOnFirstRecord

Chiamare questa funzione membro per determinare se il record corrente è il primo record nell'oggetto recordset associato a questa visualizzazione record.

BOOL IsOnFirstRecord();

Valore restituito

Diverso da zero se il record corrente è il primo record nel recordset; in caso contrario, 0.

Osservazioni:

Questa funzione è utile per scrivere implementazioni personalizzate dei gestori di aggiornamento dei comandi predefiniti scritti da ClassWizard.

Se l'utente passa al primo record, il framework disabilita tutti gli oggetti dell'interfaccia utente (ad esempio, voci di menu o pulsanti della barra degli strumenti) per passare al primo o al record precedente.

CDaoRecordView::IsOnLastRecord

Chiamare questa funzione membro per determinare se il record corrente è l'ultimo record nell'oggetto recordset associato a questa visualizzazione record.

BOOL IsOnLastRecord();

Valore restituito

Diverso da zero se il record corrente è l'ultimo record nel recordset; in caso contrario, 0.

Osservazioni:

Questa funzione è utile per scrivere implementazioni personalizzate dei gestori di aggiornamento dei comandi predefiniti scritti da ClassWizard per supportare un'interfaccia utente per lo spostamento da record a record.

Attenzione

Il risultato di questa funzione è affidabile, ad eccezione del fatto che la visualizzazione potrebbe non essere in grado di rilevare la fine del recordset fino a quando l'utente non lo ha spostato oltre. L'utente potrebbe dover passare oltre l'ultimo record prima che la visualizzazione record possa indicare che deve disabilitare tutti gli oggetti dell'interfaccia utente per passare al record successivo o all'ultimo record. Se l'utente passa oltre l'ultimo record e quindi torna all'ultimo record (o prima), la visualizzazione record può tenere traccia della posizione dell'utente nel recordset e disabilitare correttamente gli oggetti dell'interfaccia utente.

CDaoRecordView::OnGetRecordset

Restituisce un puntatore all'oggetto CDaoRecordsetderivato da associato alla visualizzazione record.

virtual CDaoRecordset* OnGetRecordset() = 0;

Valore restituito

Puntatore a un oggetto derivato da se CDaoRecordsetl'oggetto è stato creato correttamente; in caso contrario, un puntatore NULL.

Osservazioni:

È necessario eseguire l'override di questa funzione membro per costruire o ottenere un oggetto recordset e restituirvi un puntatore. Se si dichiara la classe di visualizzazione record con ClassWizard, la procedura guidata scrive automaticamente un override predefinito. L'implementazione predefinita di ClassWizard restituisce il puntatore del recordset archiviato nella visualizzazione record, se presente. In caso contrario, crea un oggetto recordset del tipo specificato con ClassWizard e chiama la relativa Open funzione membro per aprire la tabella o eseguire la query, quindi restituisce un puntatore all'oggetto .

Per altre informazioni ed esempi, vedere l'articolo Visualizzare record: uso di una visualizzazione record.

CDaoRecordView::OnMove

Chiamare questa funzione membro per passare a un record diverso nel recordset e visualizzarne i campi nei controlli della visualizzazione record.

virtual BOOL OnMove(UINT nIDMoveCommand);

Parametri

nIDMoveCommand
Uno dei valori ID comando standard seguenti:

  • ID_RECORD_FIRST Passare al primo record nel recordset.

  • ID_RECORD_LAST Passare all'ultimo record nel recordset.

  • ID_RECORD_NEXT Passare al record successivo nel recordset.

  • ID_RECORD_PREV Passare al record precedente nel recordset.

Valore restituito

Diverso da zero se lo spostamento ha avuto esito positivo; in caso contrario, 0 se la richiesta di spostamento è stata negata.

Osservazioni:

L'implementazione predefinita chiama la funzione membro Move appropriata dell'oggetto CDaoRecordset associato alla visualizzazione record.

Per impostazione predefinita, OnMove aggiorna il record corrente nell'origine dati se l'utente lo ha modificato nella visualizzazione record.

La Creazione guidata applicazione crea una risorsa di menu con le voci di menu First Record, Last Record, Next Record e Previous Record. Se si seleziona l'opzione Barra degli strumenti iniziale, la Creazione guidata applicazione crea anche una barra degli strumenti con pulsanti corrispondenti a questi comandi.

Se si passa oltre l'ultimo record del recordset, la visualizzazione record continua a visualizzare l'ultimo record. Se si passa all'indietro oltre il primo record, la visualizzazione record continua a visualizzare il primo record.

Attenzione

La chiamata OnMove genera un'eccezione se il recordset non dispone di record. Chiamare la funzione del gestore di aggiornamento dell'interfaccia utente appropriata , OnUpdateRecordFirst, OnUpdateRecordLastOnUpdateRecordNext, o OnUpdateRecordPrev , prima dell'operazione di spostamento corrispondente per determinare se il recordset contiene record.

Vedi anche

Classe CFormView
Grafico della gerarchia
Classe CDaoRecordset
Classe CDaoTableDef
Classe CDaoQueryDef
Classe CDaoDatabase
Classe CDaoWorkspace
Classe CFormView