🚀 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 ���ܵ�Сʨ Sat, 18 Apr 1998 00:00
��DataWindowʵ�ֶԶ����޸�
#1329
Author: ���ܵ�Сʨ
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]
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