🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: cn.bbs.comp.program
1 messages
1 total messages Started by ���ܵ�Сʨ Thu, 07 May 1998 00:00
PowerBuilderӦ�ÿ���ϵ�н���(32)
#1064
Author: ���ܵ�Сʨ
Date: Thu, 07 May 1998 00:00
172 lines
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��ʹ�õĻ�����,Ȼ����¸û��������ݼ��ɡ�

--
 ________ _____          _____        ______________  _____ 
 ___  __ \___(_)________ ___(_)       __  ___/___  /_ ___(_)
 __  /_/ /__  / ___  __ \__  /        _____ \ __  __ \__  / 
 _  ____/ _  /  __  /_/ /_  /         ____/ / _  / / /_  /  
 /_/      /_/   _  .___/ /_/          /____/  /_/ /_/ /_/   
                /_/                                         

�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
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