Thread View: cn.bbs.comp.program
1 messages
1 total messages
Started by ���ܵ�Сʨ
Thu, 07 May 1998 00:00
PowerBuilderӦ�ÿ���ϵ�н���(32)
Author: ���ܵ�Сʨ
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
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads