Sometimes, I want to find all the table field and modify or remove data with the EDT from AOT - > dictionary.
static
void
Jimmy_FindEDTFromDictionary(Args _args)
{
int i,counter;
int numberOfFields;
Dictionary Dictionary = new Dictionary();
DictField DictField;
DictTable DictTable;
// Common Common;
fieldId fieldId01,fieldId02,fieldId03;
name name01,name02,name03;
str Remark;
int time;
test insertTest,upTest;
name tableName,fieldName,tablePnames;
int tableId,fieldId,tempStartTime;
Dialog dlg = new Dialog( " Please enter the EDT " );
dialogField dlgEDT = dlg.addField(typeId(ExtendedDataTypeName));
dialogField dlgUpData = dlg.addField(typeId(Noyes), " Clear EDT data " );
DialogField dlgQVS = dlg.addField(typeId(Noyes), " QVS " );
DialogField dlgNEW = dlg.addField(typeId(Noyes), " NEW " );
DialogField dlgQCN = dlg.addField(typeId(Noyes), " QCN " );
DialogField dlgQHK = dlg.addField(typeId(Noyes), " QHK " );
DialogField dlgQUS = dlg.addField(typeId(Noyes), " QUS " );
extendedTypeId edt;
Noyes updateData;
Noyes qcn,qhk,qus,qvs,news;
void ClearData()
{
Common Common;
;
Common = DictTable.makeRecord();
if (edt == extendedTypeNum(Dimension))
{
ttsbegin;
Common.selectForUpdate( true );
while select Common
where Common.(fieldId2Ext(DictField.id(), 1 )) != "" ||
Common.(fieldId2Ext(DictField.id(), 3 )) != ""
{
fieldId01 = fieldId2Ext(DictField.id(), 1 );
// fieldId02 = fieldId2Ext(DictField.id(),2);
fieldId03 = fieldId2Ext(DictField.id(), 3 );
name01 = Common.(fieldId01);
// name02 = Common.(fieldId02);
name03 = Common.(fieldId03);
if (name01 || name03)
{
/*
info(strfmt("%1 , %2 , %3 ,%4, %5",Common.(fieldnum(CustInvoiceTrans,SalesId)),
Common.(fieldnum(CustInvoiceTrans,ItemId)),name01,name02,name03));
*/
Common.(fieldId01) = "" ;
// Common.(fieldId02) = "";Cost center 不做变更
Common.(fieldId03) = "" ;
Common.doupdate();
}
}
ttscommit;
}
else
{
ttsbegin;
Common.selectForUpdate( true );
while select Common
where Common.(DictField.id()) != ""
{
name01 = Common.(DictField.id());
if (name01)
{
Common.(DictField.id()) = "" ;
Common.doupdate();
}
}
ttscommit;
}
}
;
dlg.doInit();
dlgEDT.value( " Dimension " );
dlgQCN.value( 1 );
dlgQHK.value( 1 );
dlgQUS.value( 1 );
dlgQVS.value( 1 );
dlgNEW.value( 1 );
if ( ! dlg.run())
return ;
edt = global ::extendedTypeName2Id(dlgEDT.value());
qcn = dlgQCN.value();
qhk = dlgQHK.value();
qus = dlgQUS.value();
qvs = dlgQVS.value();
news = dlgNEW.value();
updateData = dlgUpData.value();
// if(!Box::yesNo("Are you sure update?",DialogButton::No,"Clear EDT from Dictionary!"))
IF( ! dlgEDT.value())
return ;
delete_from insertTest;
time = timeNow();
tableId = Dictionary.tableNext( 0 );
setprefix(strfmt( " %1 - %2 " ,curext(),CuruserId()));
while (tableId)
{
DictTable = new DictTable(tableId);
if (DictTable.id() == 50356 )
tableId = tableId;
if ( ! DictTable.isMap() && ! DictTable.isView() && ! DictTable.isTmp() && DictTable.rights() >= AccessType::Edit)
{
numberOfFields = DictTable.fieldCnt();
for (i = 1 ; i <= numberOfFields; i ++ )
{
DictField = new DictField(DictTable.id(),DictTable.fieldCnt2Id(i));
if (DictField && DictField.typeId() == edt)
{
counter ++ ;
tableName = DictTable.name();
fieldName = DictField.name();
fieldId = DictField.id();
tablePnames = tableId2PName(DictTable.id());
tempStartTime = timeNow();
insertTest.Id = counter;
insertTest.Price01 = tableId;
insertTest.Price02 = fieldId;
insertTest.ItemId = tableName;
insertTest.Name = tablePnames;
insertTest.VendName = fieldName;
insertTest.BomId = fieldid2pname(tableId,fieldId);
insertTest.doInsert();
info(strfmt( " %5.[%6] Table: %1,%2 ;field: %3,%4 " ,tableId,tableName,fieldId,fieldName,counter,tablePnames));
if (updateData)
{
if (QCN)
{
changecompany( " QCN " )
{
ClearData();
}
}
if (QHK)
{
changecompany( " QHK " )
{
ClearData();
}
}
if (QUS)
{
changecompany( " QUS " )
{
ClearData();
}
}
if (QVS)
{
changecompany( " QVS " )
{
ClearData();
}
}
if (NEWS)
{
changecompany( " NEW " )
{
ClearData();
}
}
}
if ( ! Remark)
Remark = tableName;
else
Remark += " , " + tableName;
ttsbegin;
upTest = test::find(insertTest.ItemId,insertTest.VendName, true );
if (UpTest)
{
upTest.CustName = strlrtrim( global ::time2StrHMS(timeNow() - tempStartTime));
upTest.doUpdate();
}
ttscommit;
}
}
}
tableId = Dictionary.tableNext(tableId);
}
info(Remark);
info(strfmt( " total took time %1 " , global ::time2StrHMS(timenow() - time)));
/* *
select ID,PRICE01,ItemId,NAME,PRICE02, VENDNAME,BomId,CUSTNAME from TEST a
where a.DATAAREAID = 'qvs' and a.CUSTNAME != '0:00:00'
order by CUSTNAME desc
go
*/
}
{
int i,counter;
int numberOfFields;
Dictionary Dictionary = new Dictionary();
DictField DictField;
DictTable DictTable;
// Common Common;
fieldId fieldId01,fieldId02,fieldId03;
name name01,name02,name03;
str Remark;
int time;
test insertTest,upTest;
name tableName,fieldName,tablePnames;
int tableId,fieldId,tempStartTime;
Dialog dlg = new Dialog( " Please enter the EDT " );
dialogField dlgEDT = dlg.addField(typeId(ExtendedDataTypeName));
dialogField dlgUpData = dlg.addField(typeId(Noyes), " Clear EDT data " );
DialogField dlgQVS = dlg.addField(typeId(Noyes), " QVS " );
DialogField dlgNEW = dlg.addField(typeId(Noyes), " NEW " );
DialogField dlgQCN = dlg.addField(typeId(Noyes), " QCN " );
DialogField dlgQHK = dlg.addField(typeId(Noyes), " QHK " );
DialogField dlgQUS = dlg.addField(typeId(Noyes), " QUS " );
extendedTypeId edt;
Noyes updateData;
Noyes qcn,qhk,qus,qvs,news;
void ClearData()
{
Common Common;
;
Common = DictTable.makeRecord();
if (edt == extendedTypeNum(Dimension))
{
ttsbegin;
Common.selectForUpdate( true );
while select Common
where Common.(fieldId2Ext(DictField.id(), 1 )) != "" ||
Common.(fieldId2Ext(DictField.id(), 3 )) != ""
{
fieldId01 = fieldId2Ext(DictField.id(), 1 );
// fieldId02 = fieldId2Ext(DictField.id(),2);
fieldId03 = fieldId2Ext(DictField.id(), 3 );
name01 = Common.(fieldId01);
// name02 = Common.(fieldId02);
name03 = Common.(fieldId03);
if (name01 || name03)
{
/*
info(strfmt("%1 , %2 , %3 ,%4, %5",Common.(fieldnum(CustInvoiceTrans,SalesId)),
Common.(fieldnum(CustInvoiceTrans,ItemId)),name01,name02,name03));
*/
Common.(fieldId01) = "" ;
// Common.(fieldId02) = "";Cost center 不做变更
Common.(fieldId03) = "" ;
Common.doupdate();
}
}
ttscommit;
}
else
{
ttsbegin;
Common.selectForUpdate( true );
while select Common
where Common.(DictField.id()) != ""
{
name01 = Common.(DictField.id());
if (name01)
{
Common.(DictField.id()) = "" ;
Common.doupdate();
}
}
ttscommit;
}
}
;
dlg.doInit();
dlgEDT.value( " Dimension " );
dlgQCN.value( 1 );
dlgQHK.value( 1 );
dlgQUS.value( 1 );
dlgQVS.value( 1 );
dlgNEW.value( 1 );
if ( ! dlg.run())
return ;
edt = global ::extendedTypeName2Id(dlgEDT.value());
qcn = dlgQCN.value();
qhk = dlgQHK.value();
qus = dlgQUS.value();
qvs = dlgQVS.value();
news = dlgNEW.value();
updateData = dlgUpData.value();
// if(!Box::yesNo("Are you sure update?",DialogButton::No,"Clear EDT from Dictionary!"))
IF( ! dlgEDT.value())
return ;
delete_from insertTest;
time = timeNow();
tableId = Dictionary.tableNext( 0 );
setprefix(strfmt( " %1 - %2 " ,curext(),CuruserId()));
while (tableId)
{
DictTable = new DictTable(tableId);
if (DictTable.id() == 50356 )
tableId = tableId;
if ( ! DictTable.isMap() && ! DictTable.isView() && ! DictTable.isTmp() && DictTable.rights() >= AccessType::Edit)
{
numberOfFields = DictTable.fieldCnt();
for (i = 1 ; i <= numberOfFields; i ++ )
{
DictField = new DictField(DictTable.id(),DictTable.fieldCnt2Id(i));
if (DictField && DictField.typeId() == edt)
{
counter ++ ;
tableName = DictTable.name();
fieldName = DictField.name();
fieldId = DictField.id();
tablePnames = tableId2PName(DictTable.id());
tempStartTime = timeNow();
insertTest.Id = counter;
insertTest.Price01 = tableId;
insertTest.Price02 = fieldId;
insertTest.ItemId = tableName;
insertTest.Name = tablePnames;
insertTest.VendName = fieldName;
insertTest.BomId = fieldid2pname(tableId,fieldId);
insertTest.doInsert();
info(strfmt( " %5.[%6] Table: %1,%2 ;field: %3,%4 " ,tableId,tableName,fieldId,fieldName,counter,tablePnames));
if (updateData)
{
if (QCN)
{
changecompany( " QCN " )
{
ClearData();
}
}
if (QHK)
{
changecompany( " QHK " )
{
ClearData();
}
}
if (QUS)
{
changecompany( " QUS " )
{
ClearData();
}
}
if (QVS)
{
changecompany( " QVS " )
{
ClearData();
}
}
if (NEWS)
{
changecompany( " NEW " )
{
ClearData();
}
}
}
if ( ! Remark)
Remark = tableName;
else
Remark += " , " + tableName;
ttsbegin;
upTest = test::find(insertTest.ItemId,insertTest.VendName, true );
if (UpTest)
{
upTest.CustName = strlrtrim( global ::time2StrHMS(timeNow() - tempStartTime));
upTest.doUpdate();
}
ttscommit;
}
}
}
tableId = Dictionary.tableNext(tableId);
}
info(Remark);
info(strfmt( " total took time %1 " , global ::time2StrHMS(timenow() - time)));
/* *
select ID,PRICE01,ItemId,NAME,PRICE02, VENDNAME,BomId,CUSTNAME from TEST a
where a.DATAAREAID = 'qvs' and a.CUSTNAME != '0:00:00'
order by CUSTNAME desc
go
*/
}