BCB中能把内存中的一个数组映射为数据源DataSet吗?
感觉应该可以将一个内存中的数组映射为数据源,DataSet。
然后利用该DataSet产生报表。
不知道有这么实现过的吗?
问题点数:0、回复次数:8Top
1 楼zlc990405(alfred)回复于 2004-12-03 21:30:49 得分 0
学习中...Top
2 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-03 22:05:11 得分 0
没听说这种映射的,可以先将数据存入一个临时表,再显示出来Top
3 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-05 07:19:14 得分 0
可能还是有办法的,不过要费点工夫了。大概的思路是这样的,从TDataSet继承一个类,用来处理数据。Top
4 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-05 07:47:55 得分 0
class TMyDataSet: public TDataSet
{
public:
__fastcall TMyDataSet(Classes::TComponent* AOwner): TDataSet(AOwner){}
TGetResult __fastcall GetRecord(char * Buffer, TGetMode GetMode, bool DoCheck)
{
// 这里由你自己来实现
return grOK;
}
void __fastcall InternalClose(void){}
void __fastcall InternalHandleException(void){}
void __fastcall InternalInitFieldDefs(void){}
void __fastcall InternalOpen(void){}
bool __fastcall IsCursorOpen(void){return true;}
};
TMyDataSet *DataSet = new TMyDataSet(this);
DataSource1->DataSet = DataSet;
DBGrid1->DataSource1 = DataSource1;
大概就是这样的。Top
5 楼Behard(我爱天安门)回复于 2004-12-05 18:45:38 得分 0
本来就不是的东西,你非要映射会出问题的Top
6 楼wt_sanlian(雷电)回复于 2004-12-05 18:51:02 得分 0
呵呵,同意BehardTop
7 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-05 18:52:32 得分 0
其实不然,技术上可行,只是实现上还需要研究一下,主要还是有关TDataSet的Buffer数据结构要好好看看。Top
8 楼xpdavis(咕嘟-不想孤独)回复于 2004-12-05 20:45:31 得分 0
在下有不同的看法。
首先,这种想法在技术上是可行的,因为毕竟C++提供了这样的机制,使我们能够做一些特殊的事情。
其次,如果我们有充足的时间的话,研究一下并没有什么坏处,甚至可能提供了一种我们以前没有想到的思路。
最后,我们对这样的做法是否合理,目前还没办法给出一个定论,有些事情要试验一下才能验证。据目前掌握的情况,因为只是一个提法,所以很难判断是否可行。要把这个做法放到一个整体环境中,说不定还真的有这个需要,跟项目的情况有些关系。
还要补充一句,这里只能提出一个大概的做法,至于如何实现,希望楼主能花点时间研究一下,至少要对数据集的缓冲区结构要有所了解。还希望如果楼主把问题解决了以后,能上来说说心得,谢谢。Top




