?? dlghf.cpp
字號:
// DlgHF.cpp : implementation file
//
#include "stdafx.h"
#include "a1.h"
#include "DlgHF.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgHF dialog
CDlgHF::CDlgHF(CWnd* pParent /*=NULL*/)
: CDialog(CDlgHF::IDD, pParent)
{
//{{AFX_DATA_INIT(CDlgHF)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CDlgHF::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlgHF)
DDX_Control(pDX, IDC_DATETIMEPICKER1, m_tcRq);
DDX_Control(pDX, IDC_LIST1, m_list);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDlgHF, CDialog)
//{{AFX_MSG_MAP(CDlgHF)
ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER1, OnDatetimechangeDatetimepicker1)
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDlgHF message handlers
BOOL CDlgHF::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CRect rect;
m_list.SetExtendedStyle( LVS_EX_FULLROWSELECT | //允許整行選中
// LVS_EX_HEADERDRAGDROP | //允許整列拖動
LVS_EX_GRIDLINES | //畫出網格線
// LVS_EX_ONECLICKACTIVATE | //單擊選中表項
LVS_EX_FLATSB //扁平風格的滾動條
// LVS_EX_UNDERLINEHOT
);
this->m_list.GetClientRect(rect);
m_list.InsertColumn(0,"數據備份編號");
m_list.InsertColumn(1,"路徑");
m_list.SetColumnWidth(0,rect.Width()/2);
m_list.SetColumnWidth(1,rect.Width()/2);
CTime t=CTime::GetCurrentTime();
this->m_tcRq.SetTime(&t);
this->InitList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
bool CDlgHF::InitList()
{
CString rq;
this->m_tcRq.GetWindowText(rq);
try{
int i=0;
CString sql;
_variant_t value;
sql.Format("select * from tabbf where rq >= #%s# order by bf_id asc",rq);
this->m_runsql.CheckSQLResult(sql);
m_list.DeleteAllItems();
m_list.SetRedraw(false);
while(!m_runsql.m_recordset->adoEOF)
{
value=m_runsql.m_recordset->GetCollect("bf_id");
this->m_list.InsertItem(i,(char*)(_bstr_t)value);
value=m_runsql.m_recordset->GetCollect("bf_path");
if(value.vt!=VT_NULL)
this->m_list.SetItemText(i,1,(char*)(_bstr_t)value);
i++;
m_runsql.m_recordset->MoveNext();
}
m_list.SetRedraw(true);
}
catch(_com_error& e)
{
AfxMessageBox(e.ErrorMessage());
m_list.SetRedraw(true);
return false;
}
return true;
}
void CDlgHF::OnOK()
{
int mark = this->m_list.GetSelectionMark();
if(mark<0)
{
MessageBox("請選擇要恢復的數據");
return;
}
else
{
this->BeginWaitCursor();
CString sql;_variant_t value;
CStringList m_pstrlist[3];
sql.Format("select * from tabbf order by bf_id asc");
if(m_runsql.CheckSQLResult(sql))
while(!m_runsql.m_recordset->adoEOF){
value=m_runsql.m_recordset->GetCollect("bf_id");
if(value.vt!=VT_NULL)
m_pstrlist[0].AddTail((char*)(_bstr_t)value);
value=m_runsql.m_recordset->GetCollect("rq");
if(value.vt!=VT_NULL)
m_pstrlist[1].AddTail((char*)(_bstr_t)value);
value=m_runsql.m_recordset->GetCollect("bf_path");
if(value.vt!=VT_NULL)
m_pstrlist[2].AddTail((char*)(_bstr_t)value);
m_runsql.m_recordset->MoveNext();
}
LONG result;
HKEY hKey;
TCHAR data[200];
DWORD dataSize;
result=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\ODBC\\ODBC.INI\\yaopin",
0,KEY_QUERY_VALUE,&hKey);
if(result==ERROR_SUCCESS)
{
dataSize=sizeof(data);
::RegQueryValueEx(hKey,"DBQ",NULL,NULL,(LPBYTE)&data,&dataSize);
}
CString path=m_list.GetItemText(mark,1);
LRunSql::Close();
if(::CopyFile(path,data,false))
{
this->EndWaitCursor();
MessageBox("OK","醫藥管理系統");
if(!LRunSql::ConnectDataBase())
MessageBox("數據庫連接錯誤!");
POSITION pos=NULL;
POSITION pos1=m_pstrlist[1].GetHeadPosition();
POSITION pos2=m_pstrlist[2].GetHeadPosition();
for(pos=m_pstrlist[0].GetHeadPosition();pos!=NULL;)
{
sql.Format("insert into tabbf(bf_id,rq,bf_path) values('%s',#%s#,'%s')"
,m_pstrlist[0].GetNext(pos),m_pstrlist[1].GetNext(pos1),m_pstrlist[2].GetNext(pos2));
m_runsql.RunSQL(sql);
}
}
else
{
this->EndWaitCursor();
MessageBox("文件拷貝錯誤!","錯誤");
if(!LRunSql::ConnectDataBase())
MessageBox("數據庫連接錯誤!");
}
}
CDialog::OnOK();
}
void CDlgHF::OnDatetimechangeDatetimepicker1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
this->InitList();
*pResult = 0;
}
void CDlgHF::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
this->OnOK();
*pResult = 0;
}
void CDlgHF::OnButtonDelete()
{
int mark = this->m_list.GetSelectionMark();
if(mark<0)
{
MessageBox("請選擇要刪除的數據");
return;
}
if(MessageBox("確定刪除備份文件嗎?","注意!",MB_YESNO)!=IDYES)
{
return;
}
else
{
CString bf_id=m_list.GetItemText(mark,0);
CString sql,path;
_variant_t value;
sql.Format("select bf_path from tabbf where bf_id = '%s'",bf_id);
if(m_runsql.CheckSQLResult(sql))
{
value=m_runsql.m_recordset->GetCollect("bf_path");
if(value.vt!=VT_NULL)
path=(char*)(_bstr_t)value;
}
else
{
MessageBox("沒有該備份","錯誤");
return ;
}
if(!::DeleteFile(path))
{
MessageBox("刪除文件錯誤","錯誤");
return;
}
sql.Format("delete * from tabbf where bf_id = '%s'",bf_id);
m_runsql.RunSQL(sql);
this->m_list.DeleteItem(mark);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -