⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 controlunit.cpp

📁 数据库开发
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	
	CString strTemp;
	strTemp=pPoint->GetPointName();
	m_Recordset.SetFieldValue("PointName",(char*)(LPCTSTR)strTemp);
	
	strTemp.Format("%.3f",pPoint->GetPointValue());
	m_Recordset.SetFieldValue("CurValue",(char*)(LPCTSTR)strTemp);
	
	strTemp.Format("%s",pPoint->GetPointMemo());
	m_Recordset.SetFieldValue("PointMemo",(char*)(LPCTSTR)strTemp);
	
	m_Recordset.Update();
	
	CString strSQL="Select * From "+this->GetPointTableName();
	strSQL=strSQL+" Where PointName = ";
	strSQL=strSQL+"'"+pPoint->GetPointName()+"'"; 
	m_Recordset.Close();
	m_Recordset.Open(dbOpenDynaset,strSQL);
	
	if (m_Recordset.IsBOF() && m_Recordset.IsEOF())
	{
		delete pPoint;
		return FALSE;
	}
	else
	{
		m_Recordset.MoveFirst();
		
		COleVariant varValue;
		varValue=m_Recordset.GetFieldValue("PointID");
		pPoint->m_wPointID=atoi(OleVariantToString(varValue)); 
    }
	
	
	strSQL="Select * From "+this->m_pSegment->GetPointNameID();
	m_Recordset.Close();
	m_Recordset.Open(dbOpenDynaset,strSQL);
	m_Recordset.AddNew();
	
	strTemp.Format("%s",pPoint->GetPointLongName());
	m_Recordset.SetFieldValue("PointName",(char*)(LPCTSTR)strTemp);
	
	strTemp.Format("%d",pPoint->GetPointLongID());
	m_Recordset.SetFieldValue("PointID",(char*)(LPCTSTR)strTemp);
	
	m_Recordset.Update();
	
	m_plPointList.AddTail(pPoint);
	
	CDataManagerDoc* m_pDoc=(CDataManagerDoc*)((CMainFrame*)
		AfxGetApp()->m_pMainWnd)->GetActiveDocument();
	POSITION pos=m_pDoc->GetFirstViewPosition();
	
	CLeftView* p_TreeView;
	CDataManagerView* p_ListView;
	while (pos != NULL) 
	{ 
		CView* pView = m_pDoc->GetNextView(pos); 
		if(pView->IsKindOf(RUNTIME_CLASS(CLeftView)))
		{
			p_TreeView=(CLeftView*)pView;
		}
		else if(pView->IsKindOf(RUNTIME_CLASS(CDataManagerView)))
		{
			p_ListView=(CDataManagerView*)pView;
		}
	}
	CListCtrl& m_list=p_ListView->GetListCtrl();
	CTreeCtrl& m_tree=p_TreeView->GetTreeCtrl();

	HTREEITEM hItem=m_tree.GetSelectedItem();
	if(hItem==this->hItem) 
	{
		m_list.InsertItem(m_list.GetItemCount(),pPoint->GetPointName());   
		m_list.SetItemText(m_list.GetItemCount()-1,1,pPoint->GetPointValue());   
		m_list.SetItemText(m_list.GetItemCount()-1,2,pPoint->GetPointMemo());   
	}
	return TRUE;
}

BOOL CControlUnit::AddPoint(CString strPointName,
							CString strPointMemo)
{
	CControlPoint* pCtrlPoint = new CControlPoint;
	
	pCtrlPoint->SetPointName(strPointName);
	pCtrlPoint->SetPointMemo(strPointMemo);
	
	if(!AddPoint(pCtrlPoint))
	{
		delete pCtrlPoint;
		return FALSE;
	}
	else
		return TRUE;
}

BOOL CControlUnit::DeletePoint(CControlPoint* pPoint)
{
	POSITION pos = m_plPointList.Find(pPoint);
	
	if(pos != NULL)
	{
		CString strSQL;
		strSQL="Delete From "+this->GetPointTableName()+" Where PointName = ";
		strSQL=strSQL+"'"+pPoint->GetPointName()+"'";
		this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
		
		strSQL="Delete From "+this->m_pSegment->GetPointNameID();
		strSQL=strSQL+" Where PointName = ";
		strSQL=strSQL+"'"+pPoint->GetPointLongName()+"'";
		this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
		
		strSQL="Delete From "+this->m_pSegment->GetHisTableName();
		CString strID;
		strID.Format("%d",pPoint->GetPointLongID());  
		strSQL=strSQL+" Where PointID = "+strID;
		this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
		

		int i=0;
		CString strSelectedSegment,strSelectedUnit;

		CDataManagerDoc* m_pDoc=(CDataManagerDoc*)((CMainFrame*)
			AfxGetApp()->m_pMainWnd)->GetActiveDocument();
		POSITION viewpos=m_pDoc->GetFirstViewPosition();
		
		CDataManagerView* p_ListView;
		while (viewpos != NULL) 
		{ 
			CView* pView = m_pDoc->GetNextView(viewpos); 
			if(pView->IsKindOf(RUNTIME_CLASS(CDataManagerView)))
			{
				p_ListView=(CDataManagerView*)pView;
			}
		}
		CListCtrl& m_list=p_ListView->GetListCtrl();
		
		int item= m_list.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED);
		m_list.DeleteItem(item);

		m_plPointList.RemoveAt(pos);
		pPoint->SetControlUnit(NULL);
		
		delete pPoint;
		return TRUE;
	}
	else
		return FALSE;
}

BOOL CControlUnit::DeletePoint(int nIndex)
{
	POSITION pos = m_plPointList.FindIndex(nIndex);
	CControlPoint* pCtrlPoint = NULL;
	
	if(pos != NULL)
	{
		pCtrlPoint = (CControlPoint*)m_plPointList.GetAt(pos);
		
		return DeletePoint(pCtrlPoint);
	}
	else
		return FALSE;
}

void CControlUnit::BuildMemTree()
{
	CControlPoint* TempCtrlPoint=NULL;
	if(!m_pSegment->m_pModule->CheckTable(this->GetPointTableName())) 
	{
		CString strSQL;
		strSQL="Create Table "+this->GetPointTableName();
		strSQL=strSQL+"( PointID AUTOINCREMENT,";
		strSQL=strSQL+"PointName VarChar(30) not Null,";
		strSQL=strSQL+"CurValue VarChar(30) Null,";
		strSQL=strSQL+"PointMemo VarChar(255) Null)";
		this->m_pSegment->m_pModule->m_Database.Execute(strSQL);
	}
	
    
    CDaoRecordset m_Recordset(&this->m_pSegment->m_pModule->m_Database);
	m_Recordset.Open(dbOpenDynaset,"Select * from "+
		this->GetPointTableName());
	if (!(m_Recordset.IsBOF() && m_Recordset.IsEOF()))
	{
		m_Recordset.MoveFirst();
		while(!m_Recordset.IsEOF())
		{
			TempCtrlPoint=new CControlPoint;
			COleVariant varValue=m_Recordset.GetFieldValue("PointName");
			TempCtrlPoint->m_strPointName=OleVariantToString(varValue);
			
			varValue=m_Recordset.GetFieldValue("PointID");
			TempCtrlPoint->m_wPointID=atoi(OleVariantToString(varValue));
			
			varValue=m_Recordset.GetFieldValue("CurValue");
			TempCtrlPoint->m_strValue=OleVariantToString(varValue);
			
			varValue=m_Recordset.GetFieldValue("PointMemo");
			TempCtrlPoint->m_strMemo=OleVariantToString(varValue);
			
			TempCtrlPoint->m_pUnit=this;
			this->m_plPointList.AddTail(TempCtrlPoint);
			
            m_Recordset.MoveNext();
		}
	}
}


//////////////////////////////////////////////////////////////////////
// CControlPoint Class


CControlPoint::CControlPoint()
{
	m_strPointName.Empty();
	m_wPointID = 0;
	m_strValue="0";
	m_strMemo="";
}

CControlPoint::~CControlPoint()
{
	
}

CControlUnit* CControlPoint::GetControlUnit()
{
	return m_pUnit;
}

void CControlPoint::SetControlUnit(CControlUnit* pUnit)
{
	m_pUnit = pUnit;
}

CString CControlPoint::GetPointName()
{
	return m_strPointName;
}

CString CControlPoint::GetPointLongName()
{
    if (m_pUnit==NULL)
        return this->GetPointName();
    else
        return m_pUnit->GetUnitLongName()+"."+this->GetPointName();
}

BOOL CControlPoint::SetPointName(CString strPointName)
{
	if(strPointName.IsEmpty())
		return FALSE;
	
	if(m_strPointName == strPointName)
		return FALSE;
	
	m_strPointName = strPointName;
	return TRUE;
}


WORD CControlPoint::GetPointID()
{
	return m_wPointID;
}

DWORD CControlPoint::GetPointLongID()
{
	if(m_pUnit == NULL)
		return (DWORD)m_wPointID;
	
	return MAKELONG(m_wPointID, m_pUnit->GetUnitID());
}

BOOL CControlPoint::SetPointID(WORD wPointID)
{
	if(m_wPointID == wPointID)
		return FALSE;
	
	m_wPointID = wPointID;
	return TRUE;
}

CString CControlPoint::GetPointMemo()
{
	return m_strMemo;
}

