MFC高手看过来,^_^
第一个是关于ExecuteSQL,第二个是关于查询的,第三个是关于如何将CListCtrl里面的内容生产Excel报表
先看第一个:
msdn上面给出了用法,
CString strCmd = "UPDATE Taxes SET Federal = 36%";
TRY
{
m_dbCust.ExecuteSQL( strCmd );
}
CATCH(CDBException, e)
{
// The error code is in e->m_nRetCode
}
可是,为什么我用的时候老是提示我From附近有错误呢?我的用法如下:
void CClassroomqueryDlg::GetClassroomInf()
{
CClassRoomSet m_pCRSet(&m_database); //CClassRoomSet是教室表的设置
CQueryclassroomSet m_pQCRSet(&m_database); //CQueryclassroomSet是查询教室表的设置
CTotalTableSet m_pTTSet(&m_database); //CTotalTableSet是总表的设置
if (!m_database.IsOpen())
{
m_database.Open(_T("stct"));
}
CString strCmd1 = "INSERT INTO QUERYCLASSROOM (room_id, cweek, ctime)
SELECT course_place, cweek, ctime
FROM TOTALTABLE
CString strCmd2 = "INSERT INTO QUERYCLASSROOM (room_id)
SELECT room_id FROM CLASSROOMS
WHERE (room_id NOT IN
(SELECT DISTINCT course_place FROM TOTALTABLE))";
TRY
{
m_database.ExecuteSQL( strCmd1 );
m_database.ExecuteSQL( strCmd2 );
}
CATCH(CDBException, e)
{
// The error code is in e->m_nRetCode
}
END_CATCH
求教高手!!
第二个问题如下:
void CTeacherCourseDlg::OnQuery1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
p_query.Format("select * from TOTALTABLE where teacher_id = '%s'", m_teacherid);
RefreshData();
}
void CTeacherCourseDlg::RefreshData()
{
m_teachercourse.DeleteAllItems();
CTotalTableSet m_pTTSet(&m_database);
m_pTTSet.Open(AFX_DB_USE_DEFAULT_TYPE,p_query);
CDBVariant varValue;
if(m_pTTSet.GetRecordCount()!=0) m_pTTSet.MoveFirst();
char buf[40];
int i=0;
while(!m_pTTSet.IsEOF())
{
//if(m_pTTSet.m_class_name == ClassName)
int temp=0;
m_pTTSet.GetFieldValue(temp,varValue);
sprintf(buf,"%d",varValue.m_iVal);
m_teachercourse.InsertItem(i,buf);
m_pTTSet.GetFieldValue(1,varValue);
m_teachercourse.SetItemText(i,1,varValue.m_pstring->GetBuffer(1));
m_pTTSet.GetFieldValue(2, varValue);
m_teachercourse.SetItemText(i, 2, varValue.m_pstring->GetBuffer(1));
m_pTTSet.GetFieldValue(3,varValue);
m_teachercourse.SetItemText(i,3,varValue.m_pstring->GetBuffer(1));
m_pTTSet.GetFieldValue(4,varValue);
m_teachercourse.SetItemText(i,4,varValue.m_pstring->GetBuffer(1));
m_pTTSet.GetFieldValue(5,varValue);
m_teachercourse.SetItemText(i,5,varValue.m_pstring->GetBuffer(1));
m_pTTSet.GetFieldValue(6,varValue);
m_teachercourse.SetItemText(i,6,varValue.m_pstring->GetBuffer(1));
m_pTTSet.GetFieldValue(7,varValue);
m_teachercourse.SetItemText(i,7,varValue.m_pstring->GetBuffer(1));
m_pTTSet.GetFieldValue(8,varValue);
sprintf(buf,"%f",varValue.m_fltVal);
m_teachercourse.SetItemText(i,8,buf);
m_pTTSet.GetFieldValue(9, varValue);
m_teachercourse.SetItemText(i, 9, varValue.m_pstring->GetBuffer(1));
i++;
m_pTTSet.MoveNext();
}
}
这是一个查询的部分查询,问题是,当输入相匹配的记录后,能够得到正确的结果,但是输入不匹配的记录后,显然,什么信息
都没有,为了能够得到"此记录不存在"类似的提示,我改怎么办?
第三个是关于如何根据CListCtrl里面的内容生成相应的Excel报表?
^_^,三个问题,谁解决了,高分相赠!