📄 serverview.cpp
字号:
if(!ConstructVar(saValues.GetAt(i), data_type, &varValue)) return FALSE;
hr = field->put_Value(varValue);
}
m_recordset->Update();
fields->Release();
field->Release();
m_recordset->Close();
}
catch (_com_error &e){
m_recordset->Close();
// MessageBox(e.ErrorMessage());
return FALSE;
}
return (SUCCEEDED(hr));
}
BOOL CServerView::ConstructVar(CString strValue, int type, VARIANT *var)
{
COleDateTime var_date;
CURRENCY cy;
cy.Hi = 0;
switch(type){
case adInteger:
var->vt = VT_I4;
var->lVal = atoi(strValue);
break;
case adCurrency:
var->vt = VT_CY;
cy.Lo = atoi(strValue);
cy.int64 = atoi(strValue);
var->cyVal = cy;
break;
case adChar:
case adVarWChar:
var->vt = VT_BSTR;
var->bstrVal = (_bstr_t)strValue;
break;
case adDBTimeStamp:
var->vt = VT_DATE;
var->date = var_date;
break;
default:
var->vt = VT_EMPTY;
break;
}
return TRUE;
}
BOOL CServerView::GetInfoArray(CString strTableName, CUIntArray &uaID, CStringArray &saArray,int i)
{
m_iRefresh=0;
if(!m_fConnected) return FALSE;
//
HRESULT hr;
CString strQuery;
CString strValue;
VARIANT var_value;
VARIANT_BOOL ValEof;
int nRowCount = 0;
Field *field = NULL;
_variant_t var_t;
_bstr_t bst_t;
VARIANT varCounter;
varCounter.vt = VT_I4;
varCounter.lVal = 0;
strQuery.Format("%s", strTableName);
_bstr_t query = strQuery;
_bstr_t source = m_strSource;
try{
hr = m_recordset->Open(query, source, adOpenDynamic, adLockOptimistic, adCmdText);
ValEof = m_recordset->get_adoEOF(&ValEof);
while(TRUE){
if(ValEof) break;
varCounter.lVal = 0;
m_recordset->Fields->get_Item(varCounter, &field);
field->get_Value(&var_value);
uaID.Add(var_value.lVal);
varCounter.lVal = i;
m_recordset->Fields->get_Item(varCounter, &field);
field->get_Value(&var_value);
var_t = var_value;
bst_t = var_t;
saArray.Add((const char *)bst_t);
m_iRefresh=nRowCount;
nRowCount++;
m_recordset->MoveNext();
m_recordset->get_adoEOF(&ValEof);
}
m_recordset->Close();
}
catch (_com_error &e){
m_recordset->Close();
// MessageBox(e.ErrorMessage());
return FALSE;
}
return (SUCCEEDED(hr));
}
BOOL CServerView::DeleteRow(CString strSelect)
{
if(!m_fConnected) return FALSE;
//
HRESULT hr;
CString strQuery;
VARIANT_BOOL ValEof;
strQuery.Format("%s", strSelect);
_bstr_t query = strQuery;
_bstr_t source = m_strSource;
try{
hr = m_recordset->Open(query, source, adOpenDynamic, adLockOptimistic, adCmdText);
ValEof = m_recordset->get_adoEOF(&ValEof);
if(!ValEof) m_recordset->Delete(adAffectCurrent);
m_recordset->Close();
}
catch (_com_error &e){
m_recordset->Close();
// MessageBox("删除记录失败!");
return FALSE;
}
return (SUCCEEDED(hr));
}
BOOL CServerView::RefreshData(ULONG ulColCount,CString strResult[100][200])
{
m_iRefresh=0;
if(!m_fConnected)
return FALSE;
if(0 == ulColCount)
return FALSE;
HRESULT hr;
CString strValue;
VARIANT var_value;
VARIANT_BOOL ValEof;
int nRowCount = 0;
Field *field = NULL;
VARIANT varCounter;
varCounter.vt = VT_I4;
varCounter.lVal = 0;
try{
ValEof = m_recordset->get_adoEOF(&ValEof);
while(TRUE){
if(ValEof) break;
varCounter.lVal = 0;
m_recordset->Fields->get_Item(varCounter, &field);
DataTypeEnum data_type;
field->get_Value(&var_value);
strValue = VariantToCtring(var_value);
strResult[nRowCount][0]=strValue;
for(int i=1;i<ulColCount;i++){
varCounter.lVal = i;
m_recordset->Fields->get_Item(varCounter, &field);
field->get_Value(&var_value);
strValue = VariantToCtring(var_value);
strResult[nRowCount][i]=strValue;
}
nRowCount ++;
m_iRefresh=nRowCount;
m_recordset->MoveNext();
m_recordset->get_adoEOF(&ValEof);
}
m_recordset->Close();
}
catch (_com_error &e){
m_recordset->Close();
return FALSE;
}
return (SUCCEEDED(hr));
}
BOOL CServerView::RefreshData(ULONG ulColCount,CStringArray strResult[100])
{
m_iRefresh=0;
if(!m_fConnected)
return FALSE;
if(0 == ulColCount)
return FALSE;
HRESULT hr;
CString strValue;
VARIANT var_value;
VARIANT_BOOL ValEof;
int nRowCount = 0;
Field *field = NULL;
VARIANT varCounter;
varCounter.vt = VT_I4;
varCounter.lVal = 0;
try{
ValEof = m_recordset->get_adoEOF(&ValEof);
while(TRUE){
if(ValEof) break;
varCounter.lVal = 0;
m_recordset->Fields->get_Item(varCounter, &field);
DataTypeEnum data_type;
field->get_Value(&var_value);
strValue = VariantToCtring(var_value);
strResult[0].Add(strValue) ;
for(int i=1;i<ulColCount;i++){
varCounter.lVal = i;
m_recordset->Fields->get_Item(varCounter, &field);
field->get_Value(&var_value);
strValue = VariantToCtring(var_value);
strResult[i].Add(strValue);
}
nRowCount++;
m_iRefresh=nRowCount;
m_recordset->MoveNext();
m_recordset->get_adoEOF(&ValEof);
}
m_recordset->Close();
}
catch (_com_error &e){
m_recordset->Close();
return FALSE;
}
return (SUCCEEDED(hr));
}
BOOL CServerView::GetColumn(ULONG *pulColCount, CString strColmnName[100])
{
if(!m_fConnected)
return FALSE;
HRESULT hr;
CString strColName;
Fields* fields = NULL;
try{
hr = m_recordset->get_Fields(&fields);
if (SUCCEEDED(hr))
hr = fields->get_Count((long *)pulColCount);
for(long i=0;i<*pulColCount;i++){
BSTR bstrColName;
hr = fields->Item[i]->get_Name(&bstrColName);
strColName = bstrColName;
strColmnName[i]=strColName;
}
if (SUCCEEDED(hr))
fields->Release();
}
catch (_com_error &e){
m_recordset->Close();
return FALSE;
}
return (SUCCEEDED(hr));
}
void CServerView::OnTimer(UINT nIDEvent)
{
CServerDoc* pDoc=GetDocument();
CMessage* pMsg = new CMessage;
POSITION posname;
CServiceSocket *pSock;
pMsg->To = "";
if(pDoc->m_connectionList.IsEmpty())
return;
for( posname=pDoc->m_connectionList.GetHeadPosition();posname;)
{
pSock = (CServiceSocket *)pDoc->m_connectionList.GetNext(posname);
if(!pSock->m_bActive)
{
pDoc->CloseSocket(pSock);
}
else
{
pSock->m_bActive=false;
pDoc->m_connectionList.SetAt(pDoc->m_connectionList.Find(pSock),pSock);
}
}
if(pDoc->m_connectionList.IsEmpty())
return;
for( posname=pDoc->m_connectionList.GetHeadPosition();posname;)
{
pSock = (CServiceSocket *)pDoc->m_connectionList.GetNext(posname);
if(pSock==NULL )
continue;
if (pMsg == NULL)
continue;
pMsg->From = pSock->Name;
pMsg->ShortMessage = _TEXT("Online?");
pMsg->To = _TEXT("All");
pMsg->Type = 9999;
try{
pDoc->SendMsg(pSock, pMsg);
}
catch(...)
{
pDoc->CloseSocket(pSock);
}
}
CEditView::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -