Visual studio 2010 使用MFCs RFX(记录字段交换)读取空值

Visual studio 2010 使用MFCs RFX(记录字段交换)读取空值,visual-studio-2010,mfc,null,odbc,recordset,Visual Studio 2010,Mfc,Null,Odbc,Recordset,我正在使用RFX()将数据从ODBC数据源移动到我的记录集对象。数字随(在DoFieldExchange中)移动,显然,数据库NULL(不是值)映射到伪空值AFX\u RFX\u INT\u pseudo\u NULL。不幸的是,该哨兵值定义为十进制的0x7ee4或32484。这个值位于可能的 int 编号范围内,并且是我的应用程序的有效数字! 以下代码部分给出了一个错误的结果,记录中包含main文章中的(有效)值32484 std::vector getArticles(){ std::向量r

我正在使用RFX()将数据从ODBC数据源移动到我的记录集对象。数字随(在
DoFieldExchange
中)移动,显然,数据库NULL(不是值)映射到伪空值
AFX\u RFX\u INT\u pseudo\u NULL
。不幸的是,该哨兵值定义为十进制的
0x7ee4
或32484。这个值位于可能的<代码> int <代码>编号范围内,并且是我的应用程序的有效数字! 以下代码部分给出了一个错误的结果,记录中包含
main文章中的(有效)值32484

std::vector getArticles(){
std::向量res;
CArticleRecordset tmp(&con.GetConnectedDB());
tmp.Open();
而(!tmp.IsEOF()){
if(tmp.m_article.main article==AFX\u RFX\u INT\u PSEUDO\u NULL)
tmp.m_article.main article=0;
res.push_back(tmp.m_文章);
tmp.MoveNext();
}
返回res;
}
我怎样才能解决这个问题

伪空值在
afxdb_uuh
(Visual Studio 2010)中定义:

#定义AFX_RFX_SHORT_PSEUDO_NULL(0x7EE4)
#定义AFX_RFX_INT_伪_NULL(0x7EE4)
#定义AFX_RFX_LONG_伪_NULL(0x4a4d4120L)
#定义AFX_RFX_BIGINT_伪_NULL(0x4a4d4120L)
#定义AFX\u RFX\u字节\u伪\u空255

RFX\u Int
的名称不好,它是用来与短整数一起使用的。使用
RFX\u Long

期望
int&
作为第三个参数,
RFX\u Long
期望
,但是在
DoDataExchange
中有一个临时
Long
变量,并且(调用
RFX\u Long
后)将其分配给
main article
,我可以接受你的建议。谢谢你的回答@ChristianAmmer,在Microsoft land中,
int
long
是相同的。而
LONG
WinNT.h
中被定义为
LONG
。你不应该需要临时的。