DataStore   实际上就是去掉了显示属性的DataWindow   ,如果要说其节约资源也许是可能的,,其用处就应该看你的程序中是否能用的到了,如一个打印表单,就可以建立表单格式的DataStore   在打印按纽中只需给其赋值后,使用PrintDatawindow()即可打印,,是不是很方便吧,如果想要看到,只需使用ShareData(),连接到数据窗口中即可看到,

一般通过datastore:  
  1,取代游标的部分功能,比如生成treeview,listview,listbox等的数据时  
  2,用于打印时  
  3,实际应用中主要用于大范围的数据传送。多层开发中必须用DS进行数据传输。

大家都知道在网络版的程序中,数据放在服务器上,客户机通过网络访问服务器
上的数据。使用游标,客户机会频频的发出请求来获得数据,这样不但占用网络
资源,而且在网络繁忙时容易出错。一般情况下,一个数据传输量不大的局域网
不会遇到这种问题(中小软件公司的开发环境),我在实际工作中发现很多网络
环境(城域网、大企业的企业网、布线差的网络)经常会出现网络阻塞的现象。
经过多次实验,发现用PB的DataStore(即不可视的数据窗口)比用游标要好一些
DataStore的工作机制和DataWindow一样,将数据放入客户机的缓冲区,在Commit
之前,对数据的操作是在几个PB的Buffer中,这样,我们可以先用DataStore将
数据一次性的Retrieve过来,然后在程序中用For、Do等循环处理。避免了频频
的和服务器交换数据,速度也提高了。当然,这不是绝对的,如果客户机的配置
很低,网络环境也不错,使用游标可以减轻客户机的资源占用。总之,从实际经
验来看,对于游标要慎用。

游标主要是为了能够逐行处理数据。不过使用游标容易死机。。。

在用游标还可能长时间独占表!用datastore,是在本地的内存中完成的, 用完可以释放的。!·
]就这点来是,在开发c/s的时候,用游标的不好处。

用datastore也可以,创建一个datawindow对象,假如叫d_test
datastore lds_test
lds_test = create datastore
lds_test.dataobject = "d_test"
lds_test.settransobject(sqlca)
lds_test.retrieve()
然后就可以逐行处理数据了。

在PB中如何建立临时表,并且用该数据表动态生成数据窗口
动态创建数据窗口

datastore ds_1

ds_1 =create datastore

vssql='select f_id from' +#table

vssql = sqlca.syntaxFromSQL(vssql,"",vserr) //该语法为根据sql的SELECT语句生成数据窗口对象的源代码! ds_1 = create(vssql,vserr)  //动态创建数据窗口对象,vserr =错误信息

Ds_1.SetTransObject(SqlCa)