Funkcje wymiany pól rekordów
W tym temacie wymieniono funkcje Wymiany pól rekordów (RFX, Bulk RFX i DFX) używane do automatyzowania transferu danych między obiektem zestawu rekordów a jego źródłem danych oraz wykonywania innych operacji na danych.
Jeśli używasz klas opartych na odBC i zaimplementowano pobieranie wierszy zbiorczych, należy ręcznie zastąpić DoBulkFieldExchange
funkcję CRecordset
składową klasy , wywołując funkcje Bulk RFX dla każdego elementu członkowskiego odpowiadającego kolumnie źródła danych.
Jeśli nie zaimplementowano zbiorczego pobierania wierszy w klasach opartych na odBC lub jeśli używasz klas opartych na dao (przestarzałe), klasa ClassWizard zastąpi DoFieldExchange
funkcję CRecordset
CDaoRecordset
składową lub wywołując funkcje RFX (dla klas ODBC) lub funkcje DFX (dla klas DAO) dla każdego elementu członkowskiego danych pola w zestawie rekordów.
Funkcje wymiany rekordów przesyłają dane za każdym razem, gdy platforma wywołuje DoFieldExchange
metodę lub DoBulkFieldExchange
. Każda funkcja przesyła określony typ danych.
Aby uzyskać więcej informacji na temat sposobu użycia tych funkcji, zobacz artykuły Wymiana pól rekordów: Jak działa RFX (ODBC). Aby uzyskać więcej informacji na temat zbiorczego pobierania wierszy, zobacz artykuł Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC).
W przypadku kolumn danych, które są powiązane dynamicznie, można również wywołać funkcje RFX lub DFX samodzielnie, zgodnie z opisem w artykułach Zestaw rekordów: kolumny danych dynamicznie wiązania (ODBC). Ponadto można napisać własne niestandardowe procedury RFX lub DFX, zgodnie z opisem w uwagach technicznych 43 (dla ODBC) i Technical Note 53 (for DAO).
Aby zapoznać się z przykładem funkcji RFX i Bulk RFX wyświetlanych w DoFieldExchange
funkcjach i DoBulkFieldExchange
, zobacz RFX_Text i [RFX_Text_Bulk]#rfx_text_bulk). Funkcje DFX są bardzo podobne do funkcji RFX.
Funkcje RFX (ODBC)
Nazwa/nazwisko | opis |
---|---|
RFX_Binary | Transferuje tablice bajtów typu CByteArray. |
RFX_Bool | Przesyła dane logiczne. |
RFX_Byte | Transferuje pojedynczy bajt danych. |
RFX_Date | Przesyła dane o godzinie i dacie przy użyciu języka CTime lub TIMESTAMP_STRUCT. |
RFX_Double | Transferuje dane zmiennoprzecinkowe o podwójnej precyzji. |
RFX_Int | Transferuje dane całkowite. |
RFX_Long | Transferuje długie dane całkowite. |
RFX_LongBinary | Transferuje dane binarne dużego obiektu (BLOB) z obiektem klasy CLongBinary . |
RFX_Single | Przesyła dane zmiennoprzecinkowe. |
RFX_Text | Przesyła dane ciągu. |
Zbiorcze funkcje RFX (ODBC)
Nazwa/nazwisko | opis |
---|---|
RFX_Binary_Bulk | Transferuje tablice danych bajtów. |
RFX_Bool_Bulk | Przesyła tablice danych logicznych. |
RFX_Byte_Bulk | Transferuje tablice pojedynczych bajtów. |
RFX_Date_Bulk | Przesyła tablice danych typu TIMESTAMP_STRUCT. |
RFX_Double_Bulk | Przesyła tablice danych o podwójnej precyzji i zmiennoprzecinku. |
RFX_Int_Bulk | Transferuje tablice danych całkowitych. |
RFX_Long_Bulk | Transferuje tablice długich danych całkowitych. |
RFX_Single_Bulk | Transferuje tablice danych zmiennoprzecinkowych. |
RFX_Text_Bulk | Przesyła tablice danych typu LPSTR. |
Funkcje DFX (DAO)
Nazwa/nazwisko | opis |
---|---|
DFX_Binary | Transferuje tablice bajtów typu CByteArray. |
DFX_Bool | Przesyła dane logiczne. |
DFX_Byte | Transferuje pojedynczy bajt danych. |
DFX_Currency | Przesyła dane waluty typu COleCurrency. |
DFX_DateTime | Przesyła dane o godzinie i dacie typu COleDateTime. |
DFX_Double | Transferuje dane zmiennoprzecinkowe o podwójnej precyzji. |
DFX_Long | Transferuje długie dane całkowite. |
DFX_LongBinary | Transferuje dane binarne dużego obiektu (BLOB) z obiektem CLongBinary klasy. W przypadku daO zaleca się użycie DFX_Binary zamiast tego. |
DFX_Short | Transferuje krótkie dane całkowite. |
DFX_Single | Przesyła dane zmiennoprzecinkowe. |
DFX_Text | Przesyła dane ciągu. |
=============================================
RFX_Binary
Transferuje tablice bajtów między elementami członkowskimi CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_BINARY, SQL_VARBINARY lub SQL_LONGVARBINARY.
Składnia
void RFX_Binary(
CFieldExchange* pFX,
const char* szName,
CByteArray& value,
int nMaxLength = 255);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu CByteArray jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
nMaxLength
Maksymalna dozwolona długość przesyłanego ciągu lub tablicy. Wartość domyślna nMaxLength to 255. Wartości prawne to od 1 do INT_MAX. Platforma przydziela tę ilość miejsca dla danych. Aby uzyskać najlepszą wydajność, przekaż wystarczająco dużą wartość, aby pomieścić największy oczekiwany element danych.
Uwagi
Dane w źródle danych tych typów są mapowane na i z typu CByteArray
w zestawie rekordów.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Bool
Przesyła dane logiczne między elementami członkowskimi CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_BIT.
Składnia
void RFX_Bool(
CFieldExchange* pFX,
const char* szName,
BOOL& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu BOOL jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Byte
Transferuje pojedyncze bajty między elementami członkowskimi CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_TINYINT.
Składnia
void RFX_Byte(
CFieldExchange* pFX,
const char* szName,
BYTE& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu BYTE jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Date
Transferuje CTime
lub TIMESTAMP_STRUCT dane między elementami członkowskimi CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_DATE, SQL_TIME lub SQL_TIMESTAMP.
Składnia
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
CTime& value);
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
TIMESTAMP_STRUCT& value);
void RFX_Date(
CFieldExchange* pFX,
const char* szName,
COleDateTime& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie członkowskim danych; wartość, która ma zostać przeniesiona. Różne wersje funkcji przyjmują różne typy danych dla wartości:
Pierwsza wersja funkcji przyjmuje odwołanie do obiektu CTime . W przypadku transferu z zestawu rekordów do źródła danych ta wartość jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Druga wersja funkcji przyjmuje odwołanie do TIMESTAMP_STRUCT
struktury. Musisz skonfigurować tę strukturę samodzielnie przed wywołaniem. Obsługa wymiany danych dialogowych (DDX) ani obsługa kreatora kodu nie jest dostępna dla tej wersji. Trzecia wersja funkcji działa podobnie do pierwszej wersji, z tą różnicą, że przyjmuje odwołanie do obiektu COleDateTime .
Uwagi
Wersja CTime
funkcji nakłada obciążenie niektórych przetwarzania pośredniego i ma nieco ograniczony zakres. Jeśli znajdziesz jeden z tych czynników zbyt ograniczający, użyj drugiej wersji funkcji. Należy jednak pamiętać o braku kreatora kodu i obsłudze DDX oraz konieczności samodzielnego skonfigurowania struktury.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Double
Transferuje dane podwójne zmiennoprzecinkowe między elementami członkowskimi CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_DOUBLE.
Składnia
void RFX_Double(
CFieldExchange* pFX,
const char* szName,
double& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu double
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Int
Transferuje dane całkowite między elementami członkowskimi CRecordset
danych pól obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_SMALLINT.
Składnia
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu int
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Long
Transferuje długie dane całkowite między elementami członkowskimi CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_INTEGER.
Składnia
void RFX_Long(
CFieldExchange* pFX,
const char* szName,
LONG&
value );
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu long
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_LongBinary
Transferuje dane binarne dużego obiektu (BLOB) przy użyciu klasy CLongBinary między składowych CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_LONGVARBINARY lub SQL_LONGVARCHAR.
Składnia
void RFX_LongBinary(
CFieldExchange* pFX,
const char* szName,
CLongBinary& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu CLongBinary
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Single
Transferuje dane zmiennoprzecinkowe między elementami członkowskimi CRecordset
danych pola obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_REAL.
Składnia
void RFX_Single(
CFieldExchange* pFX,
const char* szName,
float& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu float
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Text
Transferuje CString
dane między elementami członkowskimi CRecordset
danych pola obiektu i kolumnami rekordu w źródle danych typu ODBC SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL lub SQL_NUMERIC.
Składnia
void RFX_Text(
CFieldExchange* pFX,
const char* szName,
CString& value,
int nMaxLength = 255,
int nColumnType = SQL_VARCHAR,
short nScale = 0);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange
. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu CString
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
nMaxLength
Maksymalna dozwolona długość przesyłanego ciągu lub tablicy. Wartość domyślna nMaxLength to 255. Wartości prawne to od 1 do INT_MAX). Platforma przydziela tę ilość miejsca dla danych. Aby uzyskać najlepszą wydajność, przekaż wystarczająco dużą wartość, aby pomieścić największy oczekiwany element danych.
nColumnType
Używane głównie dla parametrów. Liczba całkowita wskazująca typ danych parametru. Typ jest typem danych ODBC formularza SQL_XXX.
nScale
Określa skalę dla wartości typu ODBC SQL_DECIMAL lub SQL_NUMERIC. Wartość nScale jest przydatna tylko podczas ustawiania wartości parametrów. Aby uzyskać więcej informacji, zobacz temat "Precyzja, skala, długość i rozmiar wyświetlania" w dodatku D w dokumentacji programisty zestawu SDK ODBC.
Uwagi
Dane w źródle danych wszystkich tych typów są mapowane na i z CString
zestawu rekordów.
Przykład
W tym przykładzie pokazano kilka wywołań elementu RFX_Text
. Zwróć również uwagę na dwa wywołania funkcji CFieldExchange::SetFieldType
. W przypadku parametrów należy napisać wywołanie metody SetFieldType
i wywołanie RFX. Wywołanie kolumny wyjściowej i skojarzone z nim wywołania RFX są zwykle zapisywane przez kreatora kodu.
void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
// Macros such as RFX_Text() and RFX_Int() are dependent on the
// type of the member variable, not the type of the field in the database.
// ODBC will try to automatically convert the column value to the requested type
RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
RFX_Long(pFX, _T("[BillingID]"), m_BillingID);
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Param"), m_strParam);
}
Wymagania
Nagłówek: afxdb.h
RFX_Binary_Bulk
Przesyła wiele wierszy danych bajtów z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Binary_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths,
int nMaxLength);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
PrgByteVals
Wskaźnik do tablicy wartości BYTE. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgByteVals. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
nMaxLength
Maksymalna dozwolona długość wartości przechowywanych w tablicy wskazywana przez prgByteVals. Aby upewnić się, że dane nie zostaną obcięte, przekaż wystarczająco dużą wartość, aby pomieścić największy oczekiwany element danych.
Uwagi
Kolumna źródła danych może mieć typ ODBC SQL_BINARY, SQL_VARBINARY lub SQL_LONGVARBINARY. Zestaw rekordów musi zdefiniować element członkowski danych pola typu wskaźnik do typu BYTE.
Jeśli zainicjujesz wartości prgByteVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Zobacz RFX_Text_Bulk.
Wymagania
Nagłówek: afxdb.h
RFX_Bool_Bulk
Przesyła wiele wierszy danych logicznych z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Bool_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BOOL** prgBoolVals,
long** prgLengths);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
PrgBoolVals
Wskaźnik do tablicy wartości BOOL. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgBoolVals. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
Uwagi
Kolumna źródła danych musi mieć typ ODBC SQL_BIT. Zestaw rekordów musi zdefiniować składową danych pola wskaźnika typu na wartość BOOL.
Jeśli zainicjujesz wartości prgBoolVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Zobacz RFX_Text_Bulk.
Wymagania
Nagłówek: afxdb.h
RFX_Byte_Bulk
Transferuje wiele wierszy pojedynczych bajtów z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Byte_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
BYTE** prgByteVals,
long** prgLengths);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
PrgByteVals
Wskaźnik do tablicy wartości BYTE. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgByteVals. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
Uwagi
Kolumna źródła danych musi mieć typ ODBC SQL_TINYINT. Zestaw rekordów musi zdefiniować element członkowski danych pola typu wskaźnik do typu BYTE.
Jeśli zainicjujesz wartości prgByteVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Zobacz RFX_Text_Bulk.
Wymagania
Nagłówek: afxdb.h
RFX_Date_Bulk
Przesyła wiele wierszy TIMESTAMP_STRUCT danych z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Date_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
TIMESTAMP_STRUCT** prgTSVals,
long** prgLengths);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
prgTSVals
Wskaźnik do tablicy wartości TIMESTAMP_STRUCT. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów. Aby uzyskać więcej informacji o typie danych TIMESTAMP_STRUCT, zobacz temat "Typy danych języka C" w dodatku D w dokumentacji programisty zestawu SDK ODBC.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgTSVals. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
Uwagi
Kolumna źródła danych może mieć typ ODBC SQL_DATE, SQL_TIME lub SQL_TIMESTAMP. Zestaw rekordów musi zdefiniować element członkowski danych pola wskaźnika typu, aby TIMESTAMP_STRUCT.
Jeśli zainicjujesz wartości prgTSVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Zobacz RFX_Text_Bulk.
Wymagania
Nagłówek: afxdb.h
RFX_Double_Bulk
Transferuje wiele wierszy danych zmiennoprzecinkowych o podwójnej precyzji z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Double_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
double** prgDblVals,
long** prgLengths);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
prgDblVals
Wskaźnik do tablicy double
wartości. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgDblVals. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
Uwagi
Kolumna źródła danych musi mieć typ ODBC SQL_DOUBLE. Zestaw rekordów musi zdefiniować element członkowski danych pola typu wskaźnik na double
.
Jeśli zainicjujesz wartości prgDblVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Zobacz RFX_Text_Bulk.
Wymagania
Nagłówek: afxdb.h
RFX_Int_Bulk
Transferuje dane całkowite między elementami członkowskimi CRecordset
danych pól obiektu a kolumnami rekordu w źródle danych typu ODBC SQL_SMALLINT.
Składnia
void RFX_Int(
CFieldExchange* pFX,
const char* szName,
int& value);
Parametry
Pfx
Wskaźnik do obiektu klasy CFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji na temat operacji, CFieldExchange
które może określić obiekt, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu int
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
Przykład
Zobacz RFX_Text.
Wymagania
Nagłówek: afxdb.h
RFX_Long_Bulk
Transferuje wiele wierszy długich danych całkowitych z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Long_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
long** prgLongVals,
long** prgLengths);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
prgLongVals
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgLongVals. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
Uwagi
Kolumna źródła danych musi mieć typ ODBC SQL_INTEGER. Zestaw rekordów musi zdefiniować element członkowski danych pola typu wskaźnik na long
.
Jeśli zainicjujesz wartości prgLongVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Zobacz RFX_Text_Bulk.
Wymagania
Nagłówek: afxdb.h
RFX_Single_Bulk
Transferuje wiele wierszy danych zmiennoprzecinkowych z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Single_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
float** prgFltVals,
long** prgLengths);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
prgFltVals
Wskaźnik do tablicy float
wartości. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgFltVals. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
Uwagi
Kolumna źródła danych musi mieć typ ODBC SQL_REAL. Zestaw rekordów musi zdefiniować element członkowski danych pola typu wskaźnik na float
.
Jeśli zainicjujesz wartości prgFltVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Zobacz RFX_Text_Bulk.
Wymagania
Nagłówek: afxdb.h
RFX_Text_Bulk
Transferuje wiele wierszy danych znaków z kolumny źródła danych ODBC do odpowiedniej tablicy w obiekcie pochodnym CRecordset
.
Składnia
void RFX_Text_Bulk(
CFieldExchange* pFX,
LPCTSTR szName,
LPSTR* prgStrVals,
long** prgLengths,
int nMaxLength);
Parametry
Pfx
Wskaźnik do obiektu CFieldExchange . Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji. Aby uzyskać więcej informacji, zobacz artykuł Wymiana pól rekordów: Jak działa RFX.
szName
Nazwa kolumny danych.
prgStrVals
Wskaźnik do tablicy wartości LPSTR. Ta tablica będzie przechowywać dane, które mają być przesyłane ze źródła danych do zestawu rekordów. Należy pamiętać, że w bieżącej wersji ODBC te wartości nie mogą być Unicode.
prgLengths
Wskaźnik do tablicy długich liczb całkowitych. Ta tablica będzie przechowywać długość w bajtach każdej wartości w tablicy wskazywanej przez prgStrVals. Ta długość wyklucza znak zakończenia wartości null. Należy pamiętać, że wartość SQL_NULL_DATA będzie przechowywana, jeśli odpowiedni element danych zawiera wartość null. Aby uzyskać więcej informacji, zobacz funkcję SQLBindCol
interfejsu API ODBC w dokumentacji programisty zestawu SDK ODBC.
nMaxLength
Maksymalna dozwolona długość wartości przechowywanych w tablicy wskazywana przez prgStrVals, w tym znak zakończenia null. Aby upewnić się, że dane nie zostaną obcięte, przekaż wystarczająco dużą wartość, aby pomieścić największy oczekiwany element danych.
Uwagi
Kolumna źródła danych może mieć typ ODBC SQL_LONGVARCHAR, SQL_CHAR, SQL_VARCHAR, SQL_DECIMAL lub SQL_NUMERIC. Zestaw rekordów musi zdefiniować element członkowski danych pola typu LPSTR.
Jeśli zainicjujesz wartości prgStrVals i prgLengths na wartość NULL, wówczas tablice, do których wskazują, zostaną przydzielone automatycznie, z rozmiarami równymi rozmiarowi zestawu wierszy.
Uwaga
Wymiana pól rekordów zbiorczych przesyła tylko dane ze źródła danych do obiektu zestawu rekordów. Aby zestaw rekordów był aktualizowalny, należy użyć funkcji SQLSetPos
interfejsu API ODBC .
Aby uzyskać więcej informacji, zobacz artykuły Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC) i Wymiana pól rekordów (RFX).
Przykład
Musisz ręcznie napisać wywołania w przesłonięć DoBulkFieldExchange
. W tym przykładzie pokazano wywołanie metody RFX_Text_Bulk
, a także wywołanie RFX_Long_Bulk
metody na potrzeby transferu danych. Te wywołania są poprzedzone wywołaniem obiektu CFieldExchange::SetFieldType. Należy pamiętać, że w przypadku parametrów należy wywołać funkcje RFX zamiast funkcji Bulk RFX.
void CMultiCustomer::DoBulkFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Long_Bulk(pFX, _T("[CustomerID]"), &m_pCustomerID, &m_pcCustomerID);
RFX_Text_Bulk(pFX, _T("[ContactFirstName]"), &m_pContactFirstName, &m_pcContactFirstName, 50);
RFX_Text_Bulk(pFX, _T("[PostalCode]"), &m_pPostalCode, &m_pcPostalCode, 50);
RFX_Text_Bulk(pFX, _T("[L_Name]"), &m_pL_Name, &m_pcL_Name, 50);
RFX_Long_Bulk(pFX, _T("[BillingID]"), &m_pBillingID, &m_pcBillingID);
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Param"), m_strParam);
}
Wymagania
Nagłówek: afxdb.h
DFX_Binary
Transferuje tablice bajtów między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Binary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CByteArray& value,
int nPreAllocSize = AFX_DAO_BINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu CByteArray jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
nPreAllocSize
Platforma wstępnie przydziela tę ilość pamięci. Jeśli dane są większe, platforma przydzieli więcej miejsca zgodnie z potrzebami. Aby uzyskać lepszą wydajność, ustaw ten rozmiar na wartość wystarczająco dużą, aby zapobiec reallocations. Domyślny rozmiar jest zdefiniowany w AFXDAO. Plik H jako AFX_DAO_BINARY_DEFAULT_SIZE.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Wartość domyślna, AFX_DAO_DISABLE_FIELD_CACHE, nie używa podwójnego buforowania i należy samodzielnie wywołać metodę SetFieldDirty i SetFieldNull . Druga możliwa wartość, AFX_DAO_ENABLE_FIELD_CACHE, używa podwójnego buforowania i nie trzeba wykonywać dodatkowej pracy, aby oznaczyć pola zanieczyszczone lub Null. Ze względu na wydajność i pamięć należy unikać tej wartości, chyba że dane binarne są stosunkowo małe.
Uwaga
Możesz określić, czy dane są domyślnie buforowane dwukrotnie dla wszystkich pól, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_BYTES w dao i typem CByteArray w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Bool
Transferuje dane logiczne między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Bool(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BOOL& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu BOOL jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_BOOL w dao i typem BOOL w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Byte
Transferuje pojedyncze bajty między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Byte(
CDaoFieldExchange* pFX,
LPCTSTR szName,
BYTE& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu BYTE jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_BYTES w dao i typem BYTE w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Currency
Przesyła dane walutowe między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Currency(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleCurrency& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych ta wartość jest pobierana z określonego elementu członkowskiego danych typu COleCurrency. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_CURRENCY w dao i typem COleCurrency w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_DateTime
Przesyła dane o godzinie i dacie między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_DateTime(
CDaoFieldExchange* pFX,
LPCTSTR szName,
COleDateTime& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. Funkcja przyjmuje odwołanie do obiektu COleDateTime . W przypadku transferu z zestawu rekordów do źródła danych ta wartość jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_DATE w dao i typem COleDateTime w zestawie rekordów.
Uwaga
COleDateTime
Zastępuje CTime i TIMESTAMP_STRUCT w tym celu w klasach DAO. CTime
i TIMESTAMP_STRUCT są nadal używane dla klas dostępu do danych opartych na ODBC.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Double
Transferuje podwójne dane zmiennoprzecinkowe między elementami członkowskimi danych pola obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Double(
CDaoFieldExchange* pFX,
LPCTSTR szName,
double& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu double
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_R8 w dao i typem double float w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Long
Przesyła długie dane całkowite między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Long(
CDaoFieldExchange* pFX,
LPCTSTR szName,
long& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu long
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_I4 w dao i typem long
w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_LongBinary
Ważne zaleca się użycie DFX_Binary zamiast tej funkcji.
Składnia
void AFXAPI DFX_LongBinary(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CLongBinary& value,
DWORD dwPreAllocSize = AFX_DAO_LONGBINARY_DEFAULT_SIZE,
DWORD dwBindOptions = 0);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu CLongBinary jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwPreAllocSize
Platforma wstępnie przydziela tę ilość pamięci. Jeśli dane są większe, platforma przydzieli więcej miejsca zgodnie z potrzebami. Aby uzyskać lepszą wydajność, ustaw ten rozmiar na wartość wystarczająco dużą, aby zapobiec reallocations.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Wartość domyślna, AFX_DISABLE_FIELD_CACHE, nie używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_ENABLE_FIELD_CACHE. Używa podwójnego buforowania i nie trzeba wykonywać dodatkowych czynności, aby oznaczyć pola zanieczyszczone lub Null. Ze względu na wydajność i pamięć należy unikać tej wartości, chyba że dane binarne są stosunkowo małe.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
DFX_LongBinary
zapewnia zgodność z klasami MFC ODBC. Funkcja DFX_LongBinary
przesyła dane binarne dużego obiektu (BLOB) przy użyciu klasy CLongBinary
między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych. Dane są mapowane między typem DAO_BYTES w dao i typem CLongBinary w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Short
Transferuje krótkie dane całkowite między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Short(
CDaoFieldExchange* pFX,
LPCTSTR szName,
short& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu short
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_I2 w dao i typem short
w zestawie rekordów.
Uwaga
DFX_Short
jest odpowiednikiem RFX_Int dla klas opartych na ODBC.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Single
Transferuje dane zmiennoprzecinkowe między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Single(
CDaoFieldExchange* pFX,
LPCTSTR szName,
float& value,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu float
, jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz zadzwonić SetFieldDirty
i SetFieldNull
siebie.
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_R4 w dao i typem float
w zestawie rekordów.
Przykład
Zobacz DFX_Text.
Wymagania
Nagłówek: afxdao.h
DFX_Text
Transferuje CString
dane między elementami członkowskimi danych pól obiektu CDaoRecordset i kolumnami rekordu w źródle danych.
Składnia
void AFXAPI DFX_Text(
CDaoFieldExchange* pFX,
LPCTSTR szName,
CString& value,
int nPreAllocSize = AFX_DAO_TEXT_DEFAULT_SIZE,
DWORD dwBindOptions = AFX_DAO_ENABLE_FIELD_CACHE);
Parametry
Pfx
Wskaźnik do obiektu klasy CDaoFieldExchange. Ten obiekt zawiera informacje służące do definiowania kontekstu dla każdego wywołania funkcji.
szName
Nazwa kolumny danych.
wartość
Wartość przechowywana w wskazanym elemencie danych — wartość, która ma zostać przeniesiona. W przypadku transferu z zestawu rekordów do źródła danych wartość typu CString jest pobierana z określonego elementu członkowskiego danych. W przypadku transferu ze źródła danych do zestawu rekordów wartość jest przechowywana w określonym elemencie członkowskim danych.
nPreAllocSize
Platforma wstępnie przydziela tę ilość pamięci. Jeśli dane są większe, platforma przydzieli więcej miejsca zgodnie z potrzebami. Aby uzyskać lepszą wydajność, ustaw ten rozmiar na wartość wystarczająco dużą, aby zapobiec reallocations.
dwBindOptions
Opcja, która umożliwia korzystanie z mechanizmu podwójnego buforowania MFC na potrzeby wykrywania zmienionych pól zestawu rekordów. Domyślna AFX_DAO_ENABLE_FIELD_CACHE używa podwójnego buforowania. Druga możliwa wartość to AFX_DAO_DISABLE_FIELD_CACHE. Jeśli określisz tę wartość, MFC nie sprawdza tego pola. Musisz samodzielnie wywołać metodę SetFieldDirty i SetFieldNull .
Uwaga
Możesz kontrolować, czy dane są domyślnie buforowane dwukrotnie, ustawiając ustawienie CDaoRecordset::m_bCheckCacheForDirtyFields.
Uwagi
Dane są mapowane między typem DAO_CHAR w dao (lub, jeśli zdefiniowano symbol _UNICODE, DAO_WCHAR) i wpisz CString w zestawie rekordów. n
Przykład
W tym przykładzie pokazano kilka wywołań elementu DFX_Text
. Zwróć również uwagę na dwa wywołania obiektu CDaoFieldExchange::SetFieldType. Musisz napisać pierwsze wywołanie metody i SetFieldType
wywołanie dfX. Drugie wywołanie i skojarzone z nim wywołania DFX są zwykle zapisywane przez kreatora kodu, który wygenerował klasę.
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);
}
Wymagania
Nagłówek: afxdao.h
Zobacz też
Makra i globalne
CRecordset::D oFieldExchange
CRecordset::D oBulkFieldExchange
CDaoRecordset::D oFieldExchange