📄 serverview.cpp
字号:
// ServerView.cpp : implementation of the CServerView class
//
#include "stdafx.h"
#include "Server.h"
#include "ServerDoc.h"
#include "ServerView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CServerView
IMPLEMENT_DYNCREATE(CServerView, CEditView)
BEGIN_MESSAGE_MAP(CServerView, CEditView)
//{{AFX_MSG_MAP(CServerView)
ON_WM_TIMER()
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CServerView construction/destruction
CServerView::CServerView()
{
// TODO: add construction code here
m_fConnected = FALSE;
}
CServerView::~CServerView()
{
}
BOOL CServerView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
BOOL bPreCreated = CEditView::PreCreateWindow(cs);
cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL); // Enable word-wrapping
return bPreCreated;
}
/////////////////////////////////////////////////////////////////////////////
// CServerView drawing
void CServerView::OnDraw(CDC* pDC)
{
CServerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CServerView printing
BOOL CServerView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default CEditView preparation
return CEditView::OnPreparePrinting(pInfo);
}
void CServerView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView begin printing.
CEditView::OnBeginPrinting(pDC, pInfo);
}
void CServerView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
// Default CEditView end printing
CEditView::OnEndPrinting(pDC, pInfo);
}
/////////////////////////////////////////////////////////////////////////////
// CServerView diagnostics
#ifdef _DEBUG
void CServerView::AssertValid() const
{
CEditView::AssertValid();
}
void CServerView::Dump(CDumpContext& dc) const
{
CEditView::Dump(dc);
}
CServerDoc* CServerView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CServerDoc)));
return (CServerDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CServerView message handlers
void CServerView::DisplayString(LPCTSTR lpszMessage)
{
CString strTemp = lpszMessage;
int len = GetWindowTextLength();
GetEditCtrl().SetSel(len,len);
GetEditCtrl().ReplaceSel(strTemp);
}
void CServerView::DisplayStringWithCRLF(LPCTSTR lpszMessage)
{
CString strTemp = lpszMessage;
strTemp += _T("\r\n");
int len = GetWindowTextLength();
GetEditCtrl().SetSel(len,len);
GetEditCtrl().ReplaceSel(strTemp);
}
void CServerView::OnInitialUpdate()
{
CEditView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
/* _bstr_t source("Provider=SQLOLEDB.1;Password=971277;Persist Security Info=True;User ID=sa;Initial Catalog=FALCON_JXC;Data Source=192.168.0.240");//source("Driver={SQL Server};Server=ZRW;Uid=sa;Pwd=971277;Database=FALCON_JXC");
_bstr_t user("sa");
_bstr_t pwd("971277");
HRESULT hr;
try{
hr = m_connection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_connection->Open("Provider=SQLOLEDB.1;Password=971277;Persist Security Info=False;User ID=sa;Initial Catalog=FALCON_JXC;Data Source=ZRW","","",-1);//(source, user, pwd, 16);
if(SUCCEEDED(hr))
hr = m_recordset.CreateInstance(_uuidof(Recordset));
if(SUCCEEDED(hr))
m_fConnected = TRUE;
else
m_fConnected = FALSE;
}
catch (_com_error &e){
MessageBox(e.ErrorMessage());
m_fConnected = FALSE;
}
if(!m_fConnected) MessageBox("ADO数据源初始化失败!");
else m_strSource = (const char * )source;*/
_bstr_t source("Driver={SQL Server};Server=FLYGONE\\S;Uid=sa;Pwd=971277;Database=FALCON_JXC");
_bstr_t user("sa");
_bstr_t pwd("971277");
HRESULT hr;
try{
hr = m_connection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(hr))
hr = m_connection->Open(source, user, pwd, 16);
if(SUCCEEDED(hr))
hr = m_recordset.CreateInstance(_uuidof(Recordset));
if(SUCCEEDED(hr))
m_fConnected = TRUE;
else
m_fConnected = FALSE;
}
catch (_com_error &e){
MessageBox(e.ErrorMessage());
m_fConnected = FALSE;
}
if(!m_fConnected) MessageBox("ADO数据源初始化失败!");
else m_strSource = (const char * )source;
SetTimer(1, 20000, NULL);
}
BOOL CServerView::OpenCurRecordset(CString strTableName)
{
if(!m_fConnected)
return FALSE;
if(strTableName.IsEmpty())
return FALSE;
HRESULT hr;
CString strQuery;
strQuery=strTableName;
_bstr_t query = strQuery;
_bstr_t source = m_strSource;
try{
hr = m_recordset->Open(query, source, adOpenDynamic, adLockOptimistic, adCmdText);
}
catch (_com_error &e){
m_recordset->Close();
return FALSE;
}
return (SUCCEEDED(hr));
}
CString CServerView::VariantToCtring(VARIANT var)
{
CString strValue;
_variant_t var_t;
_bstr_t bst_t;
time_t cur_time;
CTime time_value;
COleCurrency var_currency;
switch(var.vt){
case VT_EMPTY:
strValue = _T("");
break;
case VT_UI1:
strValue.Format("%d", var.bVal);
break;
case VT_I2:
strValue.Format("%d", var.iVal);
break;
case VT_I4:
strValue.Format("%d", var.lVal);
break;
case VT_R4:
strValue.Format("%f", var.fltVal);
break;
case VT_R8:
strValue.Format("%f", var.dblVal);
break;
case VT_CY:
var_currency = var;
strValue = var_currency.Format(0);
break;
case VT_BSTR:
var_t = var;
bst_t = var_t;
strValue.Format("%s", (const char *)bst_t);
break;
case VT_NULL:
strValue = _T("");
break;
case VT_DATE:
cur_time = var.date;
time_value = cur_time;
strValue = time_value.Format("%A, %B %d, %Y");
break;
case VT_BOOL:
strValue.Format("%d", var.boolVal);
break;
default:
strValue = _T("");
break;
}
return strValue;
}
BOOL CServerView::InsertRow(CString strTableName, CStringArray &saValues)
{
int nColNum = 0;
if(!m_fConnected) return FALSE;
if(strTableName.IsEmpty()) return FALSE;
if(0 == (nColNum = saValues.GetSize())) return FALSE;
//
HRESULT hr;
Fields* fields = NULL;
Field* field = NULL;
VARIANT varValue;
VARIANT varCount;
DataTypeEnum data_type;
varCount.vt = VT_I4;
CString strQuery;
strQuery.Format("select * from [%s]", strTableName);
if(!OpenCurRecordset(strQuery)) return FALSE;
try{
hr = m_recordset->AddNew();
hr = m_recordset->get_Fields(&fields);
for(int i=0;i<nColNum;i++){
varCount.lVal = i;
hr = fields->get_Item(varCount, &field);
field->get_Type(&data_type);
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){
MessageBox(e.ErrorMessage());
m_recordset->Close();
return FALSE;
}
return (SUCCEEDED(hr));
}
BOOL CServerView::UpDateRow(CString strTableName, CStringArray &saValues)
{
int nColNum = 0;
if(!m_fConnected) return FALSE;
if(strTableName.IsEmpty()) return FALSE;
if(0 == (nColNum = saValues.GetSize())) return FALSE;
//
HRESULT hr;
Fields* fields = NULL;
Field* field = NULL;
VARIANT varValue;
VARIANT varCount;
DataTypeEnum data_type;
varCount.vt = VT_I4;
CString strQuery;
// strQuery.Format("select * from [%s]", strTableName);
if(!OpenCurRecordset(strTableName)) return FALSE;
try{
// hr = m_recordset->AddNew();
hr = m_recordset->get_Fields(&fields);
for(int i=0;i<nColNum;i++){
varCount.lVal = i;
hr = fields->get_Item(varCount, &field);
field->get_Type(&data_type);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -