if (str=="总分排名")
{
CString StrText="专业";
SetDlgItemText(IDC_STATIC, StrText);
CString Sqlstr;
CString StrCourseCB;
int index = m_CourseCB.GetCurSel();
m_CourseCB.GetLBText(index,StrCourseCB);
StrCourseCB.TrimRight();
//Sqlstr.Format("SELECT XH,XM,PJCJ=CAST(sum(CJ*XF)/sum(XF) as numeric(18,4)) FROM XS_KC_CJ where ZY ='%s' GROUP BY XH,XM ORDER BY PJCJ DESC",StrCourseCB);
Sqlstr="select XH,XM,CAST(sum(CJ*XF)/sum(XF) as numeric(18,4)) as PJCJ from XS_KC_CJ where ZY='计算机' group by XH,XM order by PJCJ desc";
//Sqlstr="Select XH,XM,XB from XS";
//打开ADO连接
CDlgLogin::OpenADO();
m_pCom->CommandText=bstr_t(Sqlstr);
m_pRs->Open((_variant_t)Sqlstr,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
//rst->Open(Sqlstr,adCmdText);
int i=0; //清空列标题
int iCount = m_PrintGrid.GetHeaderCtrl()->GetItemCount();
for(i = 0; i < iCount; i++)
{
m_PrintGrid.DeleteColumn(0);
}
m_PrintGrid.DeleteAllItems(); //清空原显示的记录 // 加入列标题
CString sHeadText[7]={"名次","学号","姓名","平均学分积"};
int nWidth[4]={40,120,80,120,};
//m_PrintGrid.ReadOnly(true);
for(i=0;i<4;i++)
{
m_PrintGrid.InsertColumn(i,sHeadText[i]);
m_PrintGrid.SetColumnWidth(i,nWidth[i]);
}
for(i=0;i<m_pRs->GetRecordCount();i++)
{
m_PrintGrid.InsertItem(i,""); //加入默认行
} CString sName;
m_pRs->MoveFirst();
for(i=0;i<m_pRs->GetRecordCount();i++)
{
m_pRs->Move(i); //移动记录集指针到位置i
for(int c=0;c<m_pRs->Fields->Count+1;c++)
{
if(c==0) //第一列是名次
{
sName.Format("%d",i+1);
m_PrintGrid.SetItemText(i,c,sName); //填入名次
continue;
}
sName=(char*)(_bstr_t)(m_pRs->Fields->GetItem((long)(c-1))->Value);
m_PrintGrid.SetItemText(i,c,sName);
}
m_pRs->MoveFirst(); //防止错误
}
}红色部分的SQL语句在SQL查询分析器中执行正常,到了这里就返回空(m_pRs->GetRecordCount()返回-1)
换蓝色简单的语句就行!!奇怪!!
{
CString StrText="专业";
SetDlgItemText(IDC_STATIC, StrText);
CString Sqlstr;
CString StrCourseCB;
int index = m_CourseCB.GetCurSel();
m_CourseCB.GetLBText(index,StrCourseCB);
StrCourseCB.TrimRight();
//Sqlstr.Format("SELECT XH,XM,PJCJ=CAST(sum(CJ*XF)/sum(XF) as numeric(18,4)) FROM XS_KC_CJ where ZY ='%s' GROUP BY XH,XM ORDER BY PJCJ DESC",StrCourseCB);
Sqlstr="select XH,XM,CAST(sum(CJ*XF)/sum(XF) as numeric(18,4)) as PJCJ from XS_KC_CJ where ZY='计算机' group by XH,XM order by PJCJ desc";
//Sqlstr="Select XH,XM,XB from XS";
//打开ADO连接
CDlgLogin::OpenADO();
m_pCom->CommandText=bstr_t(Sqlstr);
m_pRs->Open((_variant_t)Sqlstr,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
//rst->Open(Sqlstr,adCmdText);
int i=0; //清空列标题
int iCount = m_PrintGrid.GetHeaderCtrl()->GetItemCount();
for(i = 0; i < iCount; i++)
{
m_PrintGrid.DeleteColumn(0);
}
m_PrintGrid.DeleteAllItems(); //清空原显示的记录 // 加入列标题
CString sHeadText[7]={"名次","学号","姓名","平均学分积"};
int nWidth[4]={40,120,80,120,};
//m_PrintGrid.ReadOnly(true);
for(i=0;i<4;i++)
{
m_PrintGrid.InsertColumn(i,sHeadText[i]);
m_PrintGrid.SetColumnWidth(i,nWidth[i]);
}
for(i=0;i<m_pRs->GetRecordCount();i++)
{
m_PrintGrid.InsertItem(i,""); //加入默认行
} CString sName;
m_pRs->MoveFirst();
for(i=0;i<m_pRs->GetRecordCount();i++)
{
m_pRs->Move(i); //移动记录集指针到位置i
for(int c=0;c<m_pRs->Fields->Count+1;c++)
{
if(c==0) //第一列是名次
{
sName.Format("%d",i+1);
m_PrintGrid.SetItemText(i,c,sName); //填入名次
continue;
}
sName=(char*)(_bstr_t)(m_pRs->Fields->GetItem((long)(c-1))->Value);
m_PrintGrid.SetItemText(i,c,sName);
}
m_pRs->MoveFirst(); //防止错误
}
}红色部分的SQL语句在SQL查询分析器中执行正常,到了这里就返回空(m_pRs->GetRecordCount()返回-1)
换蓝色简单的语句就行!!奇怪!!
解决方案 »
- vc6.0多次打开位图
- 文字输出到bitmap,疑惑ing
- 鼠标响应画多边形
- 换工作了,庆祝一下!
- GetDeviceCaps(hdc,HORZSIZE)和GetDeviceCaps(hdc,VERTSIZE)的返回值?
- 请高人指点:进程地址空间和虚拟内存的到底是什么关系?好困惑
- VS2008编译代码时是否有Hash过程
- VC如何发送消息将一字符串传给delphi
- 读取注册表REG_DWORD失败,求解
- 在ATL COM 里我选择不支持MFC以后,想问一下,怎样把BSTR 类型转换成CHAR *类型,怎样把CHAR * 或CHR 转化成BSTR *类型。虽然我强行转化
- socket编程的困惑?
- 怎么样才能在远程线程CreateRemoteThread函数中,调用系统API函数呢?
m_pConn->CursorLocation = adUseClient;
比如Sqlstr="Select XH,XM,XB from XS";
而这个SQL语句
Sqlstr.Format("SELECT XH,XM,PJCJ=CAST(sum(CJ*XF)/sum(XF) as numeric(18,4)) FROM XS_KC_CJ where ZY ='%s' GROUP BY XH,XM ORDER BY PJCJ DESC",StrCourseCB);
就非要加上?
怎么解释?
1、pRs->CursorLocation = ADO::adUseClient //客户端游标
2、游标类型不能为只向前游标。动态、静态、键集都可以。
这里有数据库的视图和表
http://topic.csdn.net/u/20080909/14/dfc565ae-71ca-4c02-9897-64b97a0e2379.html