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à
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 OnRecordLast
di implementazione , che gestisce il comando ID_RECORD_LAST o CRecordset::MoveLast
.
CRecordView::OnGetRecordset
Restituisce un puntatore all'oggetto CRecordset
derivato da associato alla visualizzazione record.
virtual CRecordset* OnGetRecordset() = 0;
Valore restituito
Puntatore a un oggetto derivato da se CRecordset
l'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
, OnUpdateRecordLast
OnUpdateRecordNext
, 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