📄 bbdblib.cpp
字号:
{
assert(pConn);
assert(pRs);
m_prsThis=pRs;
m_pConn=pConn;
}
void CBBRstValues::InitConnectAndRst(CBBAdoConnection *pBBAdoConn, _RecordsetPtr *pRs)
{
InitConnectAndRst(pBBAdoConn->GetConnection(),pRs);
}
BOOL CBBRstValues::GetValueLong(long *lVal, _variant_t &vIndex)
{
_variant_t value;
try{
if((*m_prsThis)==NULL||(*m_prsThis)->State==adStateClosed)
{
#ifdef _DEBUG
//AfxMessageBox("记录集未打开!");
#else
//MessageBox(NULL,"无法读取数据库资料,可能数据库连接已经断开,请重新连接、然后重试。","连接问题",MB_ICONINFORMATION);
#endif
return FALSE;
}
if((*m_prsThis)->adoEOF)
{
lVal=0;
return FALSE;
}
value=(*m_prsThis)->GetCollect(vIndex);
}
catch(_com_error)
{
ReportError();
return FALSE;
}
catch(...)
{
//AfxMessageBox("数据库字段访问未知错误!请检查数据库是否改动。",MB_ICONINFORMATION);
return FALSE;
}
if(VerifyVTData(value))
{
*lVal = long(value);
}
else
{
*lVal=0;
}
return TRUE;
}
BOOL CBBRstValues::GetValueStr(char *cVal, _variant_t &vIndex, int nFieldLen)
{
char * c=NULL;
_variant_t value;
//DATE dt;
//CString str;
//COleDateTime da;
//检查是数组
//VERIFY(sizeof(cVal)<1);
memset(cVal,0,sizeof(cVal));
try
{
if((*m_prsThis)==NULL||(*m_prsThis)->State==adStateClosed)
{
#ifdef _DEBUG
//AfxMessageBox("记录集未打开!");
#else
//MessageBox(NULL,"无法读取数据库资料,可能数据库连接已经断开,请重新连接、然后重试。","连接问题",MB_ICONINFORMATION);
#endif
return FALSE;
}
if((*m_prsThis)->adoEOF)
{
cVal[0]='\0';
return FALSE;
}
value = (*m_prsThis)->GetCollect(vIndex);
}
catch(_com_error)
{
ReportError();
//AfxMessageBox("数据库字段访问错误!");
return FALSE;
}
catch(...)
{
//AfxMessageBox("数据库字段访问未知错误!请检查数据库是否改动。",MB_ICONINFORMATION);
return FALSE;
}
if(VerifyVTData(value))
{
switch(value.vt)
{
case VT_BSTR:
c = (char *)_com_util::ConvertBSTRToString( V_BSTR(&value) );
if(VerifyVTData(c))
{
if(nFieldLen<=0)
{
strcpy(cVal,(char*)c);
}
else
{
strncpy(cVal, (char*)c, nFieldLen);
}
}
delete c;
c=NULL;
break;
case VT_I4:
case VT_DECIMAL:
case VT_UI4:
case VT_I8:
case VT_UI8:
case VT_INT:
case VT_UINT:
long lVal;
lVal = long(value);
ltoa(lVal,cVal,10);
break;
case VT_DATE:
/* dt=value.date;
da=COleDateTime(dt);
str=da.Format("%Y-%m-%d %H:%M:%S");
//str=da.Format("%Y-%m-%d ");
c=new char[64];
memset(c,0,sizeof(char)*64);
strcpy(c,str.GetBuffer(0));
str.ReleaseBuffer();
if(VerifyVTData(c))
{
if(nFieldLen<=0)
{
strcpy(cVal,(char*)c);
}
else
{
strncpy(cVal, (char*)c, nFieldLen);
cVal[nFieldLen]='\0';
}
}
delete c;
c=NULL;*/
break;
default:
#ifdef _DEBUG
// AfxMessageBox("未处理的字段数据类型,请处理!");
#else
break;
#endif
break;
}
}
else
{
cVal[0]='\0';
}
return TRUE;
}
BOOL CBBRstValues::GetValueLong(long *lVal, long lIndex)
{
_variant_t vIndex(lIndex);
return GetValueLong(lVal,vIndex);
}
BOOL CBBRstValues::GetValueLong(long *lVal, LPCSTR lpszIndex)
{
_variant_t vIndex(lpszIndex);
return GetValueLong(lVal,vIndex);
}
BOOL CBBRstValues::VerifyVTData(char *pData)
{
if(pData == NULL)
{
return FALSE;
}
return TRUE;
}
BOOL CBBRstValues::VerifyVTData(_variant_t &value)
{
if(value.vt == VT_NULL)
{
return FALSE;
}
return TRUE;
}
/*
BOOL CBBRstValues::GetValueStr(CString& str,LPCSTR lpszFieldName,int nFieldLen)
{
_variant_t vIndex(lpszFieldName);
return GetValueStr(str,vIndex,nFieldLen);
}
BOOL CBBRstValues::GetValueStr(CString& str,UINT nFieldIndex,int nFieldLen)
{
_variant_t vIndex((long)nFieldIndex);
return GetValueStr(str,vIndex,nFieldLen);
}
BOOL CBBRstValues::GetValueStr(CString& str,_variant_t &vIndex,int nFieldLen)
{
TCHAR buffer[1024];
if(nFieldLen > 1023)
nFieldLen = 1023;
BOOL bResult=GetValueStr((char*)buffer,vIndex,nFieldLen);
str.Format(buffer);
str.TrimRight();
return bResult;
}
*/
BOOL CBBRstValues::GetValueFloat(float* fVal,_variant_t &vIndex)
{
_variant_t value;
try
{
if((*m_prsThis)==NULL||(*m_prsThis)->State==adStateClosed)
{
#ifdef _DEBUG
//AfxMessageBox("记录集未打开!");
#else
//MessageBox(NULL,"无法读取数据库资料,可能数据库连接已经断开,请重新连接、然后重试。","连接问题",MB_ICONINFORMATION);
#endif
return FALSE;
}
if((*m_prsThis)->adoEOF)
{
fVal=0;
return FALSE;
}
value=(*m_prsThis)->GetCollect(vIndex);
}
catch(_com_error)
{
ReportError();
return FALSE;
}
catch(...)
{
// AfxMessageBox("数据库字段访问未知错误!请检查连接数据库结构是否已经更改。",MB_ICONINFORMATION);
return FALSE;
}
if(VerifyVTData(value))
{
*fVal = float(value);
}
else
{
*fVal = 0;
}
return TRUE;
}
BOOL CBBRstValues::GetValueFloat(float* fVal,long lIndex)
{
_variant_t vIndex(lIndex);
return GetValueFloat(fVal,vIndex);
}
/*
BOOL CBBRstValues::GetValueFloat(float* fVal,CString strIndex)
{
_variant_t vIndex(strIndex);
return GetValueFloat(fVal,vIndex);
}
*/
BOOL CBBRstValues::GetValueStr(char *cVal,long lIndex,int nFieldLen)
{
_variant_t vIndex;
vIndex=_variant_t(lIndex);
return GetValueStr(cVal,vIndex);
}
/*
BOOL CBBRstValues::GetValueStr(char *cVal,CString strIndex,int nFieldLen)
{
_variant_t vIndex;
vIndex=_variant_t(strIndex);
return GetValueStr(cVal,vIndex);
}
*/
void CBBRstValues::ReportError()
{
#ifdef _DEBUG
try
{
for(long l=0;l<(*m_pConn)->Errors->Count;l++)
{
ErrorPtr pErr;
pErr=(*m_pConn)->Errors->GetItem(l);
//AfxMessageBox(pErr->Description);
}
}
catch(...)
{
// AfxMessageBox("字段错误对象访问错误,请检查书写是否正确。");
}
#else
//MessageBox(NULL,"字段访问发生错误,请确认数据库结构没有改动。","字段访问",MB_ICONINFORMATION);
#endif
//AfxMessageBox("数据库字段访问错误!");
}
/*
BOOL CBBRstValues::GetValText(CString &strText, CString &strFieldName)
{
_bstr_t varChunk;
_bstr_t varNotes;
long lngTotalsize,
lngOffSet = 0,
lngChunkSize = 100;
_variant_t vFieldName = _variant_t(strFieldName);
lngTotalsize = (*m_prsThis)->Fields->Item[vFieldName]->ActualSize/2;
if (lngTotalsize <= 0)
return FALSE;
try
{
while (lngOffSet < lngTotalsize)
{
varChunk = (*m_prsThis)->Fields->Item[vFieldName]->GetChunk(lngChunkSize);
varNotes = varNotes + varChunk;
lngOffSet = lngOffSet + lngChunkSize;
}
strText=(char*)varNotes;
}
catch(_com_error)
{
ReportError();
return FALSE;
}
catch(...)
{
#ifdef _DEBUG
AfxMessageBox("获取Text字段未知错误");
#endif
return FALSE;
}
return TRUE;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -