🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

��DataWindowʵ�ֶԶ����޸�

#1329
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
151 lines
9347 bytes
   �ڿ�����,������ʱ��������һ��DataWindow��������ݿ��ж��
������ݵ�����,��ʱDataWindow�õ���SQL Select�����һ������
�����ӵ���ͼ�������Ƕ�����һ��DataWindo w�е���ݽ����޸IJ�
�ύ��ݿ�ʱ,���ǽ��ᷢ�����Dz����ܼ򵥵�ʹ��һ��dw.update()
 ��ʵ��ͬʱ����ݿ��ж��ű���޸ġ�
    ��ʵ��,ϵͳ��DataWindow���ύ��ݿⲢ���UPDATE���ʱ��
��ݵ���Ȼ��ͼһ������ڡ�����ǰ���½�����������ܹ��������
������һЩ��ͬ��ѡ��ʵ����ݿ�IJ�������,���������ٽ�һ����
�������е�ѡ������UPDATE��������Ӱ�졣
    �����ǵ���UPDATE����ʱ,������������ĸ��򽫱��漰:
    ��Where Clause for Update/Delete where�Ӿ��������ݡ���
��ѡ����Ҫ���������в������Ƶ�,���ﲻ��׸����
    ��Updateable Columns���޸ĵ��С�����һ�����ǽ������鷳��
�ط���PowerBuilderֻ��ͬʱ��һ��Ҫ�޸ĵı���й���,��������
����һ����ָ�����б�������Ҫ�޸ĵ��С�����������ֻ��ָ��ijһ
�ű���Ҫ�޸ĵ���,�Ժ��ڳ�������Modify�������ָ������ÿһ��
����Ҫ�޸ĵ��С�
    ��Table to Update��Ҫ�޸ĵı?PowerBuilderֻ֧��һ�ű�
���޸�,��������Ҳֻ��������ָֻ�����е�ijһ�ű�,����ı�Ҳ��
Ҫ����Modify����޸ġ�
    ��Unique Key ColumnsΨһ����С���Ҳ������Ҫע��ĵط�,
��ΪPowerBuilder��ɵ�UPDATE���ֻ����Ҫ�޸ĵı�����ʹ��DATA
BASE.OWNER.TABLE�����ȫ��,������ij��ʱֻ�Ǽ�ָ������,��
��DATABASE.OWNER.TABLE.COLUMN�����ȫ�ơ�����,�������������
����Ψһ�б�ʶ����������"Table to Update"�ж���ı����,��һ
��SQL��佫�����﷨����
    PowerBuilder��DataWindow����UPDATE����DELETE�����
��:
    ��UPDATE database.owner.table
    SET column=somevalue,
    WHERE UniqueKeyColumn=somevalue;
    ��DELETE FROM database.owner.table
    WHERE UniqueKeyColumn=somevalue;
    ��һ��SQL UPDATE��DELETE�����,�������õ������ʹ����
��ȫ��,��˶������ȷ����ȫ��update table������,��UPDATE���
�������޸����Ծ���ΪTRUE,�����û����й��޸ĵ��ж����ӵ�SET��
���С�PowerBuilder����û���"Where Clause for Update/Delete"
 ��ѡ���γ�WHERE�Ӿ�,����ϵͳ�Զ��ؽ�����������е��ж��ӵ�S
ET�Ӿ��WHERE�Ӿ���, ��PowerBuilder���Ǹ���û�ָ����update 
table��ȷ����,���������Ȼ���޷��õ�һ��׼ȷ��SQL���ġ���
����������һ��ʵ��(���������PowerBuilder DEOM��ݿ��еõ�,
ע��:�������ϣ��ijһ�в����޸�,���ǿ�����DataWindow�����н�
TABorder����Ϊ0): ͼһ
    CUSTOMER.Customer-ID=101
    CUSTOMER.FirstName=Michaels
    CUSTOMER.LastName=Devlin
    CUSTOMER.Address=3114 Pioneer Avenue
    SALES-ORDER.ID=2001
    SALES-ORDER.order-date=09/14/94
    ���ǽ����Ϊ:
    CUSTOMER.Address=1905 Maple Avenue
    SALES-ORDER.order-date=12/11/94
    �������ֻ����dw.update()������γ�UPDATE���,PowerBuild
er���Զ�����������һ�����:
��1
    ��������SQL������ύ��ݿ�ʱ��������"Invalid column nam
e ��id' "�Ĵ���,������,"id"��һ���ֶβ�����custumer��һ�ű�
�С�����SALES-ORDER���ű�����ݲ�û�н����޸ġ�
    Ϊ����ʵ�ֶԶ����ݵ��޸�,���ǿ��Ա�д����һ������f-MUp
date()��
    integer f-MUpdate(a-dw,as-update-table)
    a-dw-DataWindow���;as-update-table-��Ҫ�޸ĵı����ȫ��
��
    Long ll-ipos,ll-maxcol,i
    String ls-colnam,ls-mod,ls-table-name,lserr,ls-updatekey
ll,ls-qualifier="
    //�Ӵ��ݵIJ����з�������������
    ll-ipos=Pos(as-update-table,"��",l)
    If(ll-ipos>0)Then
    ls-qualifier =Left(as-update-table,ll-ipos)
    as-update-table=Mid(as-update-table,& ll-ipos+1)
    ll-ipos=Pos(as-update-table,"��",l)
    If(ll-ipos>0)Then
    ls-qualifier=ls-qualifier+&
    Left(as-update-table,ll-ipos)
    as-update-table=Mid(as-update-table,& ll-ipos+1)
    end If
    End If
    // �õ����DataWindow���е�����
    lserr=a-dw.object.DataWindow.Column.Count
    ll-maxcol=Integer(Iserr)
    If(ll-maxcol<1)Then
    Return 1
    End IF
    // ȷ��DataWindow�е�ÿһ���Ƿ�����Ҫ�޸ĵı��е���,����
����update ������ΪYes,����ΪNo.
    FOR i=1 To ll-maxcol
    ls-mod="#"+String(i)+".Name"
    ls-colnam=a-dw.Descibe(ls-mod)
    ls-table-name=a-dw.Descibe(ls-colnam+&".dbName")
    ls-table-name=Left(ls-table-name,&)
    (Pos(ls-table-name,"��",l)-l))
    If(Upper(as-update-table)=Upper(ls-table-name))Then
    ls-mod=ls-colnam+".Update=Yes"
    Else
    // �����в��ڿ��޸ĵı���,
    // ����Ϊ���������ΪTRUE
    // �����������ls-updatekey[ ]��
    // �����������������ΪFALSE��
    //����PB�������е�ȫ��,���Dz��ܡ�
    // �������޸ı�ļ����ơ�
    // �������ǽ��䱣��������֮��,�Ա���ָ�
    If(Upper(a-dw.Descibe(ls-colnam+".Key"))=" YES")Then
    ls-updatekey[UpperBound(ls-updatekey[ ])+1]=ls-colnam
    ls-mod=ls-colnam+".Key=No"
    If(a-dw.Modify(ls-mod)<>"")Then
    Return-2
    End If
    End If
    ls-mod=ls-colnam+".Update=No"
    End IF
    //  ȷ���޸��Ƿ�ɹ�
    If(a-dw.Modify(ls-mod)<>"")Then
    Return-2
    End IF
    NEXT
    // ���޸ı�������Ϊȫ��
    a-dw.object.Data Window.Table.UpdateTable=ls-qualifier+a
s-update-table
    // �޸�DataWindow
    If(a-dw.Update(TRUE,FALSE)<>1)Then
    Return-5
    Else
    // ��DataWindow�ָ�Ϊ��ԭ����״̬
    ll-maxcol=UpperBound(ls-updatekey)
    FOR i=l to ll-maxcol
    ls-mod=ls-updatekey[i]+".key=Yes"
    If(a-dw.Modify(ls-mod)<>"")Then
    Return-6
    End If
    Return 0
    End If
     ������һ����ʱӦ�������¹���:
    ��֤��ݵIJ���������,Ӧ�����޸ĸ�����޸��ӱ�;
    ����DataWindow������Ϊÿ�ű?��Ψһ����;
    ����ͼһ������,����DataWindow��Ϊ�����޸�;
    ��ָ�����漰������һ�ű�Ϊ�޸ı�,���е���һ��Ϊ���޸���
���Ա�֤DataWindow���޸�Ȩ,�������ǵ��õĺ���Ϳ��Ը�����һ
���á�
    ��Ҫ����������ѡΪkey and modified columns,���������
������һ�����¹�����
    �񽫱����ȫ��DATABASE.OWNER.TABLE���ݸ��������,�ر���
�����DataWindows�ǶԶ����ݿ���в���ʱ��
    ��������,���ǿ�����������������
    f-MUpdate(dw-l," dbo.sales-order")
    f-MUpdate(dw-l," dbo.customer")
    �������ǵõ���UPDATE�����:

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3O9QVk$tn0@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,806687b6ff089195,start
X-Google-Attributes: gidfc86e,public
From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ)
Subject: ��DataWindowʵ�ֶԶ����޸�
Date: 1998/04/18
Message-ID: <3O9QVk$tn0@bbs.nju.edu.cn>
X-Deja-AN: 345302918
X-Filename: Programming/M.892870654.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program