// ColName:数据窗口列名 // Name1[],Name2[]:两数据库表选中项列名 // n1,n2:两数据库表选中项数量 // i:循环计数器 // Columns:数据窗口总列数 String ColName,Name1[],Name2[] Integer Columns,i,n1=0,n2=0 //下面程序:找出dw—obj的两表列名赋给Name1[],Name2[] Columns=Integer(dw—obj.Describe(″DataWindow.Column.Count″)) FOR i=1 TO columns ColName=Upper(dw—obj.Describe(″#″+String(i)+″.Name″)) IF Left(ColName,Len(Table1))=Table1 and ColName〈〉Key1 THEN n1=n1+1 Name1[n1]=ColName END IF IF Left(ColName,Len(Table2))=Table2 and ColName〈〉Key2 THEN n2=n2+1 Name2[n2]=ColName END IF NEXT // 下面程序:存储dw—obj,确定返回值(True:成功,False:失败) IF dw_obj.Update(True,False)=1 THEN FOR i=1 TO n1 dw—obj.Modify(Name1[i]+″.Update=No″) NEXT dw—obj.Modify(Key1+″.Key=No″) dw—obj.Modify(″DataWindow.Table.Update Table=′ ″+Table2+″ ′ ″) FOR i=1 TO n2 dw—obj.Modify(Name2[i]+″.Update=Yes″) NEXT dw—obj.Modify(Key2+″.Key=Yes″) IF dw—obj.Update()=1 THEN Commit; FOR i=1 TO n1 dw—obj.Modify(Name1[i]+″.Update=Yes″) NEXT dw—obj.Modify(Key1+″.Key=Yes″) dw—obj.Modify(″DataWindow.Table.UpdateTable=′ ″+Table1+″ ′ ″) FOR i=1 TO n2 dw—obj.Modify(Name2[i]+″.Update=No″) NEXT dw—obj.Modify(Key2+″.Key=No″) return True ELSE Rollback; return False END IF ELSE Rollback; return False END IF |