|
// *********************************************************
// f[^κπXgr
[ΙZbg
// ίθl : ³΅
// *********************************************************
DWORD LboxAdo::LoadSqlData( LboxListview *Lview )
{
if ( sCommand.operator == ( "" ) ) {
sCommand.operator = ("select ");
sCommand.operator += (&sFieldList);
sCommand.operator += (" from ");
sCommand.operator += (&sTable);
if ( sCond.operator != ( "" ) ) {
sCommand.operator += (" where ");
sCommand.operator += (&sCond);
}
if ( sOrder.operator != ( "" ) ) {
sCommand.operator += (" order by ");
sCommand.operator += (&sOrder);
}
}
_variant_t vTable(sCommand.szLboxString);
int nErr;
DWORD nCount;
char szBuffer[80];
pRs = NULL;
_bstr_t bstrValue("");
_variant_t Index;
Index.vt = VT_I2;
_variant_t vName;
_variant_t vValue;
Lview->Hide( );
nErr = 0;
try {
TESTHR(pRs.CreateInstance(__uuidof(Recordset)));
nErr++;
switch( LboxAdo::DBType ) {
case 0:
case 1:
pRs->CursorLocation = adUseServer;
break;
case 2:
case 3:
case 4:
case 5:
pRs->CursorLocation = adUseClient;
break;
}
pRs->Open( vTable, ConnectString, adOpenKeyset, adLockOptimistic, adCmdText );
if ( pRs->State == adStateClosed ) {
pRs.Release();
pRs = NULL;
return -99;
}
nErr++;
// ^CgͺΜμ¬
Lview->Initialize( );
for ( int i = 0;i < (pRs->Fields->Count);i++ ) {
Index.iVal = i;
vName = pRs->Fields->GetItem(Index)->Name;
bstrValue.operator = ( vName );
Lview->AddColumn( LVCFMT_LEFT, 100, (LPTSTR)bstrValue );
}
nCount = 0;
while( !(pRs->EndOfFile) ) {
nCount++;
if ( nCount > LboxAdo::nMax ) {
nCount--;
break;
}
Lview->AddRow();
for ( int i = 0;i < (pRs->Fields->Count);i++ ) {
Index.iVal = i;
vValue = pRs->Fields->GetItem(Index)->Value;
switch(vValue.vt) {
case VT_LPWSTR:
case VT_LPSTR:
case VT_BSTR:
bstrValue.operator = ( vValue );
Lview->SetColumnText( i, (LPTSTR)bstrValue );
break;
case VT_DATE:
bstrValue.operator = ( vValue );
Lview->SetColumnText( i, (LPTSTR)bstrValue );
break;
case VT_I2:
wsprintf( szBuffer, "%d", vValue.iVal );
Lview->SetColumnText( i, szBuffer );
break;
case VT_I4:
wsprintf( szBuffer, "%ld", vValue.lVal );
Lview->SetColumnText( i, szBuffer );
break;
case VT_BOOL:
case VT_R4:
case VT_R8:
case VT_CY:
case VT_I1:
case VT_UI1:
case VT_UI2:
case VT_UI4:
case VT_INT:
case VT_UINT:
case VT_DECIMAL:
bstrValue.operator = ( vValue );
Lview->SetColumnText( i, (LPTSTR)bstrValue );
break;
case VT_EMPTY:
case VT_NULL:
Lview->SetColumnText( i, "" );
break;
default:
Lview->SetColumnText( i, "???" );
break;
}
}
pRs->MoveNext();
}
LboxAdo::Count = pRs->RecordCount;
pRs->Close();
pRs.Release();
pRs = NULL;
}
catch ( _com_error &e )
{
ProviderError( pRs );
if ( nErr >= 2 ) {
pRs->Close();
}
if ( nErr >= 1 ) {
pRs.Release();
pRs = NULL;
}
ErrMessage.Insert( "\n" );
ErrMessage.Insert( sCommand.szLboxString );
Lview->MsgOk(
Lview->Parent(),
ErrMessage.szLboxString
);
nCount = -1;
}
if ( nCount != -1 ) {
Lview->Fit();
}
Lview->Show();
return nCount;
}
| |