none
关于COMBOX奇怪的问题: RRS feed

  • 问题

  • 我用SetCurSel(0) 可以用,现在问题是: 我必须滚动下COMBOX控件,再执行SQL语句,才有查询结果

    通过初始化的SetCurSel(0) 执行SQL语句报错

    my_res=mysql_store_resul(mydata);

    my_res 为空

    如果把COMBOX控件滚动下再选中初始化得那个值,则 my_res不为空
    非常奇怪

    2011年6月2日 4:43

答案

  • 你好,

     

    根据mysql_select_db的定义,第二个参数是规定 MySQL 连接,你可以调试看看,是否参数正确。或者你也可以判断mysql_select_db的返回值是否不为空。

     

    希望我的建议能够帮助您解决您的问题


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Rob Pan 2011年7月6日 9:15
    2011年6月10日 8:42

全部回复

  •  

    你好,

    SetCurSel是选取列表框中的一个选项,索引从0开始,-1为什么都不选.当你需要把列表框中已经选取的内容清空时就可以使用这个函数。SQL语句报错也可能是语法不对,所以如果您提供错误信息,就可以让我更好的了解您的问题。此外,如果您不介意的话,您可以向我们展示您的实例代码,这样我们可以更快更好的找到问题的所在。

     

    我们期待您的回复,并帮助您结局您的问题。

     


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月7日 2:51
  • 你在执行sql语句的时候是不是引用了COMBOX的某些属性值,如果不滚动一下这些值会造成溢出所以才报错

    你可以跟踪一下代码定位问题原因

    2011年6月7日 4:34
  •  My_Res=mysql_list_dbs(&MyData,NULL);
     if(!mysql_num_rows(My_Res))
      return;
     int i,
      j;
     CString DbName;
     i=0;
     DbName.Empty();
     while(My_Row=mysql_fetch_row(My_Res))
     {
      i=mysql_num_fields(My_Res);
      for(j=0;j<i;j++)
      {
       if(DbName.IsEmpty())
        DbName=My_Row[j];
       
       m_cDbName.AddString(My_Row[j]);
      }
     }
     mysql_free_result(My_Res);
     m_cDbName.SetCurSel(2);
     mysql_select_db(&MyData,DbName);  //这句要滚动下才能正常运行
     
    // mysql_select_db(&MyData,"class1"); //这是我把上句改下运行就没问题了
    2011年6月8日 11:58
  • 你好,

     

    根据mysql_select_db的定义,第二个参数是规定 MySQL 连接,你可以调试看看,是否参数正确。或者你也可以判断mysql_select_db的返回值是否不为空。

     

    希望我的建议能够帮助您解决您的问题


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Rob Pan 2011年7月6日 9:15
    2011年6月10日 8:42
  •  My_Res=mysql_list_dbs(&MyData,NULL);
     if(!mysql_num_rows(My_Res))
      return;
     int i,
      j;
     CString DbName;
     i=0;
     DbName.Empty();
     while(My_Row=mysql_fetch_row(My_Res))
     {
      i=mysql_num_fields(My_Res);
      for(j=0;j<i;j++)
      {
       if(DbName.IsEmpty())
        DbName=My_Row[j];
       
       m_cDbName.AddString(My_Row[j]);
      }
     }
     mysql_free_result(My_Res);
     m_cDbName.SetCurSel(2);
     mysql_select_db(&MyData,DbName);  //这句要滚动下才能正常运行
     
    // mysql_select_db(&MyData,"class1"); //这是我把上句改下运行就没问题了


    My_Row是结果集中的一行吧?

    i 是结果集的列数吧?

    m_cDbName.AddString(My_Row[j]); 把这一行的所有列都当做DbName插入ComboBox?

    2011年6月14日 16:58