📄 080426dbdialogdlg.cpp
字号:
_variant_t T1,T2,T3;
float t1,t2,t3,m_Average;
CString str;
T1 = m_chinese;
t1=(float)T1;
T2 = m_math;
t2=(float)T2;
T3 = m_english;
t3=(float)T3;
m_Average =t1+t2;
m_Average =m_Average +t3;
m_Average = m_Average/3;
str.Format("%3.2f",m_Average);
CString strItemText1;
CString strItemText2;
int nCount = m_ListCtrl.GetItemCount();
nIndex = nCount;
if(nCount>=0)
{
GetDlgItem(IDC_DELETE)->EnableWindow(true);
}
for(int i=0;i<nCount;i++)
{
strItemText1 = m_ListCtrl.GetItemText(i,0);
strItemText2 = m_ListCtrl.GetItemText(i,1);
if(strItemText1==m_stuNO||strItemText2==m_name)
{
MessageBox("the item have been inserted!");
return;
}
}
if(""==m_stuNO||""==m_name||t1<0.0||t1>100.0||t2<0.0||t2>100.0||t3<0.0||t3>100.0)
{
MessageBox("请你按格式输入你的学名,姓名,和各科合理分数!");
return;
}
else{
CString sql;
/*_variant_t T1,T2,T3;
T1 = m_chinese;
T2 = m_math;
T3 = m_english;*/
//sql_.Format("SELECT * FROM students");
// sql_.Format("INSERT INTO students (number,name,chinexe,math,english)\
// VALUES('%s','%s',%ld,%ld,%ld)",m_stuNO,m_name,(long)T1,(long)T2,(long)T3);
// _bstr_t sql = sql_;
_variant_t t;
t=m_stuNO;
try{ m_pRecordset.CreateInstance(__uuidof(Recordset));
//m_pConnection.CreateInstance(__uuidof(Connection));
sql.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb");
_bstr_t sql_=sql;
//m_pConnection->Open(sql_,"","",-1);
m_pRecordset->Open("SELECT* FROM students",sql_,adOpenStatic,adLockOptimistic,adCmdText);
m_pRecordset->AddNew();
t=m_stuNO;
m_pRecordset->PutCollect("number",&t);
//nUpdate = m_pRecordset->Update();
t=m_name;
m_pRecordset->PutCollect("name",&t);
t=m_chinese;
m_pRecordset->PutCollect("chinexe",&t);
t=m_math;
m_pRecordset->PutCollect("math",&t);
t=m_english;
m_pRecordset->PutCollect("english",&t);
t=str;
m_pRecordset->PutCollect("average",&t);
t=m_timer;
m_pRecordset->PutCollect("timer",&t);
nUpdate = m_pRecordset->UpdateBatch(adAffectCurrent);
//m_pConnection->Execute(sql,NULL,adCmdText);
//m_pRecordset->Open(sql,"","",adCmdText);
//m_pRecordset->MoveFirst();
}
catch(_com_error& e)
{ MessageBox("插入失败!");
AfxMessageBox(e.ErrorMessage());
return;
}
m_pRecordset->Close();
MessageBox("插入数据成功!");
//if(nUpdate!=0)
//CMy080426dbdialogDlg::Refresh();
//CMy080426dbdialogDlg::OnInitDialog();
m_ListCtrl.InsertItem(0,m_stuNO);
m_ListCtrl.SetItemText(0,1,m_name);
//str.Format("%f",m_chinese);
m_ListCtrl.SetItemText(0,2,m_chinese);
//str.Format("%f",m_math);
m_ListCtrl.SetItemText(0,3,m_math);
//str.Format("%f",m_english);
m_ListCtrl.SetItemText(0,4,m_english);
str.Format("%3.2f",m_Average);
m_ListCtrl.SetItemText(0,5,str);
m_ListCtrl.SetItemText(0,6,m_timer);
}
}
void CMy080426dbdialogDlg::OnDelete()
{
// TODO: Add your control notification handler code here
UpdateData(true);
CString sql,sqldelete, selectID;
sql.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb");
_bstr_t sql_=sql;
int nCount = m_ListCtrl.GetSelectionMark();
if(nCount==-1)
{
MessageBox("please choose a item!");
return;
}
else{
selectID = m_ListCtrl.GetItemText(nCount,0);
sqldelete.Format("SELECT* FROM students WHERE number = '%s'",selectID);
m_pRecordset->Open((_bstr_t)sqldelete,sql_,adOpenDynamic,adLockOptimistic,adCmdUnspecified);
m_ListCtrl.DeleteItem(nCount);
m_pRecordset->Delete(adAffectCurrent);
//m_pRecordset->MoveNext();
m_pRecordset->Update();
m_pRecordset->MoveNext();
m_ListCtrl.SetSelectionMark(-1);
}
nIndex--;
if(nIndex==0)
GetDlgItem(IDC_DELETE)->EnableWindow(false);
m_pRecordset->Close();
//Refresh();
UpdateData(false);
}
void CMy080426dbdialogDlg::OnBtok()
{
// TODO: Add your control notification handler code here
OnOK();
}
/*void CMy080426dbdialogDlg::Refresh()
{
//UpdateData(true);
m_ListCtrl.DeleteAllItems();
m_ListCtrl.SetRedraw(FALSE);
_bstr_t SQL("SELECT * FROM students");
_RecordsetPtr Ptr;
int i=0;
try
{
Ptr.CreateInstance(__uuidof(Recordset));//这一个时候应该确保数据库没有被打开;不然将出错!
Ptr = m_pConnection->Execute(SQL,NULL,adCmdText);
//Ptr->Update();
_variant_t roader;
while(!Ptr->adoEOF)
{
roader = Ptr->GetCollect("number");
if(roader.vt != VT_NULL)
m_ListCtrl.InsertItem(i,(char*)(_bstr_t)roader);
roader = Ptr->GetCollect("name");
if(roader.vt != VT_NULL)
m_ListCtrl.SetItemText(i,1,(char*)(_bstr_t)roader);
roader = Ptr->GetCollect("chinexe");
if(roader.vt != VT_NULL)
m_ListCtrl.SetItemText(i,2,(char*)(_bstr_t)roader);
roader = Ptr->GetCollect("math");
if(roader.vt != VT_NULL)
m_ListCtrl.SetItemText(i,3,(char*)(_bstr_t)roader);
roader = Ptr->GetCollect("english");
if(roader.vt != VT_NULL)
m_ListCtrl.SetItemText(i,4,(char*)(_bstr_t)roader);
roader = Ptr->GetCollect("average");
if(roader.vt != VT_NULL)
m_ListCtrl.SetItemText(i,5,(char*)(_bstr_t)roader);
roader = Ptr->GetCollect("timer");
if(roader.vt != VT_NULL)
m_ListCtrl.SetItemText(i,6,(char*)(_bstr_t)roader);
Ptr->MoveNext();
}
}
catch(_com_error& e)
{ //MessageBox("yid");
AfxMessageBox(e.ErrorMessage());
m_ListCtrl.SetRedraw(TRUE);
return;
}
m_ListCtrl.SetRedraw(TRUE);
UpdateData(false);
Ptr->Close();
} */
/*void CMy080426dbdialogDlg::OnUpdate()
{
// TODO: Add your control notification handler code here
CMy080426dbdialogDlg::Refresh();
}*/
void CMy080426dbdialogDlg::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
//CString str;
CTime time;
time = CTime::GetCurrentTime();
m_timer = time.Format("%H:%M:%S");
SetDlgItemText(IDC_EDIT5,m_timer);
//UpdateData(false);
CDialog::OnTimer(nIDEvent);
}
void CMy080426dbdialogDlg::OnClose()
{
// TODO: Add your message handler code here and/or call default
MessageBox("你确定要退出吗!");
CDialog::OnClose();
}
void CMy080426dbdialogDlg::OnAddmap()
{
// TODO: Add your control notification handler code here
VARIANT varChunk;
SAFEARRAY *psa;
SAFEARRAYBOUND * rgsabound=(SAFEARRAYBOUND *)malloc(sizeof(SAFEARRAYBOUND));
//allocate a SAFEARRAYBOUND struct for built a Boundarray;
CString sql;
sql.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb");
//database connectstring
_bstr_t sql_=sql;
//m_pConnection->Open(sql_,"","",-1);
//Connect to database;
m_pRecordset->Open("SELECT* FROM student1",sql_,adOpenDynamic,adLockOptimistic,adCmdText);
//VT_ARRAY │ VT_UI1
//Open a bmp files as binary style;
static char BASED_CODE szFilter[] = "bmp Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE,"bmp",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
if (dlg.DoModal() == IDOK)
{
m_strpath=dlg.GetPathName();
MessageBox(m_strpath);
}
CFile f(m_strpath,CFile::modeRead);
UINT ChunkSize=f.GetLength();
char *bVal=new char[ChunkSize+1];
UINT uIsRead=0;
//Create a safe array to store the array of BYTES
uIsRead=f.Read(bVal,ChunkSize);
if(uIsRead==0)return;
rgsabound[0].cElements =uIsRead;
rgsabound[0].lLbound = 0;
psa=SafeArrayCreate(VT_UI1,1,rgsabound);
for(long index=0;index<uIsRead;index++)
if(FAILED(SafeArrayPutElement(psa,&index,&bVal[index])))
{::MessageBox(NULL,"啊,又出毛病了。","提示",MB_OK|MB_ICONERROR);
return; }
varChunk.vt = VT_ARRAY|VT_UI1;
varChunk.parray = psa;
try{
m_pRecordset->AddNew();
m_pRecordset->Fields->GetItem("name")->AppendChunk(varChunk);
}
catch(_com_error &e)
{
CString str=(char*)e.Description();
::MessageBox(NULL,str+"\n又出毛病了。","提示",MB_OK);
return;
}
::VariantClear(&varChunk);
::SafeArrayDestroyData(psa);
delete [] bVal;
f.Close();
MessageBox("添加成功!");
m_pRecordset->Update();
m_pRecordset->Close();
Invalidate();
}
void CMy080426dbdialogDlg::OnButview()
{
CString sql;
sql.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=student.mdb");
_bstr_t sql_=sql;
//m_pConnection->Open(sql_,"","",-1);
m_pRecordset->Open("SELECT* FROM student1",sql_,adOpenDynamic,adLockOptimistic,adCmdText);
CFile f;
f.Open("d:\\bbb.bmp",CFile::modeWrite|CFile::modeCreate);
m_pRecordset->MoveLast();
long lPhotoSize = m_pRecordset->Fields->Item["name"]->ActualSize;
long lIsRead=0;
_variant_t varChunk;
char *buf=new char[lPhotoSize];
while(lPhotoSize>0)
{
lIsRead=lPhotoSize;//>=ChunkSize; ChunkSize:lPhotoSize;
varChunk = m_pRecordset->Fields->
Item["name"]->GetChunk(lIsRead);
for(long index=0;index<lIsRead;index++)
{
::SafeArrayGetElement(varChunk.parray,&index,buf+index);
}//注意这里读出的是BITMAPFILEHEADER文件流(就是二进制序列);
BITMAPFILEHEADER bmpHeader;
DWORD bmfHeaderLen = sizeof(bmpHeader);
strncpy((LPSTR)&bmpHeader, (LPSTR)buf, bmfHeaderLen);
// 是否是位图 ----------------------------------------
if (bmpHeader.bfType == (*(WORD*)"BM"))
{
char* lpDIBBits = buf + bmfHeaderLen;
BITMAPINFOHEADER &bmpiHeader = *(LPBITMAPINFOHEADER)lpDIBBits;
BITMAPINFO &bmpInfo = *(LPBITMAPINFO)lpDIBBits;//
lpDIBBits = buf + ((BITMAPFILEHEADER *)buf)->bfOffBits;
// 创建位图 --------------------------------------
CDC dc;
HDC hdc =::GetDC(NULL);//为什么?
dc.Attach(hdc);
// A Win32-based application uses a handle to refer to a resource that has been loaded into memory.
//handle 都是同一类型的;
HBITMAP hBmp =CreateDIBitmap(dc.m_hDC, &bmpiHeader, CBM_INIT, lpDIBBits,
&bmpInfo, DIB_RGB_COLORS);
if (m_Bitmap.GetSafeHandle() != NULL)
m_Bitmap.DeleteObject();
m_Bitmap.Attach(hBmp);
m_BOOLTag=true;
dc.Detach();
ReleaseDC(&dc);
Invalidate();
}
f.Write(buf,lIsRead);
lPhotoSize-=lIsRead;
}//while()
f.Close();
m_pRecordset->Close();
}
HBRUSH CMy080426dbdialogDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if (nCtlColor== CTLCOLOR_EDIT)
pDC->SetTextColor(RGB (255, 155 , 0));
//pDC->SetBkColor(RGB(255, 255 , 0));
if (nCtlColor==CTLCOLOR_STATIC)
{pDC->SetTextColor(RGB (255, 0 , 0));
//pDC->SetBkColor(RGB(1,255,0));
pDC->SetBkMode(TRANSPARENT);
}
if (nCtlColor==CTLCOLOR_BTN)
{
pDC->SetTextColor(RGB(0,0 , 0));
pDC->SetBkColor(RGB(255, 255 ,0));//不行呢?
}
// TODO: Return a different brush if the default is not desire
return hbr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -