请教两个有关问题,得到答案立即结贴、给分
请问两个问题,得到答案立即结贴、给分
我用VC++6.0读取Excel中的数据,有7000多条,但是有花5、6分钟,请问怎么能加快速度啊?我在网上找了,有人讲用多线程,可是我用不好,要花些时间要学,没有时间啊,有人知道可以告诉一下啊。
另一个问题,就是:
CComboBox m_Combox;
int ok = m_Combox.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|CBS_DROPDOWN,CRect(400,50,300,250),this,0);
if(!ok)
{
AfxMessageBox("LDKkkd");
}
/* 添加条目 */ //| CBS_SORT
CString Item[4] = {"a","ab","abc","abcd"};
for(int i = 0; i<4;i++)
{
m_Combox.AddString(Item[i]);
}
ok是成功的啊。
这两问题怎么解决啊,先谢谢了!
------解决方案--------------------
1、先找出最费时的地方。
2、
int ok = m_Combox.Create(WS_CHILD ¦WS_VISIBLE ¦WS_BORDER ¦CBS_DROPDOWN,CRect(400,50,300,250),this,0);
-----------
int ok = m_Combox.Create(WS_CHILD |brvbarWS_VISIBLE |brvbarWS_BORDER |brvbarCBS_DROPDOWN,CRect(400,50,300,250),this,0);
------解决方案--------------------
****怎么回事啊!
int ok = m_Combox.Create(WS_CHILD ¦WS_VISIBLE ¦WS_BORDER ¦CBS_DROPDOWN,CRect(400,50,300,250),this,0);
--------
int ok = m_Combox.Create(WS_CHILD|brvbarWS_VISIBLE|brvbarWS_BORDER|brvbarCBS_DROPDOWN,CRect(400,50,300,250),this,0);
------解决方案--------------------
1. 你自己找资料看, 比较简单的
2. 两个原因:
a. 如果CComboBox m_Combox; 是函数里面的局部变量, 函数执行王, 该对象也就会被释放, 所以窗体也就销毁了
b. CRect(400,50,300,250) 这个不对, right < left, 大小是负数, 就算有也看不到
------解决方案--------------------
CComboBox m_Combox;
--------
这个是成员变量吧?
------解决方案--------------------
CComboBox m_Combox
这是个局部变量,可能问题出在这里。定义一个全局的,看看有没有问题。
WS_CHILD | WS_VISIBLE | WS_BORDER | CBS_DROPDOWN
至于第一个问题,时间5,6分肯定有问题,分析一下,看到底慢在那里了,然后对症下药,或许不是读取的事,
而是解析数据的事。
------解决方案--------------------
用ADO的Recordset来一条一条的显示啊,那里有费时啊?
-------------
你是按数据库方式操作Excel的?改用COM方式也许会快些。
http://support.microsoft.com/kb/q178782/
------解决方案--------------------
对 CRect(400,50,300,250),特别奇怪的是,开始是可以显示的,我该了一下数据,再该回来,就怎么也不显示了。
-------
建议重新全部编译下程序
如果其他没动,相信这样可以解决问题。
读取EXCEL数据,如果能用com,确实比ADO要快些。
不过7000条数据要解析5~6分钟,这个绝对有问题。
就算是ACCESS数据库,20w的数据量,解析也差不多这么多时间。
------解决方案--------------------
mark,
怎么能加快速度,有人讲用多线程
=================
呵呵,这个我不理解
------解决方案--------------------
你的表格控件事什么?
------解决方案--------------------
你使用CListCtrl,不需要一开始就把所有数据都读进来,使用虚拟列表机制,先设置好条目数量,然后在需要的时候(滚动列表)再读入相应的内容。
我用VC++6.0读取Excel中的数据,有7000多条,但是有花5、6分钟,请问怎么能加快速度啊?我在网上找了,有人讲用多线程,可是我用不好,要花些时间要学,没有时间啊,有人知道可以告诉一下啊。
另一个问题,就是:
CComboBox m_Combox;
int ok = m_Combox.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|CBS_DROPDOWN,CRect(400,50,300,250),this,0);
if(!ok)
{
AfxMessageBox("LDKkkd");
}
/* 添加条目 */ //| CBS_SORT
CString Item[4] = {"a","ab","abc","abcd"};
for(int i = 0; i<4;i++)
{
m_Combox.AddString(Item[i]);
}
ok是成功的啊。
这两问题怎么解决啊,先谢谢了!
------解决方案--------------------
1、先找出最费时的地方。
2、
int ok = m_Combox.Create(WS_CHILD ¦WS_VISIBLE ¦WS_BORDER ¦CBS_DROPDOWN,CRect(400,50,300,250),this,0);
-----------
int ok = m_Combox.Create(WS_CHILD |brvbarWS_VISIBLE |brvbarWS_BORDER |brvbarCBS_DROPDOWN,CRect(400,50,300,250),this,0);
------解决方案--------------------
****怎么回事啊!
int ok = m_Combox.Create(WS_CHILD ¦WS_VISIBLE ¦WS_BORDER ¦CBS_DROPDOWN,CRect(400,50,300,250),this,0);
--------
int ok = m_Combox.Create(WS_CHILD|brvbarWS_VISIBLE|brvbarWS_BORDER|brvbarCBS_DROPDOWN,CRect(400,50,300,250),this,0);
------解决方案--------------------
1. 你自己找资料看, 比较简单的
2. 两个原因:
a. 如果CComboBox m_Combox; 是函数里面的局部变量, 函数执行王, 该对象也就会被释放, 所以窗体也就销毁了
b. CRect(400,50,300,250) 这个不对, right < left, 大小是负数, 就算有也看不到
------解决方案--------------------
CComboBox m_Combox;
--------
这个是成员变量吧?
------解决方案--------------------
CComboBox m_Combox
这是个局部变量,可能问题出在这里。定义一个全局的,看看有没有问题。
WS_CHILD | WS_VISIBLE | WS_BORDER | CBS_DROPDOWN
至于第一个问题,时间5,6分肯定有问题,分析一下,看到底慢在那里了,然后对症下药,或许不是读取的事,
而是解析数据的事。
------解决方案--------------------
用ADO的Recordset来一条一条的显示啊,那里有费时啊?
-------------
你是按数据库方式操作Excel的?改用COM方式也许会快些。
http://support.microsoft.com/kb/q178782/
------解决方案--------------------
对 CRect(400,50,300,250),特别奇怪的是,开始是可以显示的,我该了一下数据,再该回来,就怎么也不显示了。
-------
建议重新全部编译下程序
如果其他没动,相信这样可以解决问题。
读取EXCEL数据,如果能用com,确实比ADO要快些。
不过7000条数据要解析5~6分钟,这个绝对有问题。
就算是ACCESS数据库,20w的数据量,解析也差不多这么多时间。
------解决方案--------------------
mark,
怎么能加快速度,有人讲用多线程
=================
呵呵,这个我不理解
------解决方案--------------------
你的表格控件事什么?
------解决方案--------------------
你使用CListCtrl,不需要一开始就把所有数据都读进来,使用虚拟列表机制,先设置好条目数量,然后在需要的时候(滚动列表)再读入相应的内容。