(急)关于DBGrid加载动态生成ClientDataSet的问题?

laers 2006-11-30 12:10:07
ClientDataSet的数据是由Socket传过来的一大串字符,经过字符处理后,动态生成ClientDataSet,并加载到DBGrid上。

1)出现续行显示,并不是一次全部显示到DBrid上?

2)如在第一次未加载ClientDataSet完成时,再进行另一操作,就会产生错误!

3)不知可否用socket传一数据集,然后加载到ClientDataSet上?具体如何操作呢?

谢谢!

附:动态生成Clientdataset代码
TFieldDefs *TDefs = ADODataSet1->FieldDefs;
TFieldDef *pDef = TDefs->AddFieldDef();
pDef->Name = "N1";
pDef->DataType = ftString;


pDef = TDefs->AddFieldDef();
pDef->Name = "N2";
pDef->DataType = ftString;

ADODataSet1->CreateDataSet();

ADODataSet1->Close();
ADODataSet1->Open();
ADODataSet1->Edit();

for (int i=0;i<Count;i++)
{
ADODataSet1->Append();
ADODataSet1->FieldByName("N1")->AsString="加载的数据1" ;
ADODataSet1->FieldByName("N2")->AsString ="加载的数据2";
}

ADODataSet1->Post();

DataSource1->DataSet = ADODataSet1;
DBGrid1->DataSource = DataSource1;
...全文
316 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
laers 2006-12-03
  • 打赏
  • 举报
回复
还没有解决,再顶!!
laers 2006-12-01
  • 打赏
  • 举报
回复
用 ClientDataset 呀,用哪个到有问题吗?
勉励前行 2006-11-30
  • 打赏
  • 举报
回复
如果數據集過大,加載時可能會有你說的情況,一般加載時都不顯示。

未加载ClientDataSet完成 , 如果不用多線程,如何能做其他事情。難道你用的是ADO中的線程加載?如果是這樣,當加載沒完成時,有一些操作是可能是有危險的,必須檢測加載是否完成。

CACACACACA 2006-11-30
  • 打赏
  • 举报
回复
楼主代码是ADO, 说的是CLIENTDATASET.
倒底是用哪个.
laers 2006-11-30
  • 打赏
  • 举报
回复
TO:PPower(月亮光光,照地堂)

我是用TClientDataSet来做,实现目的为了快速显示数据!
1)电脑配置较高,不是电脑问题;

2)“VCL多線程的能力幾乎為0”,这话怎么说?
第一次未加载ClientDataSet完成时,是指加载数据集需要些时间才能完全加载完成,即出现续行加载显示的情况;

3)为什么用TClientDataset可以,TClientDataset和TADODataset有什么区别。

请指教~谢谢:)
勉励前行 2006-11-30
  • 打赏
  • 举报
回复
這種功能,你用TADODataSet來做,不如用TClientDataSet來做。
沒試過這樣用TADODataSet來做本地數據集 .好象你這樣只為顯示用而已,要不修改的數據存盤怎麼辦。
1)
何為续行显示? 該不會是電腦速度太慢了,導致卡屏現象吧,
2)
VCL多線程的能力幾乎為0,第一次未加载ClientDataSet完成时,再进行另一操作 是怎麼回事?
3)
如果用TClientDataset則可以
laers 2006-11-30
  • 打赏
  • 举报
回复
up
laers 2006-11-30
  • 打赏
  • 举报
回复
但第一次加载时会很快,第二、三后就会出现续行加载显示的情况了~~

还得请大伙帮帮忙呀~在线等待,谢谢!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