Article View: cn.bbs.comp.program
Article #1329��DataWindowʵ�ֶԶ�����
From: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
Date: Sat, 18 Apr 1998 00:00
151 lines
9347 bytes
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�����:
--
[m[1;37m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn][m
Technical Details
Message-ID:
<3O9QVk$tn0@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow 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