Home Axapta Axapta Informacje sysTableValueUpdate

postheadericon sysTableValueUpdate

class sysTableValueUpdate extends RunBaseBatch
{
    TableId     tableId;
    Fieldid     fieldid;
    Fieldid     keyId;
    tableName   tabName;
    filename    filename;

    DialogField fd_Table;
    DialogField fd_Key;
    DialogField fd_Field;
    DialogField fd_File;


    #define.CurrentVersion(2)
    #LOCALMACRO.ParmList
        tableId,fieldid,keyId,filename
    #ENDMACRO

}

public void run()
{
#file
Query q;
QueryRun qr;
QueryBuildDataSource qbds;
Common record;
TextIo file = new TextIo(fileName, #IO_read);
container row;

if( !file )
throw error( strfmt( "Błąd otwarcia pliku %1", fileName) );

file.inFieldDelimiter(';');


q = new Query();
qbds = q.addDataSource( tableid );

while( file.status() == IO_Status::Ok )
{
row = file.read();
if( conlen( row ) == 2 )
{
SysQuery::findOrCreateRange(qbds, keyId).value( QueryValue(conpeek(row,1)) );
qr = new QueryRun( q );
while( qr.next( ) )
{
record = qr.get(tableid);
ttsbegin;
record.selectForUpdate(true);
record.(fieldId) = conpeek(row,2);
record.update();
ttscommit;
}
}
}
}

client static void main(Args args)
{
Common record;

sysTableValueUpdate sysTVU;
;

sysTVU = new sysTableValueUpdate();
if( sysTVU.prompt() )
{
sysTVU.run();
}
}

public Object dialog(DialogRunbase _p1, boolean _p2)
{
Dialog ret;
DialogGroup gr1;
;

ret = super(_p1, _p2);

fd_Table = ret.addField( typeId(Tablename) );
//fd_Table.value(tabName);

fd_Key = ret.addField( typeId(FieldName), 'Klucz tabeli' );
fd_Field = ret.addField( typeId(FieldName), 'Pole do aktualizacji' );

fd_File = ret.addField( typeId(FileNameopen) );
fd_File.value(fileName);

return ret;
}

public boolean getFromDialog()
{
SysDictTable dictTable;

;
tableId = tableName2Id( fd_Table.value() );
dictTable = new SysDictTable( tableid );
keyId = dictTable.fieldName2Id( fd_Key.value() );
fieldId = dictTable.fieldName2Id( fd_Field.value() );

fileName = fd_file.value();

return super();
}

public boolean validate(Object calledFrom)
{
SysDictTable dictTable;
boolean ret;

ret = super(calledFrom);
if(ret)
{
dictTable = new SysDictTable( tableName2Id( fd_Table.value() ));
if( dictTable == null )
ret = false;
keyId = dictTable.fieldName2Id( fd_Key.value() );
if(keyId == 0)
ret = false;
fieldId = dictTable.fieldName2Id( fd_Field.value() );
if(fieldId == 0)
ret = false;
}
return ret;
}

boolean unpack(container packedClass)
{
Integer version = conpeek(packedClass,1);
;

switch (version)
{
case #CurrentVersion: [version, #ParmList] = packedClass;
break;
default :
return false;
}
return true;
}

container pack()
{
;
return [#CurrentVersion,#ParmList];
}