Article View: cn.bbs.comp.program
Article #1064PowerBuilderӦ�ÿ���ϵ�н���(32)
From: ���ܵ�Сʨ
Date: Thu, 07 May 1998 00:00
Date: Thu, 07 May 1998 00:00
172 lines
11509 bytes
11509 bytes
Ϊ����ʽ��ݴ��ڽ���������
��������û���ʹ��PowerBuilderӦ�ó���ʱ��Թ�����ٶ�̫��
һ������,һ����ҵ���Ŀͻ�/������Ӧ�ó���ִ���ٶȵ�ƿ��������
�ڴ���ִ�е�Ч��,������Ӧ�����̨��ݿ��ѯ���ʱ�ȴ��̨��
Ӧ��ʱ�䡣�Ľ�Ӧ������ٶȵĹؼ����ڼ���Ӧ�����̨��ݿ��ѯ
�������,����������������,���м�������ʽ��ݴ��ڵIJ�ѯ����
��һ����Ч�ķ�����
һ�������,Ϊ���û����뷽��ͱ���ϼ�,����ݴ��ڵ�ijЩ��
����ʹ������ʽ��ݴ����dz���Ա�������õķ���������һ��Ӧ��,
ijһ��ʱ�������һ�㶼����ͬ����������,����ͬʱ�IJ�
ͬ���ں���ݴ���ȴ�ܿ���ͬʱ������ͬ������ʽ��ݴ��ڡ�����ʾ
��Щ����ǰ,��ϵͳִ������ݴ��ڵ�Retrieve()����ʱ,����Ҫ����
����ݿ��в�ѯ��Щ����ʽ��ݴ��ڵ���ݡ���������ܹ�������Щ
��ѯ,���������������Լ���̨��ݿ��������������������
��ѯ�㷨��ִ�в�ѯ��ʱ��,����ʹӦ�õ����ܵõ��ϴ���ߡ�����
���Dz��õķ������ڿͻ��˽���һ��������Ļ�����,������Sha
reData����ʹ����������ͬ����ʽ��ݴ��ڵ��������������?
���ǽ������ݻ���������һ�������ӵĴ�����,���������
��Ϊÿһ����ͬ�Ľ����һ����ͬ���û������������Ǵ���һ
�����IJ����ӵ��û�����,�ڿ�ѡ�Ķ���������ѡ��DataStore,��
�Dz�����ҪΪ����û������д�κδ���,ֻҪ���䱣��Ϊu_dsa����
��
���Ǵ���һ������w_resultset_server��Ϊ��������,����
�������ӵĴ�������������һЩʵ�����:
//�������С
PROTECTED integer ii_cache_size
//������
PROTECTED u_dsa ids_cache[]
//�������Լ��������������
PROTECTED transaction i_trans
//���½���ʱ��(��Ϊ30��)
PROTECTED long il_refresh_interval = 1800
//���µ���ʼʱ��
PROTECTED time itm__last_refresh
ʹ��dddw�Ĵ��ڽ�ͨ��fw_share_dddw()����������w_resultset
_server����,����������һ����ݴ��ں�һ��������Ϊ����
//public function integer fw_share_dddw
//����: DataWindow adw_parent
//string as_column_name ������ʽΪdddw����
integer li_cache_idx
DataWindowchild dwc
string ls_dataobject_name
//dddw��ʹ��dataobject�����
ls_dataobject_name = adw_parent.Describe( as_column_name
+ ".dddw.name" )
IF ls_dataobject_name = "" THEN RETURN 0
// ��dataobject�Ƿ���ڻ�������
li_cache_idx = fw_find_dataobject (ls_dataobject_name)
IF li_cache_idx < 1 THEN RETURN 0
// ͬ����ݴ��ڹ������
adw_parent.GetChild ( as_column_name, dwc )
RETURN ids_cache[li_cache_idx].ShareData (dwc)
�����������,Ϊȷ������ʽ��ݴ�����ʹ�õ���ݴ��ڵ����,
����ʹ����Describe( )��������ø��е�dddw.name���ԡ�������
��û���ҵ�,����еı�����ʽ��������ʽ��ݴ���,�������ķ���
ֵΪ"";����������fw_find_dataobject()����,��ȷ�������ݽ��
���Ƿ��ڻ�������,�粻����,���´���һ��;���ʹ��ShareDate()��
������н��ͬ����ʽ��ݴ��ڹ�����ݡ�
��������е��õ�fw_find_dataobject()��������:�����һ��a
s_dataobject����,��ʹ��DO...WHILEѭ���ڻ������в��Ҹö����
���,���ҵ���lb_found��ΪTrue,������ΪFalse��
//protected function integer fw_find_dataobject
//����: string as_dataobject
integer li_cache_idx = 1
boolean lb_found = FALSE
u_dsa lds_new_entry
//��λdataobject���ڵĻ�����
DO WHILE (NOT lb_found) and (li_cache_idx <= ii_cache_si
ze)
IF ids_cache[li_cache_idx].dataobject = as_dataobject
THEN
lb_found = TRUE
ELSE
li_cache_idx ++
END IF
LOOP
// ����dataobject�������ڻ�������,��һ�������
IF NOT lb_found THEN
IF OpenUserObject (lds_new_entry) < 1 THEN
RETURN 0
END IF
lds_new_entry.dataobject = as_dataobject
IF lds_new_entry.SetTransObject (i_trans) < 1 THEN
RETURN 0
END IF
IF lds_new_entry.Retrieve () < 0 THEN
RETURN 0
END IF
ii_cache_size ++
ids_cache[ii_cache_size] = lds_new_entry
li_cache_idx = ii_cache_size
END IF
RETURN li_cache_idx
������ݶ������ڻ�������,���ǽ�ʹ��OpenUserObject(
)�����´���һ���û�����,�������DataStore��DataObject���Ը�
ֵΪas_dataobject,Ȼ�����SetTransObect ()�����Retrieve()��
���ѯ���
������������ڵ�Open�¼��м������д���:
i_trans = sqlca
itm_last_refresh = Now ()
//������ʼʱ��
Timer ( 60 )
�ڴ��ں���fw_find_dataobject()�е���SetTransObject()ʱʹ
�õ����������i_tra ns,��������Ŀ����Ϊ��ʹ�����Ϊͨ�á���
����Open�¼��н����ʵ�������ֵΪSQLA,��Ҳ���Ը����Ҫ����
��ͬ�ĸ�ֵ������ʹ����һ��ʵ�����itm_last_refresh��Ϊ��ʱ��
, �����趨ÿһ�����ж�һ��,��ʹ���ڸ�ݲ�ͬ����Ҫ���»�����
�е���ݡ�
�����һ�����ں���fw_refresh_all���Ը��»��������:
//public subroutine fw_refresh_all ()
integer li_cache_idx
// �����������
FOR li_cache_idx = 1 TO ii_cache_size
ids_cache[li_cache_idx].Retrieve ()
NEXT
//�������ø��»������ʱ��
i_tm_last_refresh = Now ()
������w_resultset_server��Open�¼��ж�һ����ʱ�������˳�
ʼ��,ͬʱ����ʼ����һ����ʱ����itm_last_refresh,����Ĺ�����
����Timer�¼��б�д����趨��ʱ��������fw_refresh_all()�Ĵ�
�롣
time ltm_current_time
integer li_cache_idx
//��ǰʱ��
current_time = Now ()
//���ǹ���ҹ���������
IF ltm_current_time < itm_last_refresh THEN
fw_refresh_all ()
//����ѹ��ʱ����
ELSEIF RelativeTime ( itm_last_refresh, ii_refresh_inter
val ) <= ltm_curren t_time THEN
fw_refresh_all ()
END IF
һ����һ������Ӧ����,�������������Ҫ�м�ʮ�������
���߿��ܲ���ϣ��ϵͳͬʱ�������е����,�ʿ�����Timer�¼���
�Ĵ���,ʹϵͳ���һ�����㷨,�������»������е����,��ʹ��
���о����ӳ١�ֵ��ָ������,��һ�����ݴ����е�dddw,�����ڴ�
��ʱϵͳ���Զ��Ը���ݴ����е�����dddw����Retrieve()����,��
���й�������û�г�����ȷָ��ij��dddwִ��Retrieve()����,ϵ
ͳ�Dz����Զ���������ݵġ���˲��ñ����Ƽ��ķ��������Ա�����
��ʽ��ݴ����е���ݽӽ��̨�������е�������ݡ������Ӧ����
����ʹ����ʽ��ݴ����е����Ϊ��̨���������,Ҳ���Ե���wf_re
fresh_resultset(ǿ�ƻ�����������,ʹ�õIJ���������:��ݴ���
��ƺ�����,��������:
//public function boolean fw_refresh_resultset()
//����: DataWindow adw_parent
//string as_column_name ��ݴ�����Ϊdddw������
integer li_cache_idx
string ls_dataobject_name
//dddw��ʹ��dataobject�����
ls_dataobject_name = adw_parent.Describe( as_column_name
+ ".dddw.name" )
IF ls_dataobject_name = ""THEN RETURN False
//��dataobject�Ƿ���ڻ�������
li_cache_idx = fw_find_dataobject (ls_dataobject_name)
IF li_cache_idx < 1 THEN RETURN False
//���»������ڵ����
ids_cache[li_cache_idx].Retrieve()
RETURN True
����δ�����,��������ʹ��fw_find_dataobject�����ҵ�Ҫ��
����ݵ�dddw��ʹ�õĻ�����,Ȼ����¸û��������ݼ��ɡ�
--
________ _____ _____ ______________ _____
___ __ \___(_)________ ___(_) __ ___/___ /_ ___(_)
__ /_/ /__ / ___ __ \__ / _____ \ __ __ \__ /
_ ____/ _ / __ /_/ /_ / ____/ / _ / / /_ /
/_/ /_/ _ .___/ /_/ /____/ /_/ /_/ /_/
/_/
[m[1;36m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn][m
Technical Details
Message-ID:
<3OOYEi$tr5@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: fc86e,3016d689bcdee571,start X-Google-Attributes: gidfc86e,public From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ) Subject: PowerBuilderӦ�ÿ���ϵ�н���(32) Date: 1998/05/07 Message-ID: <3OOYEi$tr5@bbs.nju.edu.cn> X-Deja-AN: 351554906 X-Filename: Programming/M.894547148.A Organization: nju_bbs Newsgroups: cn.bbs.comp.program