Classe CRecordView

Visualizzazione che mostra i record del database nei controlli.

Sintassi

class AFX_NOVTABLE CRecordView : public CFormView

Membri

Costruttori protetti

Nome Descrizione
CRecordView::CRecordView Costruisce un oggetto CRecordView.

Metodi pubblici

Nome Descrizione
CRecordView::IsOnFirstRecord Restituisce un valore diverso da zero se il record corrente è il primo record nell'oggetto recordset associato.
CRecordView::IsOnLastRecord Restituisce un valore diverso da zero se il record corrente è l'ultimo record nell'oggetto recordset associato.
CRecordView::OnGetRecordset Restituisce un puntatore a un oggetto di una classe derivata da CRecordset. ClassWizard esegue l'override di questa funzione automaticamente e crea il recordset, se necessario.
CRecordView::OnMove

Metodi protetti

Nome Descrizione
CRecordView::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 CRecordset oggetto . La visualizzazione viene creata da una risorsa modello di finestra di dialogo e visualizza i campi dell'oggetto CRecordset nei controlli del modello di finestra di dialogo. L'oggetto CRecordView usa lo scambio di dati di dialogo (DDX) e lo scambio di campi di record (RFX) per automatizzare lo spostamento dei dati tra i controlli della maschera e i campi del recordset. CRecordView 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

Se si usano le classi DAO (Data Access Objects) anziché le classi ODBC (Open Database Connectivity), usare invece la classe CDaoRecordView . Per altre informazioni, vedere l'articolo Panoramica: Programmazione del database.

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 non si crea la classe di visualizzazione record con la Creazione guidata applicazione, è possibile crearla in un secondo momento con ClassWizard. 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. 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.

CRecordView 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.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CView

CScrollView

CFormView

CRecordView

Requisiti

Intestazione: afxdb.h

CRecordView::CRecordView

Quando si crea un oggetto di un tipo derivato da CRecordView, 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 CRecordView(LPCTSTR lpszTemplateName);
explicit CRecordView(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 CRecordView::CRecordView con il nome o l'ID della risorsa come argomento, come illustrato nell'esempio seguente.

CRecordView::OnInitialUpdate chiama UpdateData, che chiama DoDataExchange. Questa chiamata iniziale per DoDataExchange connette CRecordView i controlli (indirettamente) ai CRecordset 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 CRecordView::IDD, lo specifica nella dichiarazione di classe e lo usa nell'elenco di inizializzazione dei membri per il costruttore.

Esempio

CMyRecordView::CMyRecordView()
   : CRecordView(CMyRecordView::IDD)
{
   m_pSet = NULL;
   // TODO: add construction code here

}

CRecordView::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 per il passaggio al primo o al record precedente.

CRecordView::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 non è in grado di rilevare la fine del recordset fino a quando l'utente non lo ha spostato oltre. L'utente deve spostarsi 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. IsOnLastRecord è anche inaffidabile dopo una chiamata alla funzione OnRecordLastdi implementazione , che gestisce il comando ID_RECORD_LAST o CRecordset::MoveLast.

CRecordView::OnGetRecordset

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

virtual CRecordset* OnGetRecordset() = 0;

Valore restituito

Puntatore a un oggetto derivato da se CRecordsetl'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.

CRecordView::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 appropriata Move dell'oggetto CRecordset 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 ancorabile, 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 CRecordset
Classe CFormView