🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1064

PowerBuilderӦ�ÿ���ϵ�н���(32)

#1064
From: ���ܵ�Сʨ
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]
Technical Details
Message-ID: <3OOYEi$tr5@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show 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