CXscjxtApp *app=(CXscjxtApp *)AfxGetApp();
CDatabase db;
    db.Open(NULL,FALSE,FALSE,"ODBC;DSN=chengji;UID=asus;PWD=");
    CRecordset rs( &db );
    rs.Open( CRecordset::forwardOnly, _T("SELECT * FROM cheng_ji"));    int nFields = rs.GetODBCFieldCount();
int l=nFields;

for(l;l>0;l--)
{
CString zongfen1=app->zongfen [l];
CString xuehao1=app->xuehao [l];
CString name1=app->name [l];
if(app->zongfen [l]<=app->zongfen [l-1])
{
app->zongfen [l]=app->zongfen [l-1];
app->xuehao [l]=app->xuehao [l-1];
app->name [l]=app->name [l-1];
app->zongfen [l-1]=zongfen1;
app->xuehao [l-1]=xuehao1;
app->name [l-1]=name1;
} }
CString q[100];
for(int w=1;w<=100;w++)
{
q[w]=w;
}
int y=0;
m_list.DeleteAllItems ();
for(y;y<l;y++)
{
//int paiming=1;

//CString pm;
//pm.Format ("%d",paiming);
CString xuehao2;
CString name2;
CString zongfen2;
xuehao2=app->xuehao [y];
name2=app->name [y];
zongfen2=app->zongfen [y];
SetDlgItemText(IDC_EDIT1,name2);
m_list.InsertItem (y,q[y]);
m_list.SetItemText (y,1,app->xuehao [y]);
m_list.SetItemText (y,2,app->name [y]);
m_list.SetItemText (y,3,app->zongfen [y]);
//paiming ++;
//y++;
}
  rs.Close();
    db.Close();
我在CXscjxtApp里定义了三个数组 分别为xuehao[100],name[100];zongfen[100];我把数据库里的数据存在了这三个数组里。然后我在另一个dailog里调用了这个歌数组 并且把值插入到m_list(list control控件)里,为什么我 写的语句没能把数据插入到list control控件上?

解决方案 »

  1.   

    int l=nFields;
        
    for(l;l>0;l--)
    到l=0;
    for(y;y<l;y++) l=0 !!
      

  2.   

    谢谢 这确实有问题
    下面问题继续 我怎么不能把值赋值给全局变量?
    我在CXscjxtApp类里加了面代码里的三个数组。我把数据库里的数据存在数组里面 你们看看为什么我不能把值赋给全局变量的数组 代码如下while(!rs.IsEOF())
    {
    CString varID;
           rs.GetFieldValue("xuehao", varID); 
           m_list.InsertItem(0,varID);
       app->xuehao [z]=varID;           CString varName;
           rs.GetFieldValue("name", varName); 
           m_list.SetItemText(0, 1, varName);
       app->name [z]=varName;       CString varyuwen;
           rs.GetFieldValue("yuwen", varyuwen); 
           m_list.SetItemText(0, 2, varyuwen);
       int a=atoi(varyuwen);
           CString varshuxue;
       rs.GetFieldValue("shuxue",varshuxue);
       m_list.SetItemText(0,3,varshuxue);
       int b=atoi(varshuxue);    CString varyingyu;
       rs.GetFieldValue("yingyu",varyingyu);
       m_list.SetItemText (0,4,varyingyu);
       int c=atoi(varyingyu);    CString varwuli;
       rs.GetFieldValue("wuli",varwuli);
       m_list.SetItemText (0,5,varwuli);
       int d=atoi(varwuli);    CString varhuaxue;
       rs.GetFieldValue("huaxue",varhuaxue);
       m_list.SetItemText (0,6,varhuaxue);
       int e=atoi(varhuaxue);    CString varlishi;
       rs.GetFieldValue("lishi",varlishi);
       m_list.SetItemText (0,7,varlishi);
       int f=atoi(varlishi);    CString varzhengzhi;
       rs.GetFieldValue("zhengzhi",varzhengzhi);
       m_list.SetItemText (0,8,varzhengzhi);
       int g=atoi(varzhengzhi);    int h;
       h=a+b+c+d+e+f+g;
       CString varzongfen;
       varzongfen.Format ("%d",h);
       m_list.SetItemText(0,9,varzongfen);
       app->zongfen [z]=varzongfen;        rs.MoveNext();
       z++;
    }
    int nItem = m_list.GetItemCount ();
    app->p =nItem;
    //GetDlgItem(IDC_EDIT4)->SetWindowText(nItem);
    SetDlgItemInt(IDC_EDIT4,nItem);
        rs.Close();
        db.Close();
      

  3.   

    执行前后 m_list的行数变化了吗?设置个断点 一步步调试一下看看
    1 是否直接遇到rs.Eof
    2 是否读到数据
    3 z是否合法
      

  4.   

    xuehao[100],name[100];zongfen[100];
    CString xuehao[100];//是吧?
      

  5.   

    是的,字符串不能进行比较吧?
    我想比较总分里的数据该怎么比较? 
    我用语句
    int a=atoi(zongfen[i]);
    int b=atoi(zongfen[i-1];
    if(a<=b)
    {
    .....
    }
    怎么这样写就崩溃了?
      

  6.   

    i-1 是不是小于0了?
    另外用 _ttoi 可以兼容UNICODE和非UNICODE
      

  7.   

    1.xuehao[100],name[100];zongfen[100];
    用CStringArray 你这样开销太大
    2.CString可以比较:
    if(a==b)
      

  8.   

    谢谢楼上所有人,问题解决了 比较时我用atoi转换类型比较。
    没能插入的原因是 忘记了用冒泡排序算法。那样比较只能诞生一个最大的。经过修改 排序和插入已经实现 
      

  9.   

    你们说CString name[100];太浪费内存了。请问 我可以这样定义数组么?
    int n=m_list.GetItemRecond();
    CString name[n];
    能行不?
      

  10.   

    你们说CString name[100];太浪费内存了。请问 我可以这样定义数组么?
    int n=m_list.GetItemCount ()
    CString name[n];
    能行不?