BOOL CControlPoint::SetPointMemo(CString strNewMemo)
{
	if(m_strMemo == strNewMemo)
		return FALSE;
	
	m_strMemo = strNewMemo;
	return TRUE;
}

CString CControlPoint::GetPointValue()
{
	return m_strValue;
}

BOOL CControlPoint::SetPointValue(CString strNewValue)
{
	int i=0;
	CString strSelectedSegment,strSelectedUnit;
	CControlSegment *p_Segment; 
	CControlUnit *p_Unit;
	
	if(GetControlUnit()==NULL)
		return FALSE;
	if(m_strValue == strNewValue)
		return FALSE;
	
	m_strValue = strNewValue;
	
    CDaoRecordset m_Recordset(&GetControlUnit()->GetControlSegment()
		->GetControlModule()->m_Database);
	CString strSQL;
	strSQL="Select * From "+GetControlUnit()->GetPointTableName();
	strSQL=strSQL+" Where PointName = '"+GetPointName()+"'";
	m_Recordset.Open(dbOpenDynaset,strSQL);
	
	if(m_Recordset.IsBOF() && m_Recordset.IsEOF())
	{
		return FALSE;
	}
	
	m_Recordset.Edit();
	
	CString strTemp;
	strTemp=this->GetPointValue();
	m_Recordset.SetFieldValue("CurValue",(char*)(LPCTSTR)strTemp);
	m_Recordset.Update();
	
    if (GetControlUnit()->GetControlSegment()==NULL)
	{
        return FALSE;
	}
	
	CString strID;
	strID.Format("%d",this->GetPointLongID()); 
	
	CString strTime;
	CTime tm;
	tm=CTime::GetCurrentTime();
	strTime=tm.Format("%Y年%m月%d日 %X"); 
	
	strSQL="Insert Into ";
	strSQL=strSQL+GetControlUnit()->GetControlSegment()
		->GetHisTableName();
	strSQL=strSQL+" Values("+strID+",";
	strSQL=strSQL+"'"+strTime+"',";
	strSQL=strSQL+"'"+this->GetPointValue()+"')";
	
	GetControlUnit()->GetControlSegment()->GetControlModule()
		->m_Database.Execute(strSQL);
	
	CDataManagerDoc* m_pDoc=(CDataManagerDoc*)((CMainFrame*)
		AfxGetApp()->m_pMainWnd)->GetActiveDocument();
	POSITION pos=m_pDoc->GetFirstViewPosition();
	
	CLeftView* p_TreeView;
	CDataManagerView* p_ListView;
	while (pos != NULL) 
	{ 
		CView* pView = m_pDoc->GetNextView(pos); 
		if(pView->IsKindOf(RUNTIME_CLASS(CLeftView)))
		{
			p_TreeView=(CLeftView*)pView;
		}
		else if(pView->IsKindOf(RUNTIME_CLASS(CDataManagerView)))
		{
			p_ListView=(CDataManagerView*)pView;
		}
	}
	CListCtrl& m_list=p_ListView->GetListCtrl();
	CTreeCtrl& m_tree=p_TreeView->GetTreeCtrl();
	
	HTREEITEM hItem=m_tree.GetSelectedItem();
	int nLevel=m_tree.GetItemData(hItem);  
	switch(nLevel)
	{
	case 0:
		break;
	case 1:
		strSelectedSegment=m_tree.GetItemText(m_tree.GetParentItem(hItem));
		p_Segment=p_ControlModule->GetSegment(strSelectedSegment); 
		if (p_Segment!=this->m_pUnit->m_pSegment)
			break;
		
		strSelectedUnit=m_tree.GetItemText(hItem);
		p_Unit=p_Segment->GetUnit(strSelectedUnit);
		if(p_Unit!=this->m_pUnit)
			break;
		
		for (i=0;i<m_list.GetItemCount();i++)
		{
			if (m_list.GetItemText(i,0)==this->GetPointName()) 
			{
				m_list.SetItemText(i,1,strNewValue);
				break;
			}
		}
	}
	return TRUE;
}

CString CControlModule::GetDefaultDBName()
{
	CString sPath;
	CString strDBFile;
	GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
	sPath.ReleaseBuffer();
	int nPos;
	nPos=sPath.ReverseFind ('\\');
	sPath=sPath.Left(nPos);
	strDBFile = sPath + "\\Data.mdb";
	
	return _T(strDBFile);
}

bool CControlModule::CheckTable(CString strTableName)
{
	bool result=false;
	CDaoTableDefInfo Info;
	for(int i=0;i<m_Database.GetTableDefCount();i++)
	{
		m_Database.GetTableDefInfo(i,Info,AFX_DAO_ALL_INFO);
		if (strTableName==Info.m_strName)
		{
			result=true;
			break;
		}
	}
	return result;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -