🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

DataWindow����ݻ�����

#1324
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
125 lines
9255 bytes
  DATAWINDOW���ĸ���վ��
    ��PowerBuilder��,DataWindow���û�ǰ�������洢���������
�Ķ�����ÿһ��Data Window��������4����ά����Ϊ��ݻ�����,
�����洢��ѯ������ݡ��û���DataWindow�ж���ݴ���ϵͳ�ڲ���
����ʵ���϶��ǽ�������⼸���������н��е��޸ĺ��ƶ�,�����
�û��ύ��ݿ�ʱ,ϵͳ������ĸ��������е���Ϣ�γ�SQL��IN-SER
T,UPDATE,DELETE����䡣���ĸ���������:

    Primary Buffer
    ����������Ǵ����䴰����DataWindow�ؼ�����ݵ�,����Dat
aWindow��Retrieve() �����InsertRow()������Խ�����������
�������С���ʹ���й�DataWindowɾ��͹��˺���ʱ,��Ӧ��¼����
��һ��������ɾ�����ִ��DataWindow��Update()����ʱ,PowerBu
 ilder���鿴��һ�������еļ�¼,���γ�SQL INSERT��UPDATE���
��
    Delete Buffer
    ���������������DeleteRow()�����Primary Buffer��ɾ
��ļ�¼,ִ��Update( )����ʱ,ϵͳ�����һ������ļ�¼�γ�DEL
ETE��䡣
    Filter Buffer
    ���������洢���Ǵ�Original Bufferʹ��Filter()�������
��Primary Buffer�к�ʣ��ļ�¼��

    Original Buffer
    ��һ������洢����DataWindow���ִ��retrieve()����ʱ�õ�
��ȫ����¼�����ύ��ݿ�ʱ,���Primary Buffer��ɵ�UPDATE��
��͸��Delete Buffer��ɵ�DELETE��䶼Ҫ������һ����������
����ЩSQL����е�Where�Ӿ䡣
    Original Buffer��PowerBuilder�ڲ�ά��,Power-Builder����
�����κκ����޷��ı����ֵ,����ͨ��PowerBuilder���ṩ��Get
Item��ϵ�еĺ�����Զ���DataWindow�������ݿ��в鵽��ԭʼֵ
��ͨ����Щ�������ǿ��Ա��ʵ����ν��"Undo"����,���ҵõ���ʹ
���ֹ���ʱ�γ��ύ��ݿ��WHERE�Ӿ䡣
    �����ǰʹ�õ�DataWindowû�������޸ĵ�Ȩ��,���ܶ�D
elete�������Origin al������в���,���ҵ�����Update()ʱҲ��
����ϵͳ����
    ��ݻ������״ֵ̬
    Primary Buffer��Delete Buffer�����м����м���״ֵ̬,���
״ֵ̬��һ��ö�����͡����ύʱ�ɸ��е�״ֵ̬�������Ƿ�Ҫ����
SQL���,����Primary Buffer�������IN-SE RT��UPDATE���,��Del
ete Buffer�������DELETE��䡣������GetItemStatus()�����Se 
tItemStatus()������Զ���һ״ֵ̬�����ݡ���һö��״̬������
����:
    ��NotModified!���������л��е�ֵΪ��ѯ���,û�з���ı�
��
    ��DataModified!���������л��е�ֵΪ��ѯ���,�����˸ı䡣
    ��New!���������л���Ϊһ���������,���û�з���ı�(���
Ϊ�ջ�ȱʡֵ)��
    ��NewModified!���������л���Ϊһ���������,��ݷ���ı�
���ı���ͨ���û���������������SetItem()����
    ����������������һʵ��:
    ����������һ�ű�,����������ֶ�,����ITEM������
    ITEM CHAR(5);
    NAME CHAR(20);
    QUANTITY INT��
    ��Script�����Dz�ѯ���ű�ļ�¼,�õ�������Щ��Ϣ�洢����P
rimary��OrigianalBu ffer��,���е��к��ǻ�������ϵġ�
��1
    �ڴ�����,���DZ�̹��˵�����Ϊ0����,���Ҽ���һ������:
    dw_1.SetFilter("quantity=0")
    dw_1.Filter()
    dw_1.InsertRow()
      ��ʱPrimary Buffer��״̬Ϊ:
��2
    ��Filter Buffer�еļ�¼Ϊ:
��3
    �û����²��������������,ɾ���˵�3�����,���޸��˵�2����
�ݡ������뿪���Dat aWindowʱ,Primary��Delete�������״̬��
��:
��4
    ��ʱִ��dw_1.update()����,ϵͳ���������������������SQL
��䡣��5
    ��Primary Buffer��,״̬ΪNotModified��New!���н������Զ�
������SQL��䡣״̬ΪDataModified���н�����UPDATE���,״̬Ϊ
NewModified�������INSERT���,��Dele te������������D
ELETE��䡣

    �ĸ��������ڱ���е�����
    ijЩDataWindow�ؼ��ĺ�����ָ��DataWindow������Ĺ��ܡ���
��ȱʡ,���ʾPrimar y�����������ǿ���ָ��������ĺ���:
    ��GetItemStatus()
    ��GetNextModified()
    ��GetUpdateStatus()
    ��SetItemStatus()
    ���⻹��GetItem��ϵ�еĺ���,���Բ�ѯDataWindow�е�ֵ����
������:
    ��GetItemDate()
    ��GetItemDataTime()
    ��GetItemDecimal()
    ��GetItemNumber()
    ��GetItemString()
    ��GetItemTime()
    GetItem��ϵ�к���Ҳ����ָ��������,���ҿ���������ָ����ѯ
���ǵ�ǰֵ����ԭʼֵ(�������ݿ��в鵽��ֵ)����:
    dw_1.GetItemString(1,"name",Primary!,TRUE)
    ʹ��DataWindow��Reset()�����Retrieve()�����Լ��ı�DataO
bject����ʱ,ϵͳ�������⼸��������
    ���û�����һ������ʱ,���������Ҫ�Զ����²������е�ijЩ
���в���һЩȱʡ�����ֵ����ʱ,�û���û�ж�������κ��޸ġ�
�������û�Ҫ�ر���һ����ʱ,�����CloseQu ery�¼�����Modified
Count()����鿴����Ƿ��޸�,�õ��Ľ����Ȼ������ı䡣�û���
�õ�һ����ʾ��Ϣ��:"�Ƿ���㱣���������޸�?��/��/ȡ��"������
����Ȼ�Dz��ʺϵ�:��������û�ѡ����DZ���ʱ,��ЩԭӦ�ǿռ�¼
����Ҳ��Ϊ�������ݵ���,ϵͳ�����γ�SQL ��INSERT����ύ���
��,����Ľ���Ϊ���ӡ�Ϊ�ı���һ״��,���ǿ�����SetItemStat 
us()������е�״̬��ΪNew!�����������в��벢��������ȱʡֵ
֮��,���е�״ֵ̬ΪNew!������ij���Ϳ��Եõ����ϵĹ��ܡ�
    ��Insert a new row in dw_1
    long 1_Row
    1_Row=dw_1,InsertRow(dw_1,GetRow())
    dw_1,SetItem(1_Row,"discount_pct",0,10)
    ��Set th row status to New! so that the CloseQuery check
 will only detectus er entries.
    dw_1.SetItemStatus(1_Row,0,Primary!,New!)
    ʹ��SetItemStatus����ʱ��һЩ״̬ת��������,�±�����ʾ��
�ǽ�ԭ����״̬�ı�Ϊ��һ״̬ʱ,������Ӱ�졣������ΪNo,��˵
������һ������������������Ч;�����и���˲�ͬ��״̬,���״
̬�Ƕ���ָ����״̬������6
    ��һ��״̬�ĸı䲻������ʱ,���Զ�ε���SetItemStatus�Ե�
�������״̬������, ��New!״̬���ܸij�NotModified!״̬,�ɽ�
��ij�DataModified!״̬,Ȼ���ٸij�NotMod ified!״̬��

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3O9QS9$tj7@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,247a55b34a67aef3,start
X-Google-Attributes: gidfc86e,public
From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ)
Subject: DataWindow����ݻ�����
Date: 1998/04/18
Message-ID: <3O9QS9$tj7@bbs.nju.edu.cn>
X-Deja-AN: 345302910
X-Filename: Programming/M.892870473.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program