Thread View: cn.bbs.comp.program
1 messages
1 total messages
Started by ���ܵ�Сʨ
Sat, 18 Apr 1998 00:00
��DataWindowʵ�ֶԶ�����
Author: ���ܵ�Сʨ
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
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